SQL vs NoSQL
로컬DB vs 클라우드DB
기본키(primary key) vs 외래키(foreign key)
SELECT
EX)
select * from albums;
# albums 테이블에서 모든 열 불러오기
SELECT Name || "음악" from genres;
SELECT DISTINCT Country from customers ;
SELECT Milliseconds /1000 as Seconds from tracks ;
함수
입력 X값에 대한 결과 Y값을 반환하는 기능을 하나의 묶음으로 선언
문자함수
숫자함수
CASE 함수 : 조건부로 값을 반환하거나 특정 작업을 수행하기 위해 사용되는 함수
CASE
WHEN condition 1 THEN result 1
WHEN condition 2 THEN result 2
...
ELSE RESULT
END
1.tracks 테이블에서 곡의 길이(Millisecinds)를 반올림 한 다음 분 단위로 곡의 길이를 표시
SELECT ROUND(Milliseconds)/60000 from tracks ;
Select Total,
Case
when Total <=10 Then "낮음"
When (Total >10 and Total <=50) Then "보통"
When Total >50 Then "높음"
End as "분류"
from invoices
WHERE
EX)
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary>=50000;
# 실행 순서 : 1. From 2.Where 3.Select 순
Select *
from customers
where Country ="USA"
select *
from employees
where HireDate < "2003-01-01"
Select *
from albums
Where Title like '%LOVE%'
GROUP BY & HAVING
GROUP BY : 특정 열의 값에 따라 그룹화한다. 집계함수(SUM, COUNT, AVG 등)과 함께 쓰인다.
HAVING : GROUP BY와 함께 조건을 지정하는 데 사용
EX)
SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
# 실행 순서 : 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 순
cf) 집계 함수 :집계 함수는 여러 행으로부터 하나의 결괏값을 반환하는 함수이다. SELECT 구문에서 사용된다. WHERE에서는 집계 함수를 사용할 수 없는 반면 HAVING은 집계 함수와 함께 사용 가능하다는 장점이 있다.
• COUNT : 각 그룹에서의 비어있지 않은 값의 개수를 반환합니다.
• SUM : 각 그룹에서의 합을 계산합니다.
• AVG 또는 MEAN : 각 그룹에서의 평균을 계산합니다.
• MEDIAN : 각 그룹에서의 중앙값을 계산합니다.
• MIN : 각 그룹에서의 최소값을 찾습니다.
• MAX : 각 그룹에서의 최대값을 찾습니다.
• STDDEV 또는 STD : 각 그룹에서의 표준 편차를 계산합니다.
• VAR 또는 VARIANCE: 각 그룹에서의 분산을 계산합니다.
• FIRST : 각 그룹에서 첫 번째 값을 반환합니다.
• LAST : 각 그룹에서 마지막 값을 반환합니다
SELECT GenreId , COUNT(TrackId)
FROM tracks
group by GenreId
HAVING COUNT(TrackId)>=100
SELECT CustomerId, sum(Total)
FROM invoices
group by CustomerId
HAVING Sum(Total)>=40
ORDER BY
SELECT employee_id, first_name, last_name
FROM employees
ORDER BY last_name ASC, first_name ASC;
SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
ORDER BY 2;
# 실행 순서 : 1. from 2. where 3. group by 4. having 5. select 6. order by
cf) 순서 정리
실행 순서 :
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
작성 순서 :
SELECT → FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY
SELECT Name
FROM artists
ORDER BY Name
SELECT Milliseconds, Name
FROM tracks
order by Milliseconds
SELECT Total, InvoiceId
FROM invoices
order by Total DESC
JOIN
EX)
SELECT column1, column2, ...
FROM table1
JOIN table2 ON condition;
SELECT customers.FirstName ,customers.LastName ,invoices.total
FROM customers
full outer join invoices
on customers.CustomerId = invoices.CustomerId