카테고리 없음
[SQL] SQL 기본 문법 - Select
Cocori_
2024. 6. 17. 17:47
기본 문법
Select 명령문의 기본 문법은 다음과 같다.
SELECT 속성명1, 속성명2
FROM 테이블 명1, ...
[WHERE 조건]
[GROUP BY 속성명1, ...]
[HAVING 그룹 조건]
[ORDER BY 속성 [ASC | DESC]];
대괄호 ( [ ] ) 쳐진 것은 옵션으로 꼭 들어갈 필요는 없는 문법들이다.
SELECT, FROM 절
Select절은 검색하고자 하는 속성명과 계산식이 들어간다.
From절에는 검색에 사용할 테이블 명이 들어간다.
-- SELECT '속성명' FROM '테이블명'
SELECT student_number, name FROM student;
-- 속성에 *을 넣을 경우 테이블에 있는 모든 컬럼이 보여진다.
SELECT * FROM student;
-- SELECT '속성명'뒤에 AS 새로운 별칭을 넣을 경우, 새로운 별칭이 적용된 컬럼이 보여진다.
SELECT student_number AS 학번, name AS 이름
FROM student;
-- 2개 이상의 테이블을 사용할 경우, 테이블 명.속성 명으로 표현한다.
SELECT student.name, teacher.name
FROM student, teacher
WHERE 절
Where절에는 조건문이 사용된다.
조건문의 결과 값이 참인 데이터를 추출하여, 최종적으로 우리가 원하는 조건을 가진 데이터를 검색 할 수 있게 해준다.
Where에서 사용할 수 있는 연산자는 다음과 같다.
| 연산자 | 사용법 | 설명 |
| = | A = B | A와 B가 같을 경우 True |
| > | A > B | A가 B보다 큰 경우 True |
| < | A < B | B가 A보다 큰 경우 True |
| >= | A >= B | A가 B보다 크거나 같은 경우 True |
| <= | A <= B | B가 A보다 크거나 같은 경우 True |
| <> | A <> B | A와 B가 다른 값일 경우 True |
| BETWEEN | 속성 명 BETWEEN A AND B | 데이터가 A와 B사이에 있는 값인 경우 True |
| LIKE | 속성 명 LIKE %'값' / LIKE _'값' 속성 명 LIKE '값'% / LIKE '값'_ |
문자열에 '값'이 들어간 경우 True _ : 문자열 수 제한 / % : 문자열 수 제한 X |
| IN | 속성명 IN( 데이터1, 데이터2, ... ) | 괄호 안에 들어간 데이터 중 하나일 경우 True |
| NOT | NOT 조건문 | 조건문 결과가 False인 경우 True |
| IS NULL | 속성명 IS NULL | 데이터가 NULL인 경우 True |
-- 성적이 A 이상인 학생만 조회
SELECT * FROM student
WHERE grade >= 'A'
-- 성적이 A ~ C사이인 학생만 조회
SELECT * FROM student
WHERE grade BETWEEN 'A' AND 'C'
-- 이름이 '우'로 끝나는 학생만 조회
SELECT * FROM student
WHERE name LIKE '%우'
-- 이름 중에 '건우', '재균', '한솔'이 들어간 경우만 조회
SELECT * FROM student
WHERE name IN ('건우', '재균', '한솔')
GROUP BY 절
속성값이 같은 데이터를 그룹으로 분류하고자 할 때 사용된다.
SUM, AVG, COUNT 등과 같은 집계 함수를 통해, 속성 값이 같은 데이터끼리 추가적인 연산을 진행할 수 있다.
-- 같은 반 학생들의 평균을 구한다.
SELECT AVG(score) AS 평균
FROM student
GROUP BY class
HAVING 절
GROUP BY로 묶은 그룹에 대한 조건을 추가할 수 있다.
-- 시험을 치룬 학생들(성적이 NULL이 아닌 학생)의 평균을 구한다.
SELECT AVG(score) AS 평균
FROM student
GROUP BY class
HAVING score IS NOT NULL
ORDER BY 절
속성 값을 기준으로 정렬을 하고자 할 때 사용된다.
AS '기준'문을 통해 오름차순이나 내림차순으로 정렬할 수 있다.
-- 생일이 빠른 순서대로 정렬
SELECT *
FROM student
ORDER BY birthday AS ASC
-- 생일이 느린 순서대로 정렬
SELECT *
FROM student
ORDER BY birthday AS DESC
-- ASC, DESC는 생략이 가능하다. (이 경우 오름차순으로 정렬)
SELECT *
FROM student
ORDER BY birthday