본문 바로가기
웹 프로그래밍/DB

SQL 명령어 (DDL-데이터 정의어, Data Definition Laguage)

by 청량리 물냉면 2023. 4. 4.
반응형

DDL (데이터 정의어, Data Definition Laguage)

데이터를 정의하는 언어

테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어

 

테이블 관련 DDL

🍳 CREATE TABLE

테이블을 생성하는 명령

CREATE TABLE 테이블명(
    컬럼명 데이터타입 [제약조건],
    ...
);

예시

CREATE TABLE 사원
(
	사번 VARCHAR(10) PRIMARY KEY, --테이블의 기본 키 정의
    업무 VARCHAR(10) FOREIGN KEY REFERENCES 부서(부서코드),	--외래 키 정의, 테이블(컬럼명)으로 참조대상 명시
    이름 VARCHAR(10) UNIQUE,	--유일한 값
    생년월일 VARCHAR(8) NOT NULL,	--NULL을 포함하지 않도록 한다.
    성별 CHAR(1) CHECK (성별 = 'M' OR 성별 = 'F'),	--개발자가 정의하는 제약조건
    입사일 DATE DEFAULT SYSDATE --컬럼의 값을 넣지 않는 경우 기본값 설정, SYSDATE는 현재시간/날짜
);

 

🥧 ALTER TABLE

테이블을 수정하는 명령

 

1. 컬럼 추가

테이블에 필요한 컬럼을 추가하는 문법

ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];

예시

ALTER TABLE 사원 ADD 전화번호 VARCHAR(11) UNIQUE;

2. 컬럼 수정

  • 테이블에 필요한 컬럼을 수정하는 문법
  • CREATE문에 제약조건을 명시 해 테이블을 생성한 후, ALTER을 통해 테이블 제약조건의 변경이 가능하다.
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];

예시

ALTER TABLE 사원 MODIFY 이름 VARCHAR(30) NOT NULL;

3. 컬럼 삭제

테이블의 컬럼을 삭제하는 문법

ALTER TABLE 테이블명 DROP 컬럼명;

예시

ALTER TABLE 사원 DROP 생년월일; --사원테이블에서 생년월일이라는 컬럼 삭제

 

🍵 DROP TABLE

테이블을 삭제하는 명령

DROP TABLE 테이블명 [CASCADE | RESTRICT];

예시

DROP TABLE 사원;
CASCADE: 참조하는 테이블까지 연쇄적으로 제거하는 옵션
RESTRICT: 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션

 

🍿 TRUNCATE TABLE

테이블 내의 데이터들을 삭제하는 명령어

TRUNCATE TABLE 테이블명;

예시

TRUNCATE TABLE 사원;	--사원 테이블 내의 모든 데이터를 삭제

 

 

VIEW 관련 DDL

🍳 CREATE VIEW

뷰를 생성하는 명령

CREATE VIEW 뷰이름 AS
조회쿼리;

예시

CREATE VIEW 사원뷰 AS
SELECT 사번, 이름
	FROM 사원
    WHERER 성별 = 'M';

👉사원 테이블에서 성별 값이 'M'인 사번, 이름으로 생성된 사원뷰라는 이름의 뷰 생성

 

🛑
- VIEW 테이블의 SELECT 문에는 UNION이나 ORDER BY절을 사용할 수 없다.
- 컬럼명을 기술하지 않으면 SELECT 문의 컬럼명이 자동으로 사용된다.

* UNION: 집합연산자, 중복행이 제거된 쿼리 결과 집합
* ORDER BY절: 속성값을 정렬하고자 할 때 사용
    - 기본: 오름차순
    - ASC: 오름차순
    - DESC: 내림차순

 

🥧 CREATE OR REPLACE VIEW

뷰를 교체하는 명령

CREATE OR REPLACE VIEW 뷰이름 AS
조회쿼리;

 

🍵 DROP VIEW

뷰를 삭제하는 명령

DROP VIEW 뷰이름;

 

 

INDEX 관련 DDL

🍳 CREATE INDEX

  • 인덱스를 생성하는 명령
  • UNIQUE는 생략가능
  • 인덱스가 걸린 컬럼에 중복 값을 허용하지 않는다.
  • 복수 컬럼을 인덱스로 걸 수 있다.
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);

예시

CREATE INDEX 사번인덱스 ON 사원(사번);
--사원 테이블의 사번 컬럼에 대해 사번인덱스라는 인덱스명으로 인덱스 생성

 

🥧 ALTER INDEX

  • 인덱스를 수정하는 명령
  • 일부 DBMS에서는 지원하지 않는 기능
  • 기존 인덱스 삭제 후 신규 인덱스를 생성하는 방법을 권고
ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);

예시

ALTER INDEX 사번인덱스 ON 사원(사번);
--사원 테이블의 사번 컬럼에 대해 사번인덱스라는 인덱스명으로 인덱스 수정

 

🍵 DROP INDEX

인덱스를 삭제하는 명령

DROP INDEX 인덱스명;

예시

DROP INDEX 사번인덱스;
--사번인덱스라는 인덱스명을 가지고 있는 인덱스를 삭제

 

 

 

 

자료 출처: 수제비 2022 정보처리기사 실기 CH.7 SQL응용

반응형