본문 바로가기
🛠️Skill/SQL

[SQL문법] SELECT,WHERE절 / AND,OR,IN,LIKE / DML

by Istj_eff 2022. 10. 5.

1. SELECT

1-1. 테이블의 특정 컬럼 조회

💡 SELECT 컬럼이름1, 컬럼이름2 (순서 상관 없음) FROM 테이블 이름 ;

 ;는 쿼리가 끝났다는 뜻

 

1-2. 중복 제거된 컬럼으로 조회

💡 SELECT DISTICNT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 ;

 

1-3. 컬럼에 별명을 붙여서 조회 ( 컬럼이름 변경해서 조회)

💡 SELECT 컬럼이름1 (AS) 별명1, 컬럼이름2 (혹은 공백) 별명2 FROM 테이블 이름 ;

 

1-4. 결과 행 개수를 제한하여 조회

💡 SELECT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 LIMIT 행 개수

 

▶SQL 예제

# 중복제거해서 region 데이터 불러옴
SELECT distinct region 
FROM STOCK_INFO;

# 컬럼 2개안에서 중복제거하고 데이터 가져오기
SELECT distinct region, indcode 
FROM STOCK_INFO;

# as(공백)로 컬럼명 변경해서 가져오기 (컬럼 별명 설정)
SELECT region 지역, mkt_capitalization_usd AS "시가총액 USD" # 별명안에 공백넣고 싶으면 "" 사용
FROM STOCK_INFO;

# 데이터 행(ROW) 개수 제한
SELECT *
FROM STOCK_INFO
LIMIT 10;

 


 

2. WHERE

💡 SELECT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 WHERE 조건1 ;

 

▶WHERE 절 예제

SELECT *
FROM STOCK_INFO
WHERE MKT_CAPITALIZATION_USD > 1000000;
SELECT *
FROM STOCK_INFO
WHERE REGION = 'KR'; # 문자열은 ''으로 꼭 감싸줘야함

SELECT *
FROM ETF_INFO
WHERE ASSET_TYPE = 'Equity';
-- **BETWEEN** 지정된 두 값 사이의 데이터 가져오기
SELECT *
FROM STOCK_INFO
WHERE MKT_CAPITALIZATION_USD BETWEEN 1000000 AND 2000000;

 

 

2-1. 조건 AND / OR

💡 SELECT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 WHERE 조건1 AND(OR) 조건2 ;

▶AND 예제

# 조건 AND 
SELECT * 
FROM STOCK_INFO 
WHERE REGION = 'KR' 
AND MKT_CAPITALIZATION_USD < 5000;

 

▶OR 예제

# 예제1 
SELECT * 
FROM STOCK_INFO 
WHERE REGION = 'US' OR REGION = 'KR';

# 예제2 
SELECT * 
FROM STOCK_INFO 
WHERE REGION = 'US' OR MKT_CAPITALIZATION_USD < 4000;

 

 

 

2-2. 조건 (NOT) IN : 조건1 OR 조건2에 만족하는건 다 불러오기

 

▶NOT IN 예제

 💡 SELECT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 WHERE 비교컬럼이름 (NOT)IN (조건1, 조건2) ;
# OR로 조건을 넣고 싶은데 몇십개, 몇백개라면? -> (NOT) IN 사용하자! 
SELECT * 
FROM STOCK_INFO 
WHERE REGION = 'US' 
	OR REGION = 'KR' 
	OR REGION = 'CH' ; 


# IN 사용한 쿼리 
SELECT * 
FROM STOCK_INFO 
WHERE REGION IN ('KR','US','CN'); -- REGOION 에 KR,US,CH 하나라도 들어있으면 가져와라 


# NOT IN 사용한 쿼리 
SELECT * 
FROM STOCK_INFO 
WHERE REGION NOT IN ('KR','US','CN'); -- REGOION 에 KR,US,CH 하나라도 없는 데이터 가져와

 

 

2-3. LIKE : 특정한 패턴을 가지는 값 조회

 💡 SELECT 컬럼이름1, 컬럼이름2 FROM 테이블 이름 WHERE 컬럼이름 LIKE 패턴 ;
Like  설명
a% ‘a’로 시작
%a ‘a’로 끝남
%To ‘To’가 포함됨
_t% 두번째 글자가 ‘t’임
a_%_% ‘a’로 시작하고 글자수가 3개 이상
T%a ‘T’로 시작하고 ‘a’로 끝남

 

▶LIKE 예제

# '%A%' 가장 많이 쓰임
SELECT * 
FROM STOCK_INFO
WHERE NAME LIKE '%SOFTBANK%' ; -- NAME컬럼에 SOFTBANK가 들어있는 데이터 가져와

# '%A' 
SELECT * 
FROM STOCK_INFO 
WHERE NAME LIKE '%A' ; -- A로 끝나는 데이터 가져와

SELECT * 
FROM STOCK_INFO 
WHERE NAME LIKE '_M%' ; -- 두번째 글짜가 M인 데이터 가져와

SELECT * 
FROM STOCK_INFO 
WHERE NAME LIKE 'A_%_%' ; -- A로 시작하면서 글자가 3개 이상인 데이터

SELECT * 
FROM STOCK_INFO
WHERE NAME LIKE 'T%A' ; -- T로 시작하고 A로 끝나는 데이터

 

2-4. DML에 WHERE절 사용

UPDATE table1 SET sales = sales + 1000 WHERE ID = 2;

DELETE FROM table1 WWHERE ID = 2;

 

문제

1) Financial_Info 테이블에서 Total Assets의 값이 10,000,000 이상인 값만 조회해보세요.
SELECT *
FROM FINANCIAL_INFO
WHERE NAME_ = 'TOTAL ASSETS' 
	    AND
      VALUE_ > 10000000 ;

 

2) Fiancial_Info 테이블에서 Income과 관련된 항목 중 값이 5,000 ~ 10,000 사이인 데이터를 조회해보세요.
SELECT *
FROM FINANCIAL_INFO
WHERE NAME_ LIKE '%INCOME%'
	AND
	VALUE_ BETWEEN 5000 AND 10000 ;

 

 

 

 

댓글