테이블은 데이터를 저장하는 기본 단위이다. 각 테이블은 행(row)과 열(column)로 구성된다. 행은 개별적인 데이터를 나타내고, 열은 데이터의 속성이나 특성을 나타낸다.
학생 테이블 예시:
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
주키는 테이블에서 각 행을 고유하게 식별하는 열이다. 주키 값은 유일해야 하며, 중복될 수 없다. 예를 들어, 학생 테이블에서는 "학번"이 주키 역할을 한다.
학생 테이블 예시 (학번이 주키):
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
학번은 각 학생을 고유하게 식별하는 값이다.
외래키는 다른 테이블의 주키를 참조하는 열이다. 외래키는 두 테이블 간의 관계를 정의하는 데 사용된다. 예를 들어, "학생" 테이블과 "수업" 테이블이 있을 때, "수업" 테이블에서 "학번"을 외래키로 사용하여 "학생" 테이블과 연결할 수 있다.
학생 테이블:
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
수업 테이블 (학번을 외래키로 사용):
| 수업번호 | 수업명 | 학번 |
|---|---|---|
| 101 | 데이터베이스 | 1001 |
| 102 | 알고리즘 | 1002 |
| 103 | 기계학습 | 1003 |
수업 테이블의 "학번"은 "학생" 테이블의 주키를 참조하는 외래키이다.
인덱스는 테이블에서 데이터를 빠르게 검색할 수 있도록 도와주는 데이터 구조이다. 예를 들어, 학생 테이블에서 "이름"을 기준으로 검색할 때 인덱스를 사용하면 더 빠르게 결과를 찾을 수 있다.
학생 테이블 예시 (인덱스 적용 가정):
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
"이름" 열에 인덱스를 적용하면 "이름"을 기준으로 빠르게 검색할 수 있다.
뷰는 하나 이상의 테이블에서 데이터를 조회한 결과를 가상의 테이블처럼 제공하는 객체이다. 뷰는 실제 데이터를 저장하지 않으며, 데이터를 실시간으로 조회할 때 사용된다.
학생 테이블 예시:
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
"학생전공뷰" (뷰 예시):
| 이름 | 전공 |
|---|---|
| 김철수 | 컴퓨터공학 |
| 이영희 | 전자공학 |
| 박민수 | 기계공학 |
위의 뷰는 학생 테이블에서 "이름"과 "전공"만을 추출한 가상의 테이블이다.
스키마는 데이터베이스의 구조를 정의하는 청사진이다. 스키마에는 데이터베이스 내의 모든 객체들, 예를 들어 테이블, 뷰, 관계 등이 포함된다. 각 스키마는 논리적으로 관련된 데이터베이스 객체들을 그룹화한다.
스키마 예시:
스키마는 데이터베이스의 구조적 요소를 그룹화하고 정의하는 역할을 한다.
트리거는 특정 이벤트가 발생할 때 자동으로 실행되는 저장 프로시저이다. 예를 들어, "학생" 테이블에 새로운 레코드가 삽입될 때 자동으로 "학생변경로그" 테이블에 기록을 추가하는 트리거를 설정할 수 있다.
학생 테이블 예시:
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
학생변경로그 테이블 (트리거 예시):
| 변경시간 | 변경된학번 | 변경내용 |
|---|---|---|
| 2025-03-20 10:30 | 1001 | 추가 |
학생 테이블에 새로운 데이터가 추가될 때마다 트리거가 실행되어 "학생변경로그" 테이블에 변경 내용이 기록된다.
저장 프로시저는 미리 정의된 SQL 쿼리 집합을 저장해 두고 필요할 때 호출하여 실행할 수 있는 객체이다. 예를 들어, 학생 정보를 삽입하는 저장 프로시저를 만들 수 있다.
저장 프로시저 예시:
CREATE PROCEDURE insert_student(IN student_id INT, IN name VARCHAR(50), IN age INT, IN major VARCHAR(50))
BEGIN
INSERT INTO 학생 (학번, 이름, 나이, 전공)
VALUES (student_id, name, age, major);
END;
이 저장 프로시저는 학생 정보를 삽입하는 SQL 쿼리를 저장하여, 언제든지 호출하여 사용할 수 있다.
제약조건은 데이터가 특정 규칙을 준수하도록 강제하는 규칙이다. 예를 들어, "학번" 열에 UNIQUE 제약조건을 설정하여 중복된 값이 들어가지 않도록 할 수 있다.
학생 테이블 예시 (제약조건 적용):
| 학번 | 이름 | 나이 | 전공 |
|---|---|---|---|
| 1001 | 김철수 | 21 | 컴퓨터공학 |
| 1002 | 이영희 | 22 | 전자공학 |
| 1003 | 박민수 | 23 | 기계공학 |
여기서 "학번" 열에는 UNIQUE 제약조건이 적용되어 중복된 학번을 삽입할 수 없다.