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값 불가
);

Table이 만들어졌고, 컬럼과 제약조건이 생성되었다.


Alter

ALTER TABLE [테이블 이름] [명령어] [해당 컬럼] [추가 명령어];

 

여기서 명령어는 다음과 같다.

  • ADD : 컬럼 추가
  • DROP : 컬럼 삭제
  • RENAME : 컬럼 이름 변경
  • MODIFY : 컬럼 제약 조건 수정
alter table user add profile_image varchar(100) default 'default.png'; #profile_image라는 컬럼 추가

alter add 후 새로운 컬럼 추가

alter table user drop profile_image;          #profile_image 컬럼 삭제

alter drop 후 데이터 컬럼 삭제

alter table user rename column name to nickname;   # name이라는 컬럼 이름을 nickname으로 변경

alter rename 후 name 컬럼이 nickname 컬럼으로 변경
alter modify 변경 전

alter table user modify nickname varchar(50);   # nickname이라는 컬럼 20자 제약 조건을 50자로 변경

alter modify 후 제약 조건 변경 완료


Drop

drop table user; # user라는 테이블을 삭제

Drop table 후 테이블이 삭제됨

drop database dbex; # 데이터베이스 삭제

Drop database 후 데이터베이스 자체가 삭제됨


Select-From

select문은 데이터베이스에서 데이터를 조회할 때, 사용한다.

대부분의 성능이슈는 데이터를 조회할 때 발생한다.

따라서 select 쿼리문이 성능 최적화가 가장 많이 요구된다.

select 작성 방법은 다음과 같다.

select [조회할 컬럼1], [조회할 컬럼2], ... [조회할 마지막 컬럼]
from [조회할 테이블]
where [조회 조건];

select *
from [조회할 테이블]
where [조회 조건];

이때, *은 모든 컬럼을 의미한다.

또한 where은 조회 조건을 의미하지만, 아예 작성을 안하면 테이블에 존재하는 모든 튜플을 조회한다.

select * from payment; # *은 모든것을 의미한다.

select *로 모든 컬럼 조회
select 컬럼 및 where 조건넣은 조회

Where

where은 조회 조건을 달아서 특정 데이터만 읽어오고 싶을 때 사용한다.

이때, 여러개의 조건을 동시에 달기 위해서 AND, LIKE, IN같은 문법이 추가적으로 사용한다.

And

여러개의 조건을 동시에 사용할 때 사용한다.

select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건] and [튜플 조건];

where의 and 조건으로 조회

Like

문자열 중 일부만 알고 있을 때 사용한다.

select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [비슷한 문자열%]; # 앞 문장은 완전히 동일하고 뒷 문장은 달라도 된다.
										# %는 *를 의미한다.

select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [%비슷한 문자열]; # 뒷 문장은 완전히 동일하고 앞 문장은 달라도 된다.

select [조회할 컬럼]
from [테이블 이름]
where [문자열 컬럼] like [%비슷한 문자열%]; # 앞 문장, 뒷 문장은 달라도 되고, 중간 문장은 같다.

LIKE로 문자열 조회

In

문법 안에 배열을 통해서 조회하고 싶을 때 사용한다.

select [조회할 컬럼]
from [테이블 이름]
where [조회할 컬럼] in [튜플 조건들]

where의 In 문법으로 배열 조건으로 조회

Join

2개 이상의 테이블을 동시에 조회할 때 사용한다.

Inner Join

2개의 테이블 중 조건에 맞는 교집합만 데이터로 인식한다.(만약 조건에 맞지 않는다면 데이터 조회 자체가 안된다.)

select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
inner join [테이블 이름] on [join 조건];

Inner Join 조회

left Join

2개의 테이블 중 기준 테이블과 

select [조회할 컬럼]
from [테이블 이름]   # 기준 테이블이 들어가야 한다.
where [튜플 조건]
left join [테이블 이름] on [join 조건];

Left Join 조회

as

테이블 이름이 너무 길 때, 간단한 별명으로 설정하고 코드를 작성할 때 사용한다.

select [조회할 컬럼]
from [테이블 이름] as [별명]
where [튜플 조건];

as로 SQL 읽기 편하게 작성

Order by

데이터를 정렬시킬 때 사용한다. (오름차순 : asc, 내림차순 : desc)

select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건]
order by [기준 컬럼] [내림차순, 오름차순];

Order by로 ID순으로 정렬

is null

데이터가 null 값인지 확인하기 위해서 사용한다.

select [조회할 컬럼]
from [테이블 이름]
where [튜플 조건] is null;

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 [변경할 튜플 조건]

Update 전 상태
Update 후 상태


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

https://0and24.tistory.com/50

 

[SQL] Join vs SubQuery: 언제, 왜, 어떻게 선택할까?

며칠 전, 다대다 면접에서 면접관 한 분이 저에게 물었습니다."혹시 조인과 서브쿼리 중 어떤 것이 성능이 더 좋나요?"순간 잠시 생각을 한 뒤 이렇게 대답했습니다:"많은 양의 데이터를 다루지

0and24.tistory.com

 

혹시라도 틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다!!

+ Recent posts