SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 조작하기 위한 표준 언어입니다. SQL을 사용하여 데이터를 정의, 조회, 삽입, 수정, 삭제할 수 있습니다. 아래에서는 SQL의 주요 명령어들을 설명합니다.
1. 데이터 정의 언어 (DDL)
DDL은 데이터베이스의 구조를 정의하는 데 사용됩니다. 테이블을 생성, 수정, 삭제하는 명령어를 포함합니다.
CREATE TABLE
CREATE TABLE
명령어는 새로운 테이블을 생성하는 데 사용됩니다.
CREATE TABLE Students (
student_id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
major VARCHAR(100)
);
ALTER TABLE
ALTER TABLE
명령어는 기존 테이블의 구조를 수정할 때 사용됩니다. 예를 들어, 새로운 컬럼을 추가하거나 기존 컬럼을 변경할 수 있습니다.
-- 테이블에 새로운 컬럼 추가
ALTER TABLE Students
ADD email VARCHAR(100);
-- 기존 컬럼의 자료형 변경
ALTER TABLE Students
MODIFY COLUMN age SMALLINT;
DROP TABLE
DROP TABLE
명령어는 테이블을 삭제하는 데 사용됩니다. 이 명령어를 실행하면 해당 테이블과 모든 데이터가 삭제됩니다.
DROP TABLE Students;
2. 데이터 조작 언어 (DML)
DML은 데이터베이스에서 데이터를 삽입, 조회, 수정, 삭제하는 데 사용됩니다.
INSERT INTO
INSERT INTO
명령어는 테이블에 새로운 데이터를 삽입하는 데 사용됩니다.
INSERT INTO Students (student_id, name, age, major)
VALUES (1, '김철수', 22, '컴퓨터공학');
SELECT
SELECT
명령어는 테이블에서 데이터를 조회할 때 사용됩니다. 가장 많이 사용되는 SQL 명령어 중 하나입니다.
-- 모든 컬럼 조회
SELECT * FROM Students;
-- 특정 컬럼 조회
SELECT name, major FROM Students;
WHERE 조건절
WHERE
조건절은 특정 조건을 만족하는 데이터만 조회할 때 사용됩니다.
-- 나이가 21 이상인 학생 조회
SELECT * FROM Students
WHERE age >= 21;
-- 전공이 '컴퓨터공학'인 학생 조회
SELECT * FROM Students
WHERE major = '컴퓨터공학';
UPDATE
UPDATE
명령어는 테이블에 있는 기존 데이터를 수정하는 데 사용됩니다.
-- 학생의 전공을 변경
UPDATE Students
SET major = '전기전자공학'
WHERE student_id = 1;
DELETE
DELETE
명령어는 테이블에서 데이터를 삭제하는 데 사용됩니다.
-- 특정 학생의 데이터를 삭제
DELETE FROM Students
WHERE student_id = 1;
3. 조건 및 논리 연산자
SQL에서는 데이터를 조건에 따라 필터링할 때 다양한 연산자를 사용할 수 있습니다.
AND, OR
AND
와 OR
연산자는 여러 조건을 조합할 때 사용됩니다.
-- 나이가 20 이상이고 전공이 '컴퓨터공학'인 학생 조회
SELECT * FROM Students
WHERE age >= 20 AND major = '컴퓨터공학';
-- 나이가 20 이상이거나 전공이 '전자공학'인 학생 조회
SELECT * FROM Students
WHERE age >= 20 OR major = '전자공학';
IN
IN
연산자는 여러 값 중 하나와 일치하는 데이터를 조회할 때 사용됩니다.
-- 전공이 '컴퓨터공학' 또는 '전자공학'인 학생 조회
SELECT * FROM Students
WHERE major IN ('컴퓨터공학', '전자공학');
BETWEEN
BETWEEN
연산자는 특정 범위 내에 있는 데이터를 조회할 때 사용됩니다.
-- 나이가 20에서 25 사이인 학생 조회
SELECT * FROM Students
WHERE age BETWEEN 20 AND 25;
LIKE
LIKE
연산자는 특정 패턴과 일치하는 데이터를 조회할 때 사용됩니다. 와일드카드 문자 %
는 0개 이상의 문자를 의미합니다.
-- 이름이 '김'으로 시작하는 학생 조회
SELECT * FROM Students
WHERE name LIKE '김%';
-- 이름에 '철수'가 포함된 학생 조회
SELECT * FROM Students
WHERE name LIKE '%철수%';
4. 데이터 정렬
ORDER BY
절은 조회된 데이터를 정렬하는 데 사용됩니다. 기본값은 오름차순(ASC
), 내림차순은 DESC
를 사용합니다.
-- 나이 순으로 오름차순 정렬
SELECT * FROM Students
ORDER BY age ASC;
-- 이름 순으로 내림차순 정렬
SELECT * FROM Students
ORDER BY name DESC;
5. 집계 함수
SQL에서는 데이터를 요약할 때 사용할 수 있는 다양한 집계 함수가 있습니다. COUNT
, SUM
, AVG
, MAX
, MIN
등이 있습니다.
COUNT
COUNT
함수는 특정 조건을 만족하는 데이터의 개수를 셉니다.
-- 총 학생 수 조회
SELECT COUNT(*) FROM Students;
SUM
SUM
함수는 특정 컬럼의 합계를 구합니다.
-- 학생들의 총 나이 합계
SELECT SUM(age) FROM Students;
AVG
AVG
함수는 특정 컬럼의 평균 값을 계산합니다.
-- 학생들의 평균 나이 계산
SELECT AVG(age) FROM Students;
MAX, MIN
MAX
함수는 최대값을, MIN
함수는 최소값을 반환합니다.
-- 가장 나이가 많은 학생 조회
SELECT MAX(age) FROM Students;
-- 가장 나이가 적은 학생 조회
SELECT MIN(age) FROM Students;
6. 그룹화 (GROUP BY)
GROUP BY
절은 데이터를 그룹으로 묶어서 요약할 때 사용됩니다. GROUP BY
와 함께 집계 함수를 자주 사용합니다.
-- 전공별로 학생 수를 그룹화하여 계산
SELECT major, COUNT(*) FROM Students
GROUP BY major;
-- 전공별 평균 나이 계산
SELECT major, AVG(age) FROM Students
GROUP BY major;
7. 테이블 간의 조인 (JOIN)
JOIN
은 여러 테이블에서 데이터를 조합하여 조회할 때 사용됩니다. 대표적으로 INNER JOIN
, LEFT JOIN
, RIGHT JOIN
등이 있습니다.
INNER JOIN
INNER JOIN
은 두 테이블에서 공통된 값을 기준으로 데이터를 결합합니다.
SELECT Students.name, Enrollments.course
FROM Students
INNER JOIN Enrollments ON Students.student_id = Enrollments.student_id;
LEFT JOIN
LEFT JOIN
은 왼쪽 테이블의 모든 데이터를 포함하며, 오른쪽 테이블의 일치하는 데이터만 결합합니다.
SELECT Students.name, Enrollments.course
FROM Students
LEFT JOIN Enrollments ON Students.student_id = Enrollments.student_id;
결론
SQL은 데이터베이스를 관리하고 조작하는 데 매우 강력한 언어입니다. 위에서 설명한 문법은 SQL의 기본적인 기능을 다루며, 이를 바탕으로 복잡한 데이터베이스 쿼리를 작성할 수 있습니다. SQL의 다양한 기능을 이해하고 활용하면 데이터베이스 관리 및 데이터 분석 작업을 더욱 효율적으로 수행할 수 있습니다.