반응형
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응용
반응형