데이타베이스/SQL

SQL 기초: 데이터베이스, 테이블, 데이터 타입과 SQL 문법

shimdh 2025. 1. 27. 19:24
728x90

데이터베이스와 테이블의 기본 개념

데이터베이스란 무엇인가?

데이터베이스는 관련된 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 예를 들어, 학교에서는 학생들의 이름, 나이, 학년 등의 정보를 체계적으로 저장하기 위해 데이터베이스를 사용할 수 있습니다. 데이터베이스는 데이터를 효율적으로 저장하고 검색하며, 다수의 사용자 간 데이터 공유를 가능하게 합니다.

테이블: 데이터 저장의 기본 단위

테이블은 데이터베이스 내에서 정보를 구조적으로 저장하는 기본 단위입니다. 테이블은 행(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: 검색 조건을 지정.

실습 예제: 간단한 쿼리 작성

  1. 모든 학생 데이터 조회

    SELECT * FROM Students;
  2. 특정 조건에 맞는 데이터 조회 (나이가 21세 이상인 학생)

    SELECT * FROM Students WHERE Age >= 21;
  3. 특정 열만 선택하여 조회 (이름과 학년)

    SELECT Name, Grade FROM Students;
  4. 데이터 정렬 (나이에 따라 오름차순 정렬)

    SELECT * FROM Students ORDER BY Age ASC;
  5. 수업에 등록된 학생 정보 조회

    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을 능숙하게 사용할 수 있는 역량을 갖추길 바랍니다.

728x90