
SQL의 성격 : Multiset Relational Algebra
1. Multiset (중복 허용) 관계대수
- SQL은 중복을 허용하는 Multiset 시멘틱을 따른다.
- Pure Relational Algebra는 중복을 제거하지만, SQL 스타일로는 중복을 유지해야 한다.
예시:
{1, 1, 1, 2, 2} // 중복 허용, 제거하지 않음
2. SQL 기본 구조
- SELECT: 선택할 속성(attribute) 지정
- FROM: 조회할 테이블 지정
- WHERE: 조건 지정
3. SQL 구성 요소
- DDL (Data Definition Language): 스키마 정의
- DML (Data Manipulation Language): 데이터 조작
- DCL (Data Control Language): 데이터 접근 권한 제어
DDL에서 가능한 작업
- 인덱스 생성
- 무결성 제약조건 설정
- 도메인 및 스키마 정의
4. DDL 주요 명령어
CREATE TABLE
CREATE TABLE book (
bookno NUMBER(5),
title VARCHAR2(50)
);
서브쿼리 이용한 테이블 생성
CREATE TABLE empSALES AS
SELECT * FROM emp
WHERE job = 'SALES';
주요 데이터 타입
- VARCHAR2: 가변 길이 문자열
- NUMBER: 숫자형
- ROWID: 행의 물리적 주소
- TIMESTAMP: 미세 단위 시간
ALTER TABLE (스키마 변경)
- 추가
ALTER TABLE book ADD (pubs VARCHAR2(50));
- 수정
ALTER TABLE book MODIFY (pubs VARCHAR2(50));
- 삭제
ALTER TABLE book DROP (pubs);
테이블 제어
- 테이블 삭제 (복구 불가)
DROP TABLE book;
- 데이터만 삭제 (스키마 유지)
TRUNCATE TABLE book;
- 테이블 이름 변경
RENAME book TO article;
컬럼명 변경
ALTER TABLE book RENAME COLUMN bookno TO bookid;
5. 제약조건 (Integrity Constraints)
- 옵셔널: 대괄호([])로 표기
- 이름 부여 가능 (생략 시 자동 생성)
- 제약조건은 Data Dictionary에 저장
제약조건 종류
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
기본 문법
CREATE TABLE NAME (
attname1 NUMBER(5) [DEFAULT 값] [CONSTRAINT 이름] PRIMARY KEY,
attname2 VARCHAR2(20) CONSTRAINT 이름 NOT NULL,
CONSTRAINT 이름 PRIMARY KEY (attname1, attname2)
);
각 제약조건 설명
- NOT NULL: NULL 값 금지 (단일 속성만 설정 가능)
- UNIQUE: 중복 값 금지 (NULL 허용)
- PRIMARY KEY: NOT NULL + UNIQUE, 테이블당 하나만 존재
- CHECK: 특정 조건 만족 검증
CREATE TABLE book (
bookno NUMBER(5) CONSTRAINT C_BOOK_U UNIQUE,
bookID NUMBER(3) CONSTRAINT CheckID CHECK (bookID IN (1,2,3,4,5))
);
- FOREIGN KEY: 참조 무결성 보장
CREATE TABLE book (
authorID NUMBER(10),
CONSTRAINT bookFK FOREIGN KEY(authorID)
REFERENCES author(id)
ON DELETE SET NULL
);
FOREIGN KEY의 ON DELETE 옵션
- NO ACTION (기본값): 참조 중이면 삭제 불가
- CASCADE: 참조하는 투플까지 삭제
- SET NULL: 참조하는 값 NULL로 변경
- SET DEFAULT: 기본값으로 변경
6. 제약조건 추가 및 삭제
제약조건 추가
ALTER TABLE emp ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY (mgr) REFERENCES emp(empno);
제약조건 삭제
ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk;
정리
- Multiset 관계대수에서는 중복을 허용한다.
- DDL 명령어를 통해 테이블과 스키마를 정의하고 제약조건을 부여할 수 있다.
- 제약조건 관리는 데이터 무결성과 신뢰성을 유지하는 핵심이다.
- 스키마 변경(ALTER TABLE)과 삭제(DROP)는 데이터베이스 구조 변경의 중요한 수단이다.
'Database' 카테고리의 다른 글
| DATABASE #7. Mac X SQL 일어날 수 있는 문제 (0) | 2025.04.29 |
|---|---|
| DATABASE #6. SETTING SQL DEVELOPER at MAC (0) | 2025.04.28 |
| DATABASE #4. Relational Algebra 2 (0) | 2025.04.27 |
| DATABASE #3. Relation Algebra (0) | 2025.04.27 |
| DATABASE #2. RELATIONAL DATABASE (0) | 2025.04.27 |