[SQL] SQL 기본 문법 정리

COMGONG_STONE·2024년 12월 12일

SQL

목록 보기
1/1
post-thumbnail

예시 테이블

students 테이블

id이름나이수업_id
1John221
2Alice252
3Bob301
4Carol223

courses 테이블

수업_id수업명
1수학
2물리학
3화학

SQL 기본 문법 작성 순서

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s) [ASC|DESC];

1. SELECT: 데이터를 조회하는 기본 문법

SELECT는 데이터를 조회할 때 사용하는 SQL의 가장 기본적인 문법입니다. 여러 옵션을 함께 사용할 수 있습니다.

SELECT [DISTINCT] column_name FROM table_name;
  • [DISTINCT]: 중복된 데이터를 제거하고 고유한 값만 반환합니다.

옵션

옵션설명
DISTINCT중복 데이터를 제거하고 고유 값을 반환

예시

SELECT DISTINCT * FROM students;

결과

id이름나이수업_id
1John221
2Alice252
3Bob301
4Carol223

2. WHERE: 조건 설정

WHERE 절은 데이터를 조회할 때 조건을 설정합니다. 다양한 연산자를 활용해 원하는 데이터를 필터링할 수 있습니다.

SELECT column_name FROM table_name WHERE condition;

옵션

연산자설명예시
>값이 더 큰 데이터를 조회SELECT * FROM students WHERE 나이 > 25;
=값이 같은 데이터를 조회SELECT * FROM students WHERE 나이 = 22;
<값이 더 작은 데이터를 조회SELECT * FROM students WHERE 나이 < 30;
<>값이 다른 데이터를 조회SELECT * FROM students WHERE 나이 <> 25;
BETWEEN특정 범위 안의 데이터를 조회SELECT * FROM students WHERE 나이 BETWEEN 20 AND 30;
LIKE특정 패턴을 가진 데이터를 조회SELECT * FROM students WHERE 이름 LIKE 'A%';
IS NULLNULL 값을 가진 데이터를 조회SELECT * FROM students WHERE 나이 IS NULL;
IN지정된 값 목록에 포함된 데이터를 조회SELECT * FROM students WHERE 수업_id IN (1, 2);
NOT IN지정된 값 목록에 포함되지 않은 데이터를 조회SELECT * FROM students WHERE 수업_id NOT IN (1, 2);
AND두 조건을 동시에 만족하는 데이터를 조회SELECT * FROM students WHERE 나이 > 20 AND 나이 < 30;
OR하나 이상의 조건을 만족하는 데이터를 조회SELECT * FROM students WHERE 나이 = 22 OR 이름 = 'Bob';
NOT조건을 부정하여 만족하지 않는 데이터를 조회SELECT * FROM students WHERE NOT (나이 > 25);

예시

SELECT 이름 FROM students WHERE 나이 BETWEEN 22 AND 25;

결과

이름
John
Alice
Carol

3. JOIN: 테이블 결합

JOIN은 여러 테이블을 결합하여 데이터를 조회할 때 사용됩니다. 주로 사용하는 INNER JOINLEFT JOIN을 통해 관련 데이터를 결합합니다.

SELECT column_name
FROM table1
INNER JOIN table2 ON table1.column = table2.column;

옵션

JOIN 종류설명
INNER JOIN두 테이블에서 일치하는 데이터만 반환
LEFT JOIN왼쪽 테이블의 모든 데이터와 일치하는 오른쪽 데이터 반환
RIGHT JOIN오른쪽 테이블의 모든 데이터와 일치하는 왼쪽 데이터 반환
FULL JOIN두 테이블의 모든 데이터를 반환
CROSS JOIN두 테이블의 가능한 모든 조합을 반환

예시

SELECT students.이름, courses.수업명
FROM students
INNER JOIN courses ON students.수업_id = courses.수업_id;

결과

이름수업명
John수학
Bob수학
Alice물리학
Carol화학

4. GROUP BY와 HAVING: 그룹화 및 조건 설정

GROUP BY는 데이터를 그룹화하며 집계 함수와 함께 사용됩니다. HAVING은 그룹화된 데이터에 조건을 추가할 때 사용됩니다.

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;

옵션

함수설명예시
COUNT()특정 컬럼의 행 개수를 반환SELECT COUNT(*) FROM table_name
SUM()숫자 컬럼의 합계를 반환SELECT SUM(price) FROM orders
AVG()숫자 컬럼의 평균값을 반환SELECT AVG(age) FROM employees
MIN()특정 컬럼의 최소값을 반환SELECT MIN(age) FROM employees
MAX()특정 컬럼의 최대값을 반환SELECT MAX(salary) FROM employees
GROUP_CONCAT()그룹 내의 값을 하나의 문자열로 결합SELECT GROUP_CONCAT(name) FROM employees

예시

SELECT courses.수업명, COUNT(*)
FROM students
INNER JOIN courses ON students.수업_id = courses.수업_id
GROUP BY students.수업_id, courses.수업명
HAVING COUNT(*) > 1;

결과

수업명COUNT(*)
수학2

5. ORDER BY: 데이터 정렬

ORDER BY는 데이터를 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 때 사용됩니다.

SELECT column_name
FROM table_name
ORDER BY column_name ASC|DESC;

옵션

옵션설명
ASC데이터를 오름차순으로 정렬
DESC데이터를 내림차순으로 정렬

예시

SELECT 이름, 나이
FROM students
ORDER BY 나이 DESC;

결과

이름나이
Bob30
Alice25
John22
Carol22
profile
컴공돌멩이

0개의 댓글