본문 바로가기
교육, 대외활동, 봉사/엘리스 AI 트랙 2기

[엘리스 AI 트랙 2기] Day 17 - SQL

by g0n1 2021. 7. 14.
728x90
desc 테이블명 -- 각 칼럼과 어떤 데이터 형태인지 알려줌

SELECT (DISTINCT) 칼럼명
FROM 테이블명
WHERE 조건문

조건을 여러개 달기

SELECT *
FROM table
-- WHERE age BETWEEN 20 AND 30;
-- WHERE dept (NOT) IN ('HR','MARKETING','MANAGEMENT')
-- WHERE (first_name = 'KON' or first_name = 'JOHN') and gender='M' and hire_date != '1986-06-26';

LIKE

SELECT *
FROM table
WHERE name LIKE '%word%'

ORDER BY

SELECT *
FROM people
ORDER BY age DESC;

INSERT

INSERT INTO 테이블명(col1, col2, col3) -- 굳이 안 넣을 거면 순서를 잘 맞춰서 넣어줘야함
VALUES(v1, v2, v3)

UPDATE

UPDATE 테이블명
SET col1 = '바꿀 데이터' -- 미래
WHERE 탐색

DELETE

DELETE
FROM table
WHERE 조건;

LIMIT

SELECT *
FROM table
LIMIT 5;

COUNT, SUM, AVG, MAX, MIN

SELECT SUM(col) -- SUM 대신 AVG, MAX, MIN 가능하다
FROM 테이블명

GROUP BY와 HAVING

SELECT MAX(wage)
FROM 테이블
GROUP BY name
HAVING age>25;

JOIN(INNER, LEFT, RIGHT)

SELECT *
FROM A
INNER JOIN B    -- INNER 대신 RIGHT이나 LEFT도 가능
ON A.id = B.id;

서브쿼리

SELECT에서 쓸 수도 있고, WHERE에서 쓸 수도 있다.
서브쿼리 내에서는 ORDER BY를 쓸 수 없다.

한 행, 한 칼럼짜리 값을 반환하는 쿼리를 스칼라 서브쿼리라고 한다.

WHERE에서 쓰는 건 단일 행, 다중 행으로 구분할 수 있다.

-- 평균보다 나이가 많은 사람들의 월급 평균 구하기
SELECT AVG(salary)
FROM table
WHERE age > ( SELECT AVG(age) from table)
SELECT distinct emp_no, (
    SELECT AVG(salary) 
    from salaries as A 
    where A.emp_no = B.emp_no) as avg_salary
from salaries as B;
728x90

댓글