SQL 기초 정리
데이터 분석 업무를 하다 보면 데이터를 가져오기 위해 SQL을 사용할 일이 많다. 그동안 계속 SQL을 공부를 미뤄왔는데 우연한 기회에 좋은 사이트를 발견하여 공부하면서 내용도 같이 정리해본다.
코드 출처
https://mode.com/sql-tutorial/introduction-to-sql/
주석 사용
-- 주석 사용
SELECT * --This comment won't affect the way the code runs
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
/* Here's a comment so long and descriptive that
it could only fit on multiple lines. Fortunately,
it, too, will not affect how this code runs. */
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
모든 데이터 불러오기
-- 모든 데이터 불러오기
SELECT *
FROM tutorial.us_housing_units
-- 특정 Column 만 100개 불러오기
SELECT west, south
FROM tutorial.us_housing_units
LIMIT 100
조건문
-- 조건문
SELECT *
FROM tutorial.us_housing_units
WHERE south > 30
-- 조건문
SELECT *
FROM tutorial.us_housing_units
WHERE month_name != 'January'
연산
-- 연산
SELECT year,
month,
west,
south,
west + south AS south_plus_west
FROM tutorial.us_housing_units
정렬
-- 정렬 (year_rank가 1인 row를 year 기준 오름차순 정렬)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank=1
ORDER BY year ASC
-- 정렬 (year_rank가 10인 row를 year 기준 내림차순 정렬)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank=10
ORDER BY year DESC
-- 여러 열로 정렬 (year_rank가 3이하인 row를 year로 내림차순 정렬 후 각 년도별 year_rank를 오름차순으로 정렬)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank <= 3
ORDER BY year DESC, year_rank
-- ORDER BY 뒤에 DESC(내림차순)를 붙이지 않으면 ASC(오름차순)으로 정렬됨.
-- 여러 열로 정렬 (year_rank가 3이하인 row를 year & year_rank를 오름차순으로 정렬)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank <= 3
ORDER BY year_rank, year DESC
다양한 연산자들
-- LIKE 연산자 (Snoop으로 시작하는 row 반환, 대소문자 구분)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE "group" LIKE 'Snoop%'
-- group column은 SQL 연산자중 group이 있기 때문에 ""로 표시
-- ILIKE 연산자 (대소문자 구분 없음)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE artist ILIKE 'dr_ke'
-- "_"는 개별 문자를 대체(dr과 ke가 포함된 row를 모두 반환)
-- IN 연산자 (year_rank가 1,2,3인 row 반환)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank IN (1, 2, 3)
-- IN 연산자
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE artist IN ('Taylor Swift', 'Usher', 'Ludacris')
-- 문자의 경우 작은따옴표('') 안에 넣고 쉼표로 구분
-- BETWEEN 연산자 (year_rank가 5~10 사이인 row 반환)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank BETWEEN 5 AND 10
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year_rank >= 5 AND year_rank <= 10
-- 위, 아래 동일한 결과를 반환함.
-- IS NULL 연산 (누락된 데이터 반환)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE artist IS NULL
-- AND 연산자 (year가 2012이고 year_rank가 10 이하 이며 group에 feat가 포함된 row 반환)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2012
AND year_rank <= 10
AND "group" ILIKE '%feat%'
-- OR 연산자 (year가 2013이고 group이 macklemore나 timberlake를 포함하는 row 반환)
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND ("group" ILIKE '%macklemore%' OR "group" ILIKE '%timberlake%')
-- NOT 연산자
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND year_rank NOT BETWEEN 2 AND 3
-- NOT 연산자 오류
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND year_rank NOT > 3
-- 위의 코드는 실행 되지 않음. <=를 사용하여 아래와 같이 작성
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND year_rank <= 3
-- IS NOT NULL
SELECT *
FROM tutorial.billboard_top_100_year_end
WHERE year = 2013
AND artist IS NOT NULL
댓글남기기