Database

DATABASE #5. TO SQL

Frisbeen 2025. 4. 28. 00:59

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에 저장

제약조건 종류

  1. NOT NULL
  2. UNIQUE
  3. PRIMARY KEY
  4. FOREIGN KEY
  5. 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)는 데이터베이스 구조 변경의 중요한 수단이다.