SQL 기초: 데이터베이스, 테이블, 데이터 타입과 SQL 문법
데이터베이스와 테이블의 기본 개념
데이터베이스란 무엇인가?
데이터베이스는 관련된 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 예를 들어, 학교에서는 학생들의 이름, 나이, 학년 등의 정보를 체계적으로 저장하기 위해 데이터베이스를 사용할 수 있습니다. 데이터베이스는 데이터를 효율적으로 저장하고 검색하며, 다수의 사용자 간 데이터 공유를 가능하게 합니다.
테이블: 데이터 저장의 기본 단위
테이블은 데이터베이스 내에서 정보를 구조적으로 저장하는 기본 단위입니다. 테이블은 행(row)과 열(column)로 구성되며, 각 행은 하나의 데이터 레코드를 나타내고 각 열은 데이터 속성을 나타냅니다.
예시: 학생 테이블
ID | 이름 | 나이 | 학년 |
---|---|---|---|
1 | 홍길동 | 20 | 3 |
2 | 김철수 | 21 | 4 |
이 간단한 예시에서 ID
, 이름
, 나이
, 학년
은 열을 나타내며, 각각의 행은 하나의 학생 데이터를 나타냅니다.
관계형 데이터베이스: 테이블 간 관계 설정
관계형 데이터베이스는 여러 개의 테이블 간 관계를 설정하여 데이터를 조직적으로 연결합니다. 예를 들어, 학생 테이블과 수업 테이블 간 관계를 설정하면, 특정 학생이 어떤 수업을 듣고 있는지를 표현할 수 있습니다.
실습 예제: 학교 관리 시스템 설계
CREATE DATABASE SchoolDB;
CREATE TABLE Students (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Grade INT
);
CREATE TABLE Classes (
ClassID INT PRIMARY KEY,
Subject VARCHAR(50),
Teacher VARCHAR(50)
);
CREATE TABLE Enrollments (
StudentID INT,
ClassID INT,
FOREIGN KEY (StudentID) REFERENCES Students(ID),
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID)
);
INSERT INTO Students (ID, Name, Age, Grade) VALUES (1, '홍길동', 20, 3);
INSERT INTO Classes (ClassID, Subject, Teacher) VALUES (101, '수학', '김선생');
INSERT INTO Enrollments (StudentID, ClassID) VALUES (1, 101);
위 예제는 학생, 수업, 그리고 등록 정보를 관리하는 시스템을 설계한 것입니다. 각 테이블 간 관계를 설정하여 데이터의 무결성을 유지하고 관리의 효율성을 높입니다.
추가 예제: 학년별 학생 수 조회
SELECT Grade, COUNT(*) AS StudentCount
FROM Students
GROUP BY Grade;
이 쿼리는 학년별 학생 수를 집계하여 보여줍니다. 그룹화를 통해 데이터를 요약하는 기본적인 SQL 기능을 보여줍니다.
SQL 문법의 기본 구조
SQL은 데이터를 검색하거나 수정할 때 사용하는 언어로, 명확한 구조를 가지고 있습니다.
SQL 기본 문법
SELECT <열 이름>
FROM <테이블 이름>
WHERE <조건>;
SELECT
: 데이터를 검색하기 위해 사용.FROM
: 데이터를 검색할 테이블을 지정.WHERE
: 검색 조건을 지정.
실습 예제: 간단한 쿼리 작성
모든 학생 데이터 조회
SELECT * FROM Students;
특정 조건에 맞는 데이터 조회 (나이가 21세 이상인 학생)
SELECT * FROM Students WHERE Age >= 21;
특정 열만 선택하여 조회 (이름과 학년)
SELECT Name, Grade FROM Students;
데이터 정렬 (나이에 따라 오름차순 정렬)
SELECT * FROM Students ORDER BY Age ASC;
수업에 등록된 학생 정보 조회
SELECT Students.Name, Classes.Subject FROM Students JOIN Enrollments ON Students.ID = Enrollments.StudentID JOIN Classes ON Enrollments.ClassID = Classes.ClassID;
이 쿼리는 학생이 등록한 수업 정보를 결합하여 출력합니다. JOIN을 활용한 관계형 데이터베이스의 강력한 기능을 보여줍니다.
SQL 데이터 타입
테이블의 각 열에는 데이터의 종류를 정의하는 데이터 타입이 있습니다. 데이터 타입 선택은 데이터 저장 효율성과 쿼리 성능에 큰 영향을 미칩니다.
주요 데이터 타입
정수형 (Integer Types)
- INT: 정수를 저장.
- SMALLINT, BIGINT: 작은 범위 또는 큰 범위의 정수를 저장.
실수형 (Floating Point Types)
- FLOAT, DOUBLE: 소수점을 포함한 숫자 저장.
문자열형 (String Types)
- CHAR(n): 고정 길이 문자열.
- VARCHAR(n): 가변 길이 문자열.
날짜 및 시간형 (Date and Time Types)
- DATE: 연도, 월, 일 정보를 저장.
- DATETIME: 날짜와 시간을 함께 저장.
실습 예제: 직원 테이블 생성
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
BirthDate DATE,
Salary FLOAT
);
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Salary)
VALUES (1, '홍', '길동', '1985-05-15', 50000.00);
SELECT FirstName || ' ' || LastName AS FullName FROM Employees WHERE Salary > 40000;
이 예제는 데이터 타입이 테이블 설계와 데이터 관리에서 얼마나 중요한지를 보여줍니다.
추가 예제: 연봉 상위 10명 조회
SELECT *
FROM Employees
ORDER BY Salary DESC
LIMIT 10;
이 쿼리는 연봉이 가장 높은 10명의 직원 데이터를 조회합니다.
결론
SQL은 데이터베이스와의 상호작용을 통해 데이터를 효과적으로 관리하고 활용할 수 있는 강력한 도구입니다. 데이터베이스와 테이블의 기본 개념, 데이터 타입, SQL 문법을 이해하면 복잡한 데이터 관리 작업도 쉽게 수행할 수 있습니다. 이 글에서 다룬 내용을 바탕으로 SQL 실습을 진행하며 더 깊은 이해를 쌓아 보세요. 추가적인 예제와 연습을 통해 실제 업무에서도 SQL을 능숙하게 사용할 수 있는 역량을 갖추길 바랍니다.