SQL 첫걸음(ch27. 제약 ~ ch28. 인덱스 구조)

김도형·2022년 10월 13일
0

27장 제약

  • CREATE TABLE 테이블로 정의

열 제약과 테이블 제약

  • 열 제약 : 한 개의 열만 제약 걸기
CREATE TABLE sample631 {
	a INTEGER NOT NULL,
    b INTEGER NOT NULL UNIQUE,
    c VARCHAR(30)
}
  • 테이블 제약 : 복 수의 열에 제약 걸기
CREATE TABLE sample631 {
	a INTEGER NOT NULL,
    b INTEGER NOT NULL UNIQUE,
    c VARCHAR(30),
    PRIMARY KEY (no, sub_no)
}

테이블 제약에서 제약 이름 지정 가능. (CONSTRAINT 키워드)

CREATE TABLE sample631 {
	a INTEGER NOT NULL,
    b INTEGER NOT NULL UNIQUE,
    c VARCHAR(30),
    CONSTRAINT pkey_sameple PRIMARY KEY (no, sub_no)
}

제약 추가

열 제약 추가

c열에 NOT NULL 제약 걸기

ALTER TABLE sample631 MODIFY c VARCHAR(30) NOT NULL;

테이블 제약 추가

기본키 제약 추가하기

ALTER TABLE sample631 ADD CONSTRAINT pkey_sample631 PRIMARY KEY(a);

제약 삭제

열 제약 삭제하기

c열에 NOT NULL 제약 없애기

ALTER TABLE sample631 MODIFY c VARCHAR(30);

테이블 제약 삭제하기

pkey_sample631 제약 삭제하기

ALTER TABLE sample631 DROP CONSTRAINT pkey_sample631;

단, 기본키는 테이블당 하나만 설정할 수 있기 때문에 제약명을 지정해주지 않아도 됨.

ALTER TABLE sample631 DROP PRIMARY KEY;

복수의 열로 기본키 구성하기

복수 열이 모두 기본키로 설정 시, 하나의 열이 중복되더라도 다른 열이 제약 사항(기본키 제약)에 위반되지 않으면 제약이 위반하지 않은 것이다.

만약 위 상태에서 완전히 동일한 값으로 INSERT 시 기본키 제약에 위반됨.


28장 인덱스 구조

  • 인덱스 구조를 사용하는 이유는 검색 속도 빠르다.(SELTET + WHERE 구)
  • 인덱스를 사용해 WHERE 구의 조건식 효율적으로 처리
  • 보통 인덱스 구조는 기본키에 가장 많이 사용됨.(유일성)
  • 대부분 테이블이 삭제되면 인덱스도 같이 삭제됨.

검색에 사용하는 알고리즘

  • 풀 테이블 스캔
    • 단순하게 처음부터 끝까지 검색
    • 엄청 느리다.
  • 이진 검색
    • 노드의 1/2 검색, 검색한 노드에 또 1/2 검색으로 결과값을 도출함.
    • 단 조건은 모든 노드의 값이 유일성을 가져야함. 중복된 값이 있으면 안됨.
    • 그래서 처음에 말한 거와 같이 인덱스 구조로 기본키에 많이 적용됨.

출처 : SQL 첫걸음 아사이 아츠시 지음 [한빛미디어]

profile
3년간 웹/앱, 자동제어 QA 🔜 개발자로 전향하여 현재 교육 회사에서 백엔드 개발자로 근무 중입니다.(LinkedIn : https://www.linkedin.com/in/dohyoung-kim-5ab09214b)

0개의 댓글