SQL 첫걸음 6장

cse 23·2025년 3월 30일
0

SQL 첫걸음

목록 보기
7/8

6장 데이터베이스 객체 작성과 삭제

25강. 데이터베이스 객체

  • RDBMS 설치 직후는 데이터베이스가 비어 있음
  • 테이블, 뷰, 인덱스, 프로시저 등의 객체를 생성하여 DB를 구축

데이터베이스 객체란?

  • 데이터베이스 내에 정의되는 모든 것 (예: 테이블, 뷰, 인덱스 등)
  • 객체는 이름을 가지며 데이터베이스에 실체를 가짐

이름 지정 제약사항

  • 기존 이름이나 예약어와 중복되지 않아야 함
  • 숫자로 시작 불가
  • 언더스코어(_) 외의 특수기호 사용 불가
  • 한글 사용 시 ""로 감싸야 함 (MySQL은 `로 감쌈)
  • 시스템이 허용하는 길이를 초과하지 않아야 함

스키마와 네임스페이스

  • 데이터베이스 객체는 스키마 안에 생성됨
  • 스키마는 이름 충돌 방지를 위한 네임스페이스 역할

26강. 테이블 작성, 삭제, 변경

CREATE TABLE

CREATE TABLE 테이블명 (
  열명 자료형 [DEFAULT 기본값] [NULL|NOT NULL],
  ...
);
  • 열명, 자료형(VARCHAR, INTEGER 등), 기본값, NULL 허용 여부 지정

DROP TABLE

DROP TABLE 테이블명;
  • 테이블 자체를 삭제 (복구 불가)

TRUNCATE TABLE

TRUNCATE TABLE 테이블명;
  • 테이블의 모든 행 삭제, WHERE 사용 불가

ALTER TABLE

  • 열 추가: ALTER TABLE 테이블명 ADD 열 정의;
  • 열 속성 변경: ALTER TABLE 테이블명 MODIFY 열 정의;
  • 열 이름 변경: ALTER TABLE 테이블명 CHANGE 기존열 새열 정의;
  • 열 삭제: ALTER TABLE 테이블명 DROP 열명;

예시:

ALTER TABLE sample MODIFY col VARCHAR(30);
ALTER TABLE sample ADD new_col INTEGER;



27강. 제약

  • 제약은 테이블의 열 또는 테이블 전체에 설정 가능

열 제약

CREATE TABLE sample (
  a INTEGER NOT NULL,
  b INTEGER UNIQUE,
  c VARCHAR(30)
);

테이블 제약

CREATE TABLE sample (
  no INTEGER,
  sub_no INTEGER,
  name VARCHAR(30),
  PRIMARY KEY (no, sub_no)
);

제약 이름 지정

CONSTRAINT 제약명 제약종류 (열명)

제약 추가 및 삭제

ALTER TABLE sample MODIFY c VARCHAR(30) NOT NULL;
ALTER TABLE sample ADD CONSTRAINT pkey_sample PRIMARY KEY(a);
ALTER TABLE sample DROP CONSTRAINT pkey_sample;
ALTER TABLE sample DROP PRIMARY KEY;

기본키

  • NOT NULL + UNIQUE
  • 행을 고유하게 식별하는 열에 설정

28강. 인덱스 구조

  • 인덱스는 SELECT 성능 향상을 위해 사용
  • 이진 탐색 구조 (이진 트리)
  • 인덱스가 없을 경우: 풀 테이블 스캔 수행

이진트리

  • 중복 값 없음
  • 왼쪽: 작은 값 / 오른쪽: 큰 값

29강. 인덱스 작성과 삭제

인덱스 작성

CREATE INDEX 인덱스명 ON 테이블명 (1,2, ...);

인덱스 삭제

DROP INDEX 인덱스명;
-- 또는
DROP INDEX 인덱스명 ON 테이블명;

인덱스 성능 확인

EXPLAIN SELECT ...;
  • 쿼리 실행 계획 확인
  • 인덱스 사용 여부 및 최적화 상태 확인 가능

30강. 뷰 작성과 삭제

뷰란?

  • SELECT 명령을 저장한 가상 테이블
  • 데이터 저장은 안되며 CPU 사용으로 처리

뷰 작성

CREATE VIEW 뷰명 AS SELECT ...;
-- 또는
CREATE VIEW 뷰명 (1,2, ...) AS SELECT ...;

뷰 삭제

DROP VIEW 뷰명;

주의사항

  • 뷰는 SELECT에서만 사용 권장
  • 근원이 되는 테이블의 데이터가 많거나 집계가 많으면 성능 저하 가능

머티리얼라이즈드 뷰

  • 첫 참조 시 데이터를 저장
  • 이후 참조 시 캐시된 데이터를 사용하여 성능 개선

함수 테이블

  • 인수를 받아 조건을 달리한 SELECT 실행 가능

-- 연습문제 ---
1.2
2.3
3.1

0개의 댓글