SELECT, FROM, WHERE
SELECT 컬럼이름1, 컬럼이름2
FROM 테이블이름
WHERE 조건절;
예시
SELECT OrderID, CustomerID, EmployeeID
FROM Orders
WHERE ShipperID = 1;
WHERE절 연산자
비교 연산자
연산자 | 의미 |
---|
= | 같다 |
!=, <> | 다르다 |
>, < | 크다, 작다 |
>=, <= | 크거나 같다, 작거나 같다 |
IN () | 리스트의 값들 중에 있으면 TRUE 반환 |
NOT IN () | 리스트의 값들 중에 없으면 TRUE 반환 |
IS NULL | 값이 NULL이면 TRUE 반환 |
IS NOT NULL | 값이 NULL이 아니면 TRUE 반환 |
BETWEEN {MIN} AND {MAX} | 두 값 사이에 있으면 TRUE 반환 |
NOT BETWEEN {MIN} AND {MAX} | 두 값 사이에 없으면 TRUE 반환 |
산술 연산자
연산자 | 의미 |
---|
+, -, *, / | 더하기, 빼기, 곱하기, 나누기 |
%, MOD | 나머지 |
논리 연산자
연산자 | 의미 |
---|
AND, && | 조건식이 모두 TRUE일때만 TRUE |
OR | 조건식 중 1개만 TRUE이면 TRUE |
패턴 매칭 연산자
연산자 | 의미 |
---|
LIKE | 특정 패턴을 포함하는 데이터 검색 시 사용(pattern matching). 와일드카드 문자들과 같이 쓰임 |
REGEXP | LIKE 연산자보다 더욱 복잡한 패턴을 검색 시 사용(정규표현식) |
WILDCARD
기호 | 의미 |
---|
% | 0개 이상의 문자를 대체 |
_ | 1개의 문자를 대체 |
[...] | 괄호([]) 안에 있는 어떠한 문자 |
[^...] | 괄호([]) 안에 있지 않은 어떠한 문자 |
SELECT OrderID, CustomerID, EmployeeID FROM Orders
WHERE Orderdate LIKE '1997%';
Orderdate 컬럼의 데이터 중 앞의 4개 글자가 1997인 것을 찾아라.
SELECT ProductID, ProductName, Price FROM Products
WHERE ProductName LIKE 'a_%'
ProductName 컬럼의 데이터 중 첫번째 글자가 a이고 두번째 글자가 존재하는 것을 찾아라. (a 불가능, ab 가능, abcde 가능)
정규표현식에서 사용하는 패턴
매칭
패턴 | 기능 | 예시 | 설명 |
---|
. | 문자 1개 | "..." | 문자열의 길이가 3이상인 것을 찾음 |
| | OR | "강아지|고양이" | '강아지' 또는 '고양이'에 해당하는 문자열을 찾음 |
[] | [] 안에 나열된 패턴에 해당하는 문자열 | "1[xyz]" | '1x' 또는 '1y' 또는 '1z'인 문자열을 찾음 |
^ | 문자열의 시작 | "^[aeiou]" | a 또는 e 또는 i 또는 o 또는 u로 시작하는 문자열을 찾음 |
$ | 문자열의 끝 | "e$" | e로 끝나는 문자열을 찾음 |
횟수
패턴 | 기능 | 예시 | 설명 |
---|
* | 0회 이상 나타나는 문자 | "a*" | "a"가 0번 이상 등장하는 문자열을 찾음. 'a', 'aaaa', 'bcd' 모두 해당. |
+ | 1회 이상 나타나는 문자 | "와+" | "와"가 1번 이상 등장하는 문자열을 찾음. |
{m, n} | m회 이상 n회 이하 반복되어 나타나는 문자 | "a{1,2}" | "a"가 1회 이상 2회 이하 나타나는 문자열을 찾음. "apple", "again" 모두 해당 |
? | 0~1회 나타나는 문자 | "[abc]?" | "a" 또는 "b" 또는 "c"가 0~1회 등장하는 문자열을 찾음. "apple", "bob", "company" 모두 해당 |
그룹
패턴 | 기능 | 예시 | 설명 |
---|
[A-z] 또는 [:alpha:] 또는 \a | 알파벳 대문자 또는 소문자인 문자열을 찾음 | "[A-z]+" | 대상 문자열에서 알파벳이 1개 이상 있는 문자열을 찾음 |
[0-9] 또는 [:digit:] 또는 \d | 숫자인 문자열을 찾음 | "^[0-9]+" | 한 개 이상의 숫자로 시작하는 문자열을 찾음 |
NOT
패턴 | 기능 | 예시 | 설명 |
---|
[^문자] | 괄호 안의 문자를 포함하지 않은 문자열을 찾음 | "[^abc]" | 'a', 'b', 'c'를 모두 포함하지 않은 문자열을 찾음. "apple", "bob", "company" 모두 제외 |
AS를 통한 별칭 붙이기
- 컬럼 이름 뒤 AS를 써서 별칭 선언 가능
- AS 생략 가능
SELECT COUNT(DISTINCT CustomerID) AS Valid_count
FROM Orders
WHERE Orderdate LIKE '1996%';
GROUP BY
예시
SELECT ProductID, SUM(Quantity) FROM OrderDetails
GROUP BY ProductID;
ORDER BY
- 컬럼을 기준으로 정렬하여 조회
- ASC/DESC (기본은 ASC)
예시
SELECT ProductID, ProductName, Price FROM Products
ORDER BY Price;
SELECT ProductID, ProductName, Price FROM Products
ORDER BY CategoryID ASC, Price DESC;
LIMIT
예시
SELECT ProductName, Price
FROM Products
ORDER BY Price DESC
LIMIT 10;
DISTINCT
예시
SELECT DISTINCT CITY
FROM STATION
WHERE MOD(ID, 2) = 0;
REPLACE
SELECT REPLACE(컬럼이름, '기존 문자열', '변경할 문자열')
FROM 테이블이름;
HAVING
- GROUP BY한 결과에 조건절을 붙이고 싶을 때
- GROUP BY의 WHERE절과도 같음
예시
SELECT ProductID, MAX(Quantity) AS MAX_Quantity FROM OrderDetails
GROUP BY ProductID
HAVING MAX_Quantity >= 100;
집계함수
MAX, MIN, SUM, AVG
COUNT
SELECT COUNT(컬럼이름) FROM 테이블이름;
- 전체 행 개수를 가져올 때는 컬럼 대신
*
을 지정
SELECT COUNT(*) FROM 테이블이름;
숫자함수
ROUND
SELECT ROUND(10.49, 1);
TRUNCATE
SELECT TRUNCATE(10.49, 1);
CEILING
SELECT CEILING(10.95);
FLOOR
SELECT FLOOR(10.95);
SQRT
POW
ABS
문자열 함수
LENGTH
SELECT LENGTH('12345678');
JOIN
- 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현
- INNER JOIN, LEFT JOIN, RIGHT JOIN
INNER JOIN
SELECT SUM(CITY.POPULATION)
FROM CITY JOIN COUNTRY ON CITY.CountryCode = COUNTRY.Code
WHERE CONTINENT = 'Asia';
UNION
- 여러 개의 SELECT 문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용
- 이때 각각의 SELECT 문으로 선택된 컬럼(필드)의 개수와 타입은 모두 같아야 하며, 컬럼(필드)의 순서 또한 같아야 함
SELECT 컬럼이름
FROM 테이블이름
UNION
SELECT 컬럼이름
FROM 테이블이름
참고 자료