SQL(Structured Query Language)문법 종류
- DDL(Data Definition Laguge) : Table을 생성하거나 변경하거나, 삭제하는 명령어를 말한다.(Create, Alter, Drop)
- DML(Data Manipulation Laguage) : 실제 데이터를 조회하거나 삽입, 삭제, 수정하는 명령어를 말한다.(Select, Insert, Update, Delete)
- DCL(Data Control Laguage) : 데이터베이스에 접근하고 객체들을 사용하도록 권한을 제공하고 회수하는 명령어를 말한다.(Grant, Revoke)
쿼리(Query)
Create
CREATE DATABASE [데이터베이스 이름]; #데이터베이스 생성
CREATE TABLE [테이블 이름] (
[속성 이름] [타입]
[속성 이름] [타입]
); #테이블 생성
위처럼 작성하면 된다. 예시는 다음과 같다.
use user; # 데이터베이스 선택
create table user(
id int primary key auto_increment, # 양의 정수, 기본키 지정, 자동 증가 옵션
email varchar(50) not null unique key, # 50자 글자, null값 불가
name varchar(20) default '기본 이름', # 20자 글자, null이라면 '기본 이름'을 자동으로 추가함
password varchar(200) not null # 200자 글자, null값 불가
);
Alter
ALTER TABLE [테이블 이름] [명령어] [해당 컬럼] [추가 명령어];
여기서 명령어는 다음과 같다.
- ADD : 컬럼 추가
- DROP : 컬럼 삭제
- RENAME : 컬럼 이름 변경
- MODIFY : 컬럼 제약 조건 수정
alter table user add profile_image varchar(100) default 'default.png'; #profile_image라는 컬럼 추가
alter table user drop profile_image; #profile_image 컬럼 삭제
alter table user rename column name to nickname; # name이라는 컬럼 이름을 nickname으로 변경
alter table user modify nickname varchar(50); # nickname이라는 컬럼 20자 제약 조건을 50자로 변경
Drop
drop table user; # user라는 테이블을 삭제
drop database dbex; # 데이터베이스 삭제
Select-From
select문은 데이터베이스에서 데이터를 조회할 때, 사용한다.
대부분의 성능이슈는 데이터를 조회할 때 발생한다.
따라서 select 쿼리문이 성능 최적화가 가장 많이 요구된다.
select 작성 방법은 다음과 같다.
select [조회할 컬럼1], [조회할 컬럼2], ... [조회할 마지막 컬럼]
from [조회할 테이블]
where [조회 조건];
select *
from [조회할 테이블]
where [조회 조건];
이때, *은 모든 컬럼을 의미한다.
또한 where은 조회 조건을 의미하지만, 아예 작성을 안하면 테이블에 존재하는 모든 튜플을 조회한다.
select * from payment; # *은 모든것을 의미한다.
Where
where은 조회 조건을 달아서 특정 데이터만 읽어오고 싶을 때 사용한다.
이때, 여러개의 조건을 동시에 달기 위해서 AND, LIKE, IN같은 문법이 추가적으로 사용한다.
And
여러개의 조건을 동시에 사용할 때 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건] and [튜플 조건];
Like
문자열 중 일부만 알고 있을 때 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [비슷한 문자열%]; # 앞 문장은 완전히 동일하고 뒷 문장은 달라도 된다.
# %는 *를 의미한다.
select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [%비슷한 문자열]; # 뒷 문장은 완전히 동일하고 앞 문장은 달라도 된다.
select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [%비슷한 문자열%]; # 앞 문장, 뒷 문장은 달라도 되고, 중간 문장은 같다.
In
문법 안에 배열을 통해서 조회하고 싶을 때 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [조회할 컬럼] in [튜플 조건들]
Join
2개 이상의 테이블을 동시에 조회할 때 사용한다.
Inner Join
2개의 테이블 중 조건에 맞는 교집합만 데이터로 인식한다.(만약 조건에 맞지 않는다면 데이터 조회 자체가 안된다.)
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
inner join [테이블 이름] on [join 조건];
left Join
2개의 테이블 중 기준 테이블과
select [조회할 컬럼]
from [테이블 이름] # 기준 테이블이 들어가야 한다.
where [튜플 조건]
left join [테이블 이름] on [join 조건];
as
테이블 이름이 너무 길 때, 간단한 별명으로 설정하고 코드를 작성할 때 사용한다.
select [조회할 컬럼]
from [테이블 이름] as [별명]
where [튜플 조건];
Order by
데이터를 정렬시킬 때 사용한다. (오름차순 : asc, 내림차순 : desc)
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
order by [기준 컬럼] [내림차순, 오름차순];
is null
데이터가 null 값인지 확인하기 위해서 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건] is null;
group by
여러개의 데이터 중 하나의 데이터를 기준으로 잡을 때 사용한다.(대표적으로 나라별 사람을 세고 싶을 때, 나라를 기준으로 데이터를 정렬해야 한다. 이럴때 사용한다.)
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
inner join [테이블 이름] on [join 조건]
group by [기준 컬럼];
having
Group By에서 조건을 추가적으로 더 걸고 싶을 때 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
inner join [테이블 이름] on [join 조건]
group by [기준 컬럼]
having [튜플 조건];
Limit
조회한 데이터 중 몇개만 보고 싶을 때 사용한다.
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
limit [개수]
select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
limit [offset], [개수]
이때, offset은 앞에서 몇개를 제외한다는 것을 의미한다. (예를들어 10, 10이면 위에서 11번째부터 20번째 데이터만 읽어온다.)
Distinct
중복되는 데이터를 제거해서 보고 싶을 때 사용한다.
select distinct [조회할 컬럼 이름]
from [테이블 이름]
where [조회할 튜플 조건]
서브 쿼리(SubQuery)
복잡한 쿼리를 작성할 때 사용한다.
Join으로 쿼리를 작성하기 어려운 경우에 많이 사용한다.
둘의 성능 차이는 상황마다 다르지만 이 블로그에 따르면 다음과 같다.
- JOIN: 여러 테이블의 데이터를 결합해야 한다면 기본적으로 선택.
- 서브쿼리: 특정 조건을 필터링하거나 집계 값을 활용할 때 적합.
select [조회할 컬럼 이름]
from [테이블 이름]
where ([select [조회할 컬럼 이름]
from [테이블 이름]
where [조회할 튜플 조건]
);
Update
데이터를 수정할 때 사용한다.
update [테이블 이름] set [변경할 컬럼] = [변경 값] where [변경할 튜플 조건]
Insert
데이터를 새롭게 추가할 때 사용한다.
INSERT INTO [테이블 이름] [(테이블 조건1, 테이블 조건 2, ..., 테이블 조건 n)]
VALUE [데이터 1, 데이터 2, ..., 데이터 n)];
INSERT INTO [테이블 이름] [(테이블 조건1, 테이블 조건 2, ..., 테이블 조건 n)]
VALUES
[데이터 1, 데이터 2, ..., 데이터 n)],
[데이터 1, 데이터 2, ..., 데이터 n)],
[데이터 1, 데이터 2, ..., 데이터 n)],
[데이터 1, 데이터 2, ..., 데이터 n)],
[데이터 1, 데이터 2, ..., 데이터 n)];
Delete
데이터를 삭제할 때 사용한다.
DELETE FROM [테이블 이름] WHERE [튜플 조건];
참고 문헌
https://brownbears.tistory.com/180
[DB] DDL, DML, DCL 이란?
명령어 종류 명령어 설명 데이터 조작어(DML : Data Manipulation LanguageSELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함INSERTUPDATEDELETE 데
brownbears.tistory.com
[SQL] Join vs SubQuery: 언제, 왜, 어떻게 선택할까?
며칠 전, 다대다 면접에서 면접관 한 분이 저에게 물었습니다."혹시 조인과 서브쿼리 중 어떤 것이 성능이 더 좋나요?"순간 잠시 생각을 한 뒤 이렇게 대답했습니다:"많은 양의 데이터를 다루지
0and24.tistory.com
혹시라도 틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다!!
'CS(Computer Science) > Database' 카테고리의 다른 글
[Database] DBMS 성능 테스트(JMeter + Prometheus + Grafana) (2) | 2025.06.11 |
---|---|
[Database] Transaction이란? (1) | 2025.06.10 |
[Database] 정규화(Normalization)란? (0) | 2025.06.08 |
[Database] 데이터 모델링(Data Modeling)이란? (1) | 2025.06.08 |
[Database] 데이터베이스(Database)란? (4) | 2025.06.07 |