4. SQL 시작하기
4.1 WHERE 문의 기본 형식
SELECT [열] FROM [테이블] WHERE [열] = [조건값]
* 연산자: <, <=, =, >, >=, <>, != (조건과 같지 않은 값)
select * from nasdaq_company where ipo_year <2021
해석: nasdaq_company 테이블에 있는 모든 컬럼을 불러오는데, 그 중에서 ipo_year가 2021년 이하인 것만 불러오겠다
select * from nasdaq_company where ipo_year BETWEEN 2010 AND 2021
해석: nasdaq_company 테이블에 있는 모든 컬럼을 불러오는데, 그 중에서 ipo_year가 2010년과 2021년 사이에 있는 것만 불러오겠다
select * from nasdaq_company where symbol between 'A' and 'B'
해석: nasdaq_company 테이블에 있는 모든 컬럼을 불러오는데, 그 중에서 symbol이 A나 B를 포함하는 값만 불러오겠다
select * from nasdaq_company where symbol not between 'A' and 'B'
해석: nasdaq_company 테이블에 있는 모든 컬럼을 불러오는데, 그 중에서 symbol이 A나 B를 제외한 값만 불러오겠다
select * from nasdaq_company where symbol = 'AAPL' or symbol = 'MSFT' or symbol = 'TSLA'
해석: nasdaq_company 테이블에 있는 모든 컬럼을 불러오는데, 그 중에서 symbol이 'AAPL', 'MSFT' , 'TSLA' 중 어느 하나를 포함하면 다 불러오겠다
select * from nasdaq_company where symbol in ('AAPL', 'MSFT', 'TSLA')
in(col1, col1, col3,...)는 여러 컬럼들에 대한 or 연산과 같은 역할을 한다.
4.2 와일드 카드로 문자 검색
select [열] from [테이블] where [열] like [조건값]
'%A%' --A를 포함한 글자 다 찾기
select * from nasdaq_company where symbol like '%A%'
'A%' --A로 시작하는 글자 다 찾기
select * from nasdaq_company where symbol like 'A%'
'%A' --A로 끝는 글자 다 찾기
select * from nasdaq_company where symbol like '%A'
not like 'A%' --A로 시작하지 않는글자 다 찾기
select * from nasdaq_company where symbol not like 'A%'
'AA%' --AA로 시작하는 글자 다 찾기
select * from nasdaq_company where symbol like 'AA%'
'A_' --A로 시작하면서 어떤 글자든 (_) 1자리 글자가 오고 전체가 2글자인 것 다 찾기
select * from nasdaq_company where symbol like 'A_'
'_A' --A로 끝나서 어떤 글자든 (_) 1자리 글자가 앞오고 전체가 2글자인 것 다 찾기
select * from nasdaq_company where symbol like '_A'
'_A_' --세글자 중 가운데 A인 것 다 찾기
select * from nasdaq_company where symbol like '_A_'
'A_C%' --A로 시작하며 세번째는 글자가 C인 것 다 찾기
select * from nasdaq_company where symbol like 'A_C%'
'A__C' --A로 시작하며 C로 끝나는 4글자 다 찾기
select * from nasdaq_company where symbol like 'A__C'
'AA[c,p]%' --AA로 시작하면서 c 또는 p 글자 다 찾기
select * from nasdaq_company where symbol like 'AA[c,p]%'
'AA[^L]%' --AA로 시작하면서 L을 포함하지 않는 글자 다 찾기
select * from nasdaq_company where symbol like 'AA[^L]%'
like 'A%L_' --A로 시작하면서 어떤 글자도 상관없고 마지막은 L과 어떤 한 글자 찾기
select * from nasdaq_company where symbol like 'A%L_'
[ ]로 문자나 문자 범위를 지정해 문자열 검색하기
[A,B,C]% 또는 [A-C]%
select * from nasdaq_company where symbol like 'A[A-C]'
해석: 첫글자가 A로 시작하면서 다음 글자가 A 또는 B 또는 C로 시작하는 모든 문자열 검색
%[A,B,C] 또는 %[A-C]
select * from nasdaq_company where symbol like '%[A-C]'
해석: 마지막 글자가 A 또는 B 또는 C로 끝나는 모든 문자열 검색
select * from nasdaq_company where symbol like 'A[A-C, G, M-R]'
해석: 첫글자는 A이고 두 번째는 A,B,C 중 하나이며, 세 번째는 G이고, 마지막 네 번째는 M,N,O,P,Q,R 중 하나인 문자열 검색
문자나 문자범위를 제외한 문자열 검색하기
not가 아닌 ^를 사용
select * from nasdaq_company where symbol like 'A[^A, ^B, ^C]'
해석: 첫글자는 A이고 두번째는 A, B, C를 제외한 모든 두 글자 문자열 검색
select * from nasdaq_company where symbol like 'A[^A-C]'
해석: 위와 같음
다양한 방법 응용
A로 시작하고 두번째는 C나 P를 포함하며 세번째는T를 제외하고 마지막에 W로 끝나는 문자열 검색
select * from nasdaq_company where symbol like 'A[C,P][^T]%W'
A로 시작하고 두번째는 A,B,C 중 하나이며, 세 번째는 아무글자, 네 번째는 O를 포함하는 모든 문자열 검색
select * from nasdaq_company where symbol like 'A[A-C]_O%'
null이 들어 있는 데이터 확인
select * from nasdaq_company where sector is null
null이 없는 데이터 확인
select * from nasdaq_company where sector is not null
%가 들어있는 문자열을 찾고 싶을 떄 ESCAPE '#', '!', '&'
WITH CTE(col_1) AS(
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM CTE WHERE col_1 LIKE '%#%%' ESCAPE '#'
참고: 테이블의 열 목록을 확인하는 쿼리
EXEC sp_columns @table_name =N'nasdaq_company', @table_owner = N'dbo'
퀴즈1. nasdaq_company 테이블에서 sector, industry 열만 검색하시오
select sector, industry from nasdaq_company
퀴즈2. nasdaq_company 테이블에서 symbol, close_price 열만 검색하시오
select symbol, close_price from nasdaq_company
요구사항: sector가 "Technology' 또는 'Customer Services'이면서 symbol이 'MSFT', 'AMD', 'AMZN' 검색
select * from nasdaq_company where (sector ='Technology' or sector = 'Consumer Services')
AND symbol in ('MSFT', 'AMD', 'AMZN')
=
select * from nasdaq_company where sector IN('Technology', 'Consumer Services')
AND symbol in ('MSFT', 'AMD', 'AMZN')
퀴즈3. nasdaq_company 테이블에서 ipo_year가 2021년이면서, sector가 FInance이면서
symbol이 AGAC, TIRX, VLATW인 목록을 출력하세요.
select * from nasdaq_company where ipo_year = 2021 and sector = 'Finance'
and symbol in('AGAC', 'TIRX', 'VLATW')
'IT Story > SQL Story' 카테고리의 다른 글
조인(Join): 내부 조인 (0) | 2022.11.28 |
---|---|
SQL 시작하기: CREATE 문 (0) | 2022.11.24 |
SQL 시작하기: GROUP BY 문과 HAVING 문 (0) | 2022.11.24 |
SQL 시작하기: ORDER BY 문 (0) | 2022.11.24 |
SQL (0) | 2022.11.24 |