SQL | 명령어 | 설명 |
데이터 정의어 (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME TRUNCATE |
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함. |
데이터 제어어 (DCL : Data Control Language) |
GRANT REVOKE |
데이터 보안(계정),무결성,회복 등을 제어하는 명령 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함. |
데이터 조작어 (DML : Data Manipulation Language |
SELECT | 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함 |
INSERT UPDATE DELETE |
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함. | |
트랜잭션 제어어 (TCL : Transaction Control Language) |
COMMIT ROLLBACK SAVEPOINT |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함. |
1. DML 기초
# DML (데이터 조회 및 변형)
show databases;
use examplesdb;
#########################################
# 1. 테이블 생성
#########################################
create table mytable(
id int unsigned auto_increment,
# unsigned: 양수 데이터만 쓰게 한다.
# auto_increment: 기존 id값보다 1이 큰 값을 id에 넣는 함수
name varchar(10) not null unique,
phone varchar(50),
series varchar(50),
# primary key: not null & unique
primary key(id)
);
# 생성된 테이블 확인
show tables;
# 생성된 테이블 자세하게 보기
desc mytable;
#########################################
# 데이터 생성
# 명령어: insert table name(col1, col2...)values(data1...)
########################################
insert mytable
(name, phone, series)
values('name1','1111','11');
# id가 하나씩 증가하는 지 보기
insert mytable
(name, phone, series)
values('name2','2222','22');
insert mytable
(name, phone, series)
values('name3','333','333');
###############################
# 데이터 조회
# select
# col1,
# col2..
# from table
# where 1=1
# and 조건..
###############################
select * from mytable;
select
id
, name
, phone
, series
from mytable
where 1=1
and name = 'name1'
###############################
# 데이터 수정
# update table_name set col_name = '수정할 데이터' where 조건(홍길동만!)
# 데이터를 수정할 때는 꼭 where 조건을 적용해야 함...! 안그러면 싹다 바뀜, 시말서 써야할 지도 모른다 ㅠㅠ
###############################
# 줄맞춤 중요하다.
update mytable # 수정될 테이블명
set phone='1211' # 수정할 데이터
where 1=1 # 여기부터 조건문...where 1=1 and 조건1 and 조건2...
and name = 'name1'
-- and phone = '7777'
-- and series = '11'
;
select * from mytable;
/*WHERE 1=1은 SQL 쿼리에서 조건을 더 편리하게 추가할 수 있도록 해주는 패턴입니다.
* 이는 특히 동적으로 쿼리를 생성해야 할 경우 유용하게 사용됩니다.
* 정상적인 조건을 사용하더라도, WHERE 1=1을 통해 추가적인 조건을 쉽게 관리할 수 있는 장점이 있습니다.*/
###############################
# 데이터 삭제
# delete from table_name where 조건!!
# 데이터를 수정할 때는 꼭 where 조건을 적용해야 함...! 안그러면 싹다 바뀜, 시말서 써야할 지도 모른다 ㅠㅠ
###############################
select * from mytable;
delete from mytable # 이것만 쓰면 데이터 싹다 사라짐
where 1=1
and name = 'name3';
# drop(DB, table 삭제), delete (데이터 삭제)
2. DML 고급
다운받아서 실행하면 샘플 디비 생김
# DML 고급
####################
# 정렬
####################
# 데이터 조회시 기준이 있어야 한다!!
# select 면 무조건 order by 써야 한다.
use classicmodels;
# vip 뽑아보자
select
*
from customers
where 1=1
order by creditLimit desc; # asc (오름차순,default), desc (내림차순)
# 나라별 vip 뽑아보자 , 원하는 컬럼만 보자
SELECT
country
, creditLimit
, customerName
, phone
, city
from customers
where 1=1
order by country asc, creditLimit desc
;
####################
# as, 별칭
####################
SELECT
country
, creditLimit as `부자의 자산크기`
, customerName as `부자님의 성함`
, phone
, city
from customers
where 1=1
order by country asc, creditLimit desc
;
####################
# 조건
####################
SELECT
country
, creditLimit
, customerName
, phone
, city
from customers
where 1=1
-- and country = 'Australia'
and (country = 'USA' or country = 'Australia') # or 조건엔 항상 괄호치기
-- and creditLimit > 50000
-- and creditLimit <= 100000
and 50000 < creditLimit <=100000
and city like '%C%' # N%: N뒤에 all, 모든 것
order by city asc, creditLimit desc
;
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
10일차 [ github (clone, branch,merge) ] (0) | 2025.01.20 |
---|---|
[플레이데이터 SK네트웍스 Family AI캠프 10기] 2주차 회고 (0) | 2025.01.17 |
9일차 [SQL (DDL,DCL)] (0) | 2025.01.17 |
8일차 [ DB(RDB,DDL) ] (0) | 2025.01.16 |
7일차 [ 파이썬 기초 (상속,표준 라이브러리)] (0) | 2025.01.15 |