※ SQL이란 무엇인가?
SQL(Structured Query Language)은 관계형 데이터베이스(RDBMS)에서
데이터를 정의, 조작, 제어하기 위해 사용하는 표준 언어입니다.
데이터를 생성하고, 조회하고, 수정하고, 삭제하는 모든 작업을 수행할 수 있으며,
거의 모든 DBMS(MySQL, PostgreSQL, Oracle 등)에서 공통적으로 사용됩니다.
SQL은 선언형 언어(Declarative Language)로서,
"무엇을 할지"를 명시하면 DBMS가 "어떻게 할지"를 처리합니다.
예를 들어 "학생 테이블에서 이름이 '지우'인 데이터를 조회하라"라고 명령하면,
DBMS가 내부적으로 효율적인 방법으로 검색을 수행합니다.
-- SQL 예시: 이름이 '지우'인 학생 조회
SELECT *
FROM student
WHERE name = '지우';
→ SQL은 데이터 분석, 웹 서비스, 백엔드 개발, 머신러닝 등 모든 분야에서 필수적으로 사용됩니다.
※ SQL 명령어의 분류
SQL은 기능에 따라 다음과 같이 다섯 가지로 분류됩니다.
| 구분 | 명령어 | 설명 |
|---|---|---|
| DDL (Data Definition Language) |
CREATE, ALTER, DROP | 테이블, 스키마 등 데이터 구조를 정의 |
| DML (Data Manipulation Language) |
INSERT, UPDATE, DELETE | 데이터 삽입, 수정, 삭제 |
| DQL (Data Query Language) |
SELECT | 데이터 검색 및 조회 |
| DCL (Data Control Language) |
GRANT, REVOKE | 사용자 권한 제어 |
| TCL (Transaction Control Language) |
COMMIT, ROLLBACK | 트랜잭션 제어 (작업 확정 또는 취소) |
→ 이 글에서는 가장 많이 사용하는 DQL(SELECT)를 중심으로 살펴보겠습니다.
※ SELECT 문 기본 구조
SELECT는 데이터베이스에서 원하는 데이터를 검색하는 명령어입니다.
기본 구조는 다음과 같습니다.
SELECT 컬럼명[, 컬럼명2, ...] -- 조회할 열
FROM 테이블명 -- 조회할 테이블
WHERE 조건식 -- (선택) 조건 지정
GROUP BY 그룹화 기준 -- (선택) 그룹화
HAVING 그룹 조건 -- (선택) 그룹 조건
ORDER BY 정렬 기준 -- (선택) 정렬
LIMIT 개수 -- (선택) 개수 제한
-- 예시: 'AI Engineering' 전공 학생의 이름과 학번 조회
SELECT student_id, name
FROM student
WHERE major = 'AI Engineering'
ORDER BY name ASC
LIMIT 5;
→ SELECT는 필요한 컬럼을 지정하고, 조건을 붙여 필터링하고,
정렬 및 그룹화까지 가능하며, 데이터 조회의 핵심입니다.
※ 컬럼 선택, 별칭(Alias), 계산식 활용
SELECT 문에서는 원하는 컬럼만 선택할 수 있으며,
AS 키워드로 별칭(Alias)을 붙일 수도 있습니다.
-- 원하는 컬럼만 조회
SELECT name, major FROM student;
-- 컬럼 이름에 별칭 지정
SELECT name AS 학생이름, major AS 전공 FROM student;
-- 계산식 사용 (점수에 5점 보너스 추가)
SELECT subject, score, score + 5 AS bonus_score FROM grade;
→ 별칭은 SQL 결과를 더 읽기 쉽게 만들고,
계산식은 조회 시 즉석에서 가공된 데이터를 보여줄 수 있습니다.
※ DISTINCT – 중복 제거
DISTINCT는 조회 결과에서 중복된 값을 제거할 때 사용합니다.
-- 전공 목록 조회 (중복 제거)
SELECT DISTINCT major FROM student;
→ DISTINCT는 항상 SELECT 바로 뒤에 위치해야 하며,
성능에 영향을 줄 수 있으므로 주의해서 사용해야 합니다.
※ WHERE – 조건을 이용한 필터링
WHERE 절을 사용하면 특정 조건에 맞는 데이터만 필터링해서 조회할 수 있습니다.
-- 점수가 90점 이상인 학생만 조회
SELECT * FROM grade
WHERE score >= 90;
-- 이름이 '지우'인 학생만 조회
SELECT * FROM student
WHERE name = '지우';
-- 논리 연산자 사용 (AND, OR, NOT)
SELECT * FROM student
WHERE major = 'AI Engineering' AND name LIKE '김%';
→ WHERE 절에서는 비교 연산자(=, >, <, >=, <=, !=),
논리 연산자(AND, OR, NOT)를 함께 사용합니다.
※ 패턴 검색과 범위 조건
LIKE – 패턴 검색
-- 이름이 '김'으로 시작하는 학생 조회
SELECT * FROM student
WHERE name LIKE '김%';
-- 이름에 '우'가 포함된 학생 조회
SELECT * FROM student
WHERE name LIKE '%우%';
BETWEEN – 범위 조건
-- 점수가 80 ~ 100 사이인 학생 조회
SELECT * FROM grade
WHERE score BETWEEN 80 AND 100;
IN – 여러 값 비교
-- 특정 전공 학생만 조회
SELECT * FROM student
WHERE major IN ('AI Engineering', 'Data Science');
→ LIKE는 문자열 패턴 검색, BETWEEN은 범위 검색,
IN은 다중 조건 검색에 유용합니다.
※ ORDER BY / LIMIT – 정렬과 개수 제한
ORDER BY는 조회 결과를 오름차순(ASC) 또는 내림차순(DESC)으로 정렬하고,
LIMIT는 결과 개수를 제한합니다.
-- 점수가 높은 순서로 상위 3명 조회
SELECT name, score
FROM grade
ORDER BY score DESC
LIMIT 3;
→ ORDER BY는 SELECT 문의 마지막에 작성하며,
LIMIT와 함께 자주 사용됩니다.
※ NULL – 값이 없는 데이터 처리
NULL은 “값이 없음”을 의미하며, 0이나 빈 문자열("")과는 다릅니다.
조건 비교 시 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
-- 이메일 정보가 없는 학생 조회
SELECT * FROM student
WHERE email IS NULL;
-- 이메일이 등록된 학생만 조회
SELECT * FROM student
WHERE email IS NOT NULL;
→ = NULL은 항상 FALSE로 평가되므로 주의해야 합니다.
'2025 현대오토에버 모빌리티 SW 스쿨(클라우드 2기) > 데이터베이스' 카테고리의 다른 글
| [Database] DDL과 제약 조건 (0) | 2025.10.07 |
|---|---|
| [Database] SQL 언어 완벽 정리 (3) – SubQuery와 Join (0) | 2025.10.07 |
| [Database] SQL 언어 완벽 정리 (2) – 함수와 GROUP BY (0) | 2025.10.07 |
| [Database] 관계형 데이터베이스(RDBMS) 이해 (0) | 2025.10.07 |
| [Database] 데이터베이스의 개념과 역할 (0) | 2025.10.07 |