1. SELECT
SELECT * #컬럼
FROM sample #테이블명
LIMIT 10 #몇 행
테이블에서 데이터 추출
* 아스타 -> 모든 항목, 혹은 특정 컬럼명(ex price) 선택 가능
2. ORDER BY
오름차순 정렬
SELECT *
FROM product_list
ORDER BY price #가격 열 오름차순
LIMIT 100
내림차순 정렬
SELECT *
FROM product_list
ORDER BY price DESC #가격 열 내림차순
LIMIT 100
여러 조건 정렬
SELECT *
FROM product_list
ORDER BY year, month, day
LIMIT 100
3. count
테이블 행의 개수
SELECT COUNT(*)
FROM sales_list
4. GROUP BY
SELECT year, COUNT(*)
FROM sales_list
GROUP BY year
연도별로 데이터의 개수가 뽑힐 것
SELECT year
FROM sales_list
GROUP BY year
중복이 제거된 연도들만 나옴. (중복 제거를 위해서도 사용 됨)
5. WHERE
SELECT *
FROM student_list
WHERE gender = 'MALE'
limit 100
성별이 'MALE'인 데이터만 추출됨.
SELECT *
FROM student_list
WHERE gender = 'FEMALE'
AND height = 160
LIMIT = 100
AND를 통해 조건을 추가해줌.
SELECT *
FROM student_list
WHERE gender = 'FEMALE'
OR height = 160
LIMIT = 100
성별이 여성이거나, 키가 160인 데이터를 추출함
6. CASE (WHEN, THEN, ELSE, END)
SELECT price, year,
CASE
WHEN price <= 1000 THEN '1000원 이하'
WHEN price <= 3000 THEN '3000원 이하'
ELSE '3000원 초과'
END AS '기준'
FROM sales_list
LIMIT 100
'기준'이라는 컬럼이 생기고, 조건에 맞는 데이터(THEN 이후)가 생긴다.
7. LIKE NOT LIKE
SELECT *
FROM student_list
WHERE name LIKE '김%'
LIMIT 100
이름이 '김' 으로 시작하는 학생들의 데이터
SELECT *
FROM student_list
WHERE name LIKE '%철%'
LIMIT 100
이름 중간에 '철'이 들어가는 학생들의 데이터 (철의 앞 뒤로는 어떤 글자가 와도 상관 없다. ex. 이철상, 김철호)
SELECT *
FROM student_list
WHERE name NOT LIKE '홍%'
LIMIT 100
'홍'으로 시작하는 이름을 제외한 학생들의 데이터
8. SUB QUERY
SELECT *
FROM (
SELECT location, COUNT(*) as cnt
FROM property_list
GROUP BY location
) a
WHERE cnt > 100
SELECT a.*,
case when cnt <= 200 then '200개 이하' else '200개 초과' end
FROM (
SELECT location, COUNT(*) cnt #AS 생략
FROM property_list
GROUP BY location
) a
9. INNER JOIN
두 개 이상의 테이블에서 데이터를 결합하여 새로운 결과 집합을 생성하는 데 사용.
INNER JOIN을 사용하면 두 테이블 간의 공통 열 값을 기준으로 레코드를 결합.
(양 테이블에 데이터가 존재하는 것만 나옴)
SELECT a.name, a.size, b.price
FROM property_list a, area_info b
WHERE a.area_info = b.area_info
LIMIT 5
두 테이블을 결합, 여기서 조인키는 area_info
SELECT *
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;
이 커리문에서 조인키는 customer_id
10. OUTER JOIN
- LEFT OUTER JOIN ( LEFT JOIN)
왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블과 일치하는 행이 있는 경우 해당 행을 포함.
오른쪽 테이블의 일부 행이 일치하지 않는 경우에도 왼쪽 테이블의 모든 행을 유지함. (NULL로 표시) - RIGHT OUTER JOIN (RIGHT JOIN)
LEFT OUTER JOIN의 반대. 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블과 일치하는 행이 있는 경우 해당 행을 포함.
왼쪽 테이블의 일부 행이 일치하지 않는 경우에도 오른쪽 테이블의 모든 행을 유지함. - FULL OUTER JOIN (FULL JOIN): 양쪽 테이블의 모든 행을 반환하며, 일치하는 행이 있는 경우 해당 행을 포함합니다. 어느 한 쪽 테이블에만 존재하는 행도 결과에 포함됨.
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id
department_id를 키로, employees 테이블의 데이터를 전부 표시함.
만약 어떤 직원이 부서에 소속되지 않았다면, 해당 직원의 department_name은 NULL로 표시됨.
11. SUM, MIN, MAX, AVG
SELECT year
,SUM(price)
,MIN(price)
,MAX(price)
,AVG(price)
FROM property_list
GROUP BY year
부동산 리스트에서 연도별로 해당 연도의 가격의 총합, 최솟값, 최댓값, 평균을 알 수 있다.