STUDY_SEONMIN

DAY33 - SQL연습(CONCAT, LIKE, IN, LIMIT) 본문

EDUCATION/DSS Online 6기

DAY33 - SQL연습(CONCAT, LIKE, IN, LIMIT)

Kululu_ 2021. 3. 4. 19:32

 

1. CONCAT

- 여러 컬럼을 합쳐(이어붙여) 새로운 컬럼을 만들어 보여주는 기능을 합니다.

- 꼭 컬럼끼리 붙이는 것이 아니라 원하는 문자열, 숫자 등도 붙일 수 있습니다.

 

SELECT CONCAT(~)
FROM table_name

 

현재 User라는 테이블이 이렇게 있습니다. 여기서 name과 age를 붙여서 name(age)의 형태로 새로운 컬럼을 보여주는 것을 CONCAT으로 해보겠습니다.

 

SELECT *,CONCAT(name,'(',age,')') as 'name(age)'
FROM User

 

2. LIKE

- 특정 문자열이 들어간 데이터를 조회할 때 사용합니다.

- '특정 문자열이 들어간다'는 것도 조건이기 때문에 WHERE와 함께 사용합니다.

SELECT ~
FROM ~
WHERE ~ LIKE ~

 

User 테이블에서 이름이 'j'로 시작하는 사람들의 데이터만 조회해보겠습니다.

 

SELECT *
FROM User
WHERE name LIKE 'j%'

%는 임의의 문자를 뜻하는 것으로 j로 시작하고 그 뒤에는 0개 이상의 아무 문자가 오는 데이터를 의미하게 됩니다.

 

LIKE의 반대 개념으로는 NOT LIKE 있습니다. 

NOT LIKE는 특정 문자열이 들어가지 않은 데이터를 조회해줍니다.

 

그럼 User 테이블에서 gmail을 쓰지 않는 사람들만 조회해보겠습니다.

SELECT *
FROM User
WHERE email NOT LIKE '%@gmail%'

 

 

3. IN

- 하나의 컬럼에 대해 여러 조건 중 하나만 만족해도 데이터를 뽑아오고 싶을 때 사용할 수 있습니다.

- 예를들어 이름이 'jun'인 사람과 'jane'인 사람을 모두 조회하고 싶으면 name IN ('jun','jane')

- 다만 단점으로는 IN 에 들어가는 조건이 실제 데이터와 완벽히 일치해야 한다는 점입니다. ( LIKE에서 사용했던 것처럼 %f를 이용할 수는 없습니다 )

 

SELECT ~
FROM ~
WHERE ~ IN (~)

 

User 테이블에서 amy와 tom, jun의 데이터를 조회해보겠습니다.

 

만약 IN을 사용하지 않는다면

SELECT *
FROM User
WHERE name LIKE 'amy' or name LIKE 'tom' or name LIKE 'jun'

 

이렇게 조회를 해야하지만 IN을 사용해 쿼리문을 간단하게 만들 수 있습니다.

SELECT *
FROM User
WHERE name IN ('amy', 'tom', 'jun')

 

4. LIMIT

- 위에서부터 특정 개수만큼의 데이터만 조회하거나 중간의 특정 범위(순서상)의 데이터를 조회할 때 사용 가능합니다.

SELECT ~
FROM ~
LIMIT N

하나의 숫자만 LIMIT에 사용하면 위에서부터 N개의 데이터를 조회합니다.

SELECT *
FROM User
LIMIT 3

 

 

만약 N번째 부터 N+i번째까지의 데이터를 조회하고 싶다면 

SELECT ~
FROM ~
LIMIT N-1, i+1

 

N-1개를 건너뛰고 N번째포함 i+1개를 보여준다는 뜻이기 때문에 N~N+i 번째 데이터를 조회할 수 있게 됩니다.

 

2~5번 데이터를 조회해보겠습니다.

SELECT *
FROM User
LIMIT 1, 4

Comments