SELECT
Name AS "이름",
Birthday AS "생일"
FROM Person;
AS 생략 가능
SELECT
name,
Height,
Weight,
round(weight / (height height 0.0001), 1) BMI
FROM Person;
이 자체로는 컬럼을 추가하는 것이 아니고, 이 쿼리문을 실행했을 때만 보여줌
Built-in Mathematical SQL Funcions
https://sqlite.org/lang_mathfunc.html
SELECT문을 미리 만들어서 이름을 붙인 것
CREATE VIEW BirthdayView
AS
SELECT
Name,
Birthday bdate,
substr(Birthday, 1, 4) YYYY,
substr(Birthday, 6, 2) MM,
substr(Birthday, 9, 2) DD
FROM Person;
뷰 보기
SELECT * FROM BirthdayView
count()
모든 행의 개수 세기
SELECT count(*) FROM Person;
특정 컬럼의 데이터 세기
SELECT count(Height) FROM Person;
max()
가장 큰 값 구하기
SELECT max(Height) FROM Person;
min()
가장 작은 값 구하기
SELECT min(Height) FROM Person;
sum()
SELECT sum(Height) FROM Person;
avg()
SELECT avg(Height) FROM Person;
avg() 함수는 평균값을 계산할 떄 NULL을 채워서 계산했을까 뺏을까? -> 빼고 계산함
키(한 아이템 값) 갱신 후 평균 키 구하기
UPDATE Person SET Height='166.8'
WHERE name='혜리'
SELECT avg(Height) FROM Person;
SELECT 음반.제목 앨범명, 음반.연도 발매년도, 노래.제목 곡명
FROM 수록곡
INNER JOIN 음반 ON 수록곡.음반ID = 음반.ID
INNER JOIN 노래 ON 수록곡.노래ID = 노래.ID
2011 년도만 보기
SELECT 음반.제목 앨범명, 음반.연도 발매년도, 노래.제목 곡명
FROM 수록곡
INNER JOIN 음반 ON 수록곡.음반ID = 음반.ID
INNER JOIN 노래 ON 수록곡.노래ID = 노래.ID
WHERE 음반.연도 = 2011;
SELECT 제목 FROM 음반
UNION ALL
SELECT 제목 FROM 노래
UNION ALL을 가운데에 쓰는 이유는, SQL에서 두 개 이상의 SELECT 결과를 “위아래로 붙이기” 위해서
UNION을 쓰려면
UNION → 중복 제거하고 합침
UNION ALL → 중복 그대로 합침
정렬과 중복제거가 굳이 필요하지 않을때에는 UNION ALL이 메모리 속도 측면에서 유리
UNION ALL와 JOIN을 이용하여 조건절을 대체할 수 있음, 이 때 두 케이스의 차이점은:
WHERE는 안 맞으면 아예 제외
JOIN / UNION ALL은 상황에 따라 ‘조건 안 맞아도 나올 수 있음’
아래 예시에서 생일 달을 '3-'으로 해 두어 조건문일때는 아예 나오지 않지만 UNION ALL 과 JOIN을 사용하는 경우에는 나옴
UNION ALL + JOIN:

SELECT Name, bdate, BirthdayView.MM, MonthAbb
FROM BirthdayView, (
SELECT '01' AS MM, 'Jan.' AS MonthAbb
UNION ALL
SELECT '02' AS MM, 'Feb.' AS MonthAbb
UNION ALL
SELECT '03' AS MM, 'Mar.' AS MonthAbb
UNION ALL
SELECT '04' AS MM, 'Apr.' AS MonthAbb
UNION ALL
SELECT '05' AS MM, 'May.' AS MonthAbb
UNION ALL
SELECT '06' AS MM, 'Jun.' AS MonthAbb
UNION ALL
SELECT '07' AS MM, 'Jul.' AS MonthAbb
UNION ALL
SELECT '08' AS MM, 'Aug.' AS MonthAbb
UNION ALL
SELECT '09' AS MM, 'Sep.' AS MonthAbb
UNION ALL
SELECT '10' AS MM, 'Oct.' AS MonthAbb
UNION ALL
SELECT '11' AS MM, 'Nov.' AS MonthAbb
UNION ALL
SELECT '12' AS MM, 'Dec.' AS MonthAbb
) AS Months
WHERE BirthdayView.MM = Months.MM
조건절:

SELECT
Name,
bdate,
MM,
CASE
WHEN MM = '01' THEN 'Jan.'
WHEN MM = '02' THEN 'Feb.'
WHEN MM = '03' THEN 'Mar.'
WHEN MM = '04' THEN 'Apr.'
WHEN MM = '05' THEN 'May.'
WHEN MM = '06' THEN 'Jun.'
WHEN MM = '07' THEN 'Jul.'
WHEN MM = '08' THEN 'Aug.'
WHEN MM = '09' THEN 'Sep.'
WHEN MM = '10' THEN 'Oct.'
WHEN MM = '11' THEN 'Nov.'
WHEN MM = '12' THEN 'Dec.'
END Month
FROM BirthdayView;