SELECT
- 찾을 컬럼
- COUNT와 같은 함수를 사용할 때는 AS로 컬럼 이름을 정할 수 있음
ORDER BY
- order by 뒤에 우선순위가 있는 열을 적음
- 다중정렬 : 순서대로 정렬의 우선순위를 의미하며 2가지 이상의 필드를 조합하여 정렬할 수 있음
-- NAME 오름차순, 같을 경우 DATE 내림차순으로
ORDER BY NAME, DATE DESC
GROUP BY
- 집계함수와 함께 사용되어 결과를 지정한 컬럼에 따라 그룹으로 묶을 수 있음
-- 각 도시에 사는 사람이 몇명인지 계산하여 출력
SELECT COUNT(id)
FROM customers
GROUP BY country;
LIMIT
- 결과 개수 제한
-- NAME 순으로 오름차순 정렬된 테이블 가장 위에서부터 2개의 레코드 결과만 가져옴
ORDER BY NAME LIMIT 2
DISTINCT
- 중복제거
-- 중복제거 된 NAME 개수
SELECT COUNT(DISTINCT NAME)
IF
- SELECT, WHERE 절에서 사용
- IF(조건, 해당할 때, 해당하지 않을 때) 의 형식
-- result 컬럼에 '크다' 출력
SELECT IF(10 > 5, '크다', '작다') AS result;
LIKE
- WHERE 절과 함께 특정 패턴을 검색할 때 사용
- %는 모든 문자열, 모든 길이를 의미
- _는 한 글자를 의미
SELECT *
FROM Student
WHERE Student_ID like 'a%';
LIKE 'a%' -- a로 시작되는 모든 것
LIKE 'a_%_%' -- a로 시작되고 최소 3이상의 길이를 가진 것
LIKE '_a%' -- 두번째 자리에 a가 들어가는 모든 것
IN
- WHERE 절 내 여러 값을 설정하고자 할 때 사용
- 연산 속도가 상대적으로 빠름
- or 연산과 유사한 효과
-- Customers 중 country가 UK이거나 KOREA인 것 모두 출력
SELECT *
FROM Customers
WHERE country IN ('UK', 'Korea');
BETWEEN
- WHERE 절 내 검색 조건으로 범위를 지정하고자 할 때 사용
- BETWEEN과 AND 사이에 들어가는 값은 ~ 이상 ~ 이하 범위
-- 가격이 10 이상 20 이하인 모든 상품 출력
SELECT *
FROM products
WHERE price BETWEEN 10 AND 20;
-- 응용
SELECT *
FROM products
WHERE (price BETWEEN 10 and 20) AND NOT id IN(2,3);
IFNULL
- 결과 중 컬럼값이 NULL인 경우를 처리
-- NAME값이 NULL이면 'NO NAME'으로 변경
SELECT IFNULL(NAME, 'NO NAME')
...
UNION
- SELECT의 컬럼 리스트를 기준으로 두 개 이상의 질의 결과를 하나의 테이블로 합치고자 할 때 사용
- 기본적으로 중복값을 제거
- 중복값을 포함하고 싶은 경우 UNION ALL을 사용
SELECT *
FROM customers
UNION
SELECT city FROM orders
ORDER BY city;
INNER JOIN
- 교집합
-- test1 과 test2 의 number 컬럼을 서로 비교하여
-- 중첩되는 값이 존재하면 test1.number 컬럼의 중첩 값만 출력
SELECT test1.number
FROM test1
JOIN test2
ON test1.number = test2.number;
- 동일 테이블의 조인 결과를 구할수도 있음
-- 우유와 요거트를 동시에 구입한 장바구니의 아이디 출력
SELECT DISTINCT c.cart_id
FROM cart_products c
INNER JOIN cart_products p
ON (c.cart_id = p.cart_id)
WHERE (c.name='우유' and p.name='요거트') OR (c.name='요거트'and p.name='우유')
ORDER BY c.cart_id;
LEFT JOIN / RIGHT JOIN
- 왼쪽 / 오른쪽 기준 병합
-- test1(왼)과 test2(오)의 number 컬럼을 서로 비교하여
-- 중첩되는 값이 존재하면 왼쪽 테이블(test1)의 number 컬럼의 값을 출력
SELECT test1.number
FROM test1
LEFT JOIN test2
ON test1.number = test2.number;
OUTER JOIN
- 매칭되는 값이 없어도 출력
- OUTER JOIN에도 LEFT, RIGHT, FULL 세 종류가 있는데 이는 INNER JOIN과 마찬가지로 왼쪽, 오른쪽 기준 매칭되는 값이 없어도 모두 출력함
-- 조건에 부합하지 않는 test2.number도 null값으로 출력
SELECT test1.*, test2.number
FROM test1
LEFT OUTER JOIN test2
ON test1.number = test2.number;
집계함수
- SELECT에서 사용
- 종류는 MIN, MAX, COUNT, AVG, SUM이 있음
SELECT COUNT(id) FROM products;
SELECT AVG(price) FROM products;
SELECT SUM(price) FROM products;
기타함수
- 절댓값 : ABS
- 올림 / 버림 / 반올림 : CEIL, FLOOR, ROUND
- 제곱 : POW
SELECT ABS(-100) ...
SELECT CEIL(10, 1) ... -- 소수점 첫째자리에서 올림
SELECT FLOOR(10, 1) ... -- 소수점 첫째자리에서 버림
SELECT ROUND(10, 1) ... -- 소수점 첫째자리에서 반올림
SELECT POW(10, 2) ... -- 첫 번째 숫자를 두 번째 숫자만큼 제곱
출처
https://paris-in-the-rain.tistory.com/100
https://moonsbeen.tistory.com/375
'공부 > Computer Science' 카테고리의 다른 글
[CS 면접 대비 공부] 소프트웨어 공학 (0) | 2022.08.06 |
---|---|
[CS 면접 대비 공부] 데이터베이스 (0) | 2022.08.05 |
[CS 면접 대비 공부] 네트워크 (0) | 2022.08.03 |
[CS 면접 대비 공부] 운영체제 (0) | 2022.08.03 |