MySQL/이론
MySQL 이론(1)
윤_코딩
2023. 10. 19. 16:38
DDL (Date Define Language, 데이터 정의어)
- DB를 구축하거나 수정할 목적으로 사용하는 언어로 DBMS를 통해 사용되며, SCHEMA, DOMAIN, TABLE, VIEW, INDEX 등을 정의, 변경, 삭제할 때 사용합니다. (CREATE, ALTER TABLE, DROP 등)
1. CREATE SCHEMA
CREATE SCHEMA [스키마 이름];
- '스키마 이름'을 가진 DB 생성
2. CREATE TABLE
CREATE TABLE [테이블 이름] (
열이름 데이터_타입 [DEFAULT 기본값] [NOT NULL],
PRIMARY KEY(기본키_열이름),
UNIQUE(고유키_열이름),
FOREIGN KEY(외래키_열이름) REFERENCES 기준테이블(기본키_열이름) ON DELETE ON UPDATE,
CONSTRAINT 제약조건명 CHECK(조건식)
);
열이름 데이터_타입 [DEFAULT 기본값] [NOT NULL],
PRIMARY KEY(기본키_열이름),
UNIQUE(고유키_열이름),
FOREIGN KEY(외래키_열이름) REFERENCES 기준테이블(기본키_열이름) ON DELETE ON UPDATE,
CONSTRAINT 제약조건명 CHECK(조건식)
);
*ON DELETE, ON UPDATE 옵션
- NO ACTION : 기준 테이블(기본키)에 변화가 있어도 참조 테이블(외래키)에는 아무런 조치를 하지 않음
- CASCADE : 기준테이블(기본키)의 튜플(행)이 삭제되면 참조 테이블(외래키) 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경
- SET DEFAULT : 기준테이블(기본키)의 변화가 있으면 참조 테이블(외래키) 관련 튜플의 속성 값을 기본값으로 변경
- SET NULL : 기준테이블(기본키)의 변화가 있으면 참조 테이블(외래키) 관련 튜플의 속성 값을 NULL값으로 변경
[튜플-행 / 열-속성 / 릴레이션-테이블 / 스키마-데이터베이스]
3. CREATE VIEW
CREATE VIEW [뷰 이름] AS SELECT문;
- 뷰를 정의하는 명령문으로 열이름을 기술하지 않으면 SELECT문의 열이름이 자동으로 사용된다.
4. CREATE INDEX
CREATE [UNIQUE] INDEX [인덱스 이름] ON [테이블 이름](열이름 [ASC | DESC]);
- 인덱스를 정의하는 명령문
* UNIQUE
- 사용된 경우 : 중복 값이 없는 열로 인덱스를 생성
- 사용되지 않은 경우 : 중복 값을 허용하는 열로 인덱스를 생성
* 정렬 여부 지정
- ASC : 오름차순 정렬, 기본값
- DESC : 내림차순 정렬
5. ALTER TABLE
ALTER TABLE [테이블 이름] ADD 열이름 데이터타입 [DEFAULT 기본값]; (추가)
ALTER TABLE [테이블 이름] ALTER 열이름 [SET DEFAULT 기본값]; (수정)
ALTER TABLE [테이블 이름] DROP COLUMN 열이름; (삭제)
ALTER TABLE [테이블 이름] ALTER 열이름 [SET DEFAULT 기본값]; (수정)
ALTER TABLE [테이블 이름] DROP COLUMN 열이름; (삭제)
- 테이블에 대한 정의를 변경하는 명령문
6. DROP
DROP SCHEMA [스키마 이름];
DROP TABLE [테이블 이름];
DROP VIEW[뷰이름];
DROP INDEX[인덱스이름];
DROP TABLE [테이블 이름];
DROP VIEW[뷰이름];
DROP INDEX[인덱스이름];
- 스키마, 기본 테이블, 뷰 테이블, 인덱스를 제거
*CREATE TABLE + DROP TABLE = CREATE OR REPLACE TABLE
- 테이블 생성 시 같은 이름을 가진 테이블이 존재하지 않으면 생성, 같은 이름을 가진 테이블이 존재하면 삭제 후 생성