데이터베이스와 테이블의 기본 개념
데이터베이스란 무엇인가?
데이터베이스는 관련된 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 예를 들어, 학교에서는 학생들의 이름, 나이, 학년 등의 정보를 체계적으로 저장하기 위해 데이터베이스를 사용할 수 있습니다. 데이터베이스는 데이터를 효율적으로 저장하고 검색하며, 다수의 사용자 간 데이터 공유를 가능하게 합니다.
테이블: 데이터 저장의 기본 단위
테이블은 데이터베이스 내에서 정보를 구조적으로 저장하는 기본 단위입니다. 테이블은 행(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을 능숙하게 사용할 수 있는 역량을 갖추길 바랍니다.
'데이타베이스 > SQL' 카테고리의 다른 글
SQL 데이터 조작 명령어: INSERT, UPDATE, DELETE (0) | 2025.01.28 |
---|---|
데이터 검색과 정렬: SQL SELECT 문의 모든 것 (0) | 2025.01.28 |
사용자 권한 관리와 데이터베이스 보안: 안전한 데이터 관리를 위한 가이드 (0) | 2025.01.27 |
SQL 성능 최적화: 쿼리와 인덱스 (0) | 2025.01.27 |
고급 SQL: 윈도우 함수, CTE, 그리고 재귀 쿼리 (0) | 2025.01.27 |