DDL

2023. 10. 25. 01:32BOOKS/SQL 전문가 가이드

 
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
저자
한국데이터산업진흥원
출판
한국데이터산업진흥원
출판일
2021.03.15

1. CREATE TABLE

테이블과 칼럼 정의

CREATE TABLE

CREATE TABLE 테이블명(
칼럼명1 데이터유형 [기본값] [NOT NULL]
,칼럼명2 데이터유형 [기본값] [NOT NULL]
,칼럼명3 데이터유형 [기본값] [NOT NULL]
,...
CONSTRAINT 제약조건명 제약조건(칼럼명)
);

테이블 생성 시 주의할 점

  • 테이블명은 객체를 위미할 수 있는 적절한 이름 사용, 가능한 단수형 권고
  • 테이블명은 다른 테이블명과 중복되지 않아야 함
  • 한 테이블 내에서는 칼럼명 중복X
  • 칼럼들은 괄호로 묶어 지정
  • 칼럼에 대해서는 다른 테이블까지 고려해 데이터베이스 내에서는 일관성 있게 사용하는 것이 좋음
  • 칼럼 뒤에 데이터 유형 지정 필수
  • 테이블명과 칼럼명은 반드시 문자로 시작
  • 예약어는 사용 불가능
  • A-Z,a-z,0-9,_,$,# 문자만 허용
  • 테이블 생성 시 대소문자 구분X
  • DATETIME 데이터 유형에는 별도로 크기 지정 X
  • 문자 데이터 유형은 반드시 최대길이 표시해야함
  • 칼럼과 칼럼 구분은 콤마로
  • 제약 조건 있으면 CONSTRAINT 이용해 추가

제약 조건

  • 사용자가 원하는 조건의 데이터만 유지하기 위한, 즉 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정하는 제약

제약 조건의 종류

DEFAULT

DEFAULT값을 사전에 정의하면 데이터 입력시 칼럼 값을 지정하지 않았을 때 NULL대신 DEFAULT값이 자동 입력됨

생성된 테이블 구조 확인

  • ORACLE : DESCRIBE 테이블명; or DESC 테이블명;
  • SQL Server : sp_help dbo.테이블명

SELECT 문장으로 테이블 생성 사례

CREATE TABLE 테이블명 AS SELECT ...;

NOT NULL제약조건만 적용되고 나머지 제약조건은 사라짐 → ALTER TABLE 기능 사용해야함

SQLServer

SELECT ... INTO 테이블명 FROM 테이블명;

2. ALTER TABLE

ADD COLUMN

기존 테이블에 필요한 칼럼 추가

ORACLE

ALTER TABLE 테이블명
    ADD(추가할 칼럼명1 데이터유형 [기본값] [NOT NULL]
            [,추가할 칼럼명2 데이터유형 [기본값] [NOT NULL],...]);

SQL Server

ALTER TABLE 테이블명
    ADD 추가할 칼럼명1 데이터유형 [기본값] [NOT NULL]
            [,추가할 칼럼명2 데이터유형 [기본값] [NOT NULL],...];

DROP COLUMN

  • 테이블에서 필요 없는 칼럼 삭제
  • 데이터 있거나 없거나 모두 삭제 가능
  • 단 칼럼 삭제 후 최소 하나 이상의 칼럼 존재해야 함
  • 한번 삭제된 칼럼은 복구 불가능

ORACLE

ALTER TABLE 테이블명 DROP(삭제할 칼럼명1 [, 삭제할 칼럼명2,...]);

SQL Server

ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명1 [, 삭제할 칼럼명2,...];

MODIFY COLUMN

칼럼의 데이터 유형, 디폴트 값, NOT NULL 제약조건 변경

ORACLE

ALTER TABLE 테이블명
    MODIFY(칼럼명1 데이터유형 [기본값] [NOT NULL]
            [,칼럼명2 데이터유형 [기본값] [NOT NULL],...]);

SQL Server

ALTER TABLE 테이블명
    ALTER COLUMN 칼럼명 데이터유형 [기본값] [NOT NULL];

변경 시 고려사항

  • 해당 칼럼의 크기를 늘릴 수는 있지만 데이터가 존재한다면 칼럼의 크기를 줄이는데는 제약이 있음 → 기존 데이터 훼손될 수 있기 때문
  • 해당 칼럼이 NULL값만 갖고 있거나 아무 행도 없으면 칼럼 크기를 줄일 수 있음
  • 해당 칼럼이 NULL값만 갖고 있으면 데이터 유형 변경 가능
  • 해당 칼럼의 DEFAULT값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향 미침
  • 해당 칼럼에 NULL 값이 없을 경우에만 NOT NULL제약조건 추가가능

RENAME COLUMN

칼럼명 변경

ORACLE

ALTER TABLE 테이블명 RENAME COLUMN 기존 칼럼명 TO 새로운 칼럼명;

SQL Server

sp_rename '기존 칼럼명','새로운 칼럼명','COLUMN';

DROP CONSTRAINT

제약 조건 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

ADD CONSTRAINT

제약 조건 추가

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(칼럼명);

3. RENAME TABLE

테이블 이름 변경

ORACLE

RENAME 기존 테이블명 TO 새로운 테이블명;

SQL Server

sp_rename '기존 테이블명','새로운 테이블명';

4. DROP TABLE

테이블 삭제

DROP TABLE 테이블명 [CASCADE CONSTRAINT]
  • CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제
  • SQL Server에는 CASCADE옵션 존재 X
    → 삭제하기 전 참조하는 FOREIGN KEY제약조건 또는 테이블 삭제해야함

5. TRUNCATE TABLE

테이블 자체가 삭제되지는 않고 테이블에 들어 있던 모든 행들이 제거되고 저장 공간을 재사용 가능하도록 해제

TRUNCATE TABLE 테이블명;
  • 테이블의 데이터를 삭제하는 명령어로 DELETE도 있지만 테이블 전체 데이터를 삭제하는 경우 시스템 부하가 적은 TRUNCATE TABLE을 권고
  • 단 TRUNCATE TABLE은 정상적인 복구 불가능

'BOOKS > SQL 전문가 가이드' 카테고리의 다른 글

DCL  (0) 2023.10.25
TCL  (1) 2023.10.25
DML  (0) 2023.10.25
정규 표현식  (1) 2023.10.25
PIVOT절과 UNPIVOT절  (0) 2023.10.25