** 자기 공부용 및 암기용으로 포스팅하는 글 입니다.
** 정확한 정보는 보장 할 수 없으니, 참고용으로만 봐주시면 감사하겠습니다.
** 제 개인적인 생각 및 자기 암시목적으로 작성되기에 이점 양해 부탁드립니다.
** MySQL 기준으로 작성되었음을 알립니다.
★ 알아볼 내용
1. DDL이란?
2. 용어 정리
3. CREATE
4. ALTER
5. DROP
1. DDL란?
DB구조, 데이터 형식, 접근 방식 등 DataBase를 구축하거나 수정할 목적으로 사용하는 언어이다.
DDL에는 3가지의 유형이 있다.
-. CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의
-. ALTER : TABLE 정의 변경.
-. DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제
2. 용어 정리
- 1) SCHEMA [ 스키마 ]
DataBase의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것. 대이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 자기는 제약 조건등을 정의.
외부 스키마 ( = 서브 스키마 )
- 사용자가 보는 관점에 따라 다르며, 여러 개가 존재
- 전체 DB에서 일부를 볼 수 있다.
개념 스키마 ( = 스키마 )
- 사용자가 이해할 수 있는 논리적인 구조
- 접근 권한, 보안 및 무결성의 규칙을 명세화 한다.
내부 스키마
- 컴퓨터가 이해할 수 있는 물리적인 구조
- 물리적으로 저장되어 있는 DB의 전체적인 구조를 의미
- DBA가 관리.
- 2) DOMAIN [ 도메인 ]
하나의 속성이 취할 수 있는 동일한 유형의 원자값들의 집합.
- 3) TABLE [ 테이블 ]
데이터를 저장하고 있는 곳.
- 4) VIEW [ 뷰 ]
하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블. 물리적 구현이 되지 않음.
5) INDEX [ 인덱스 ]
검색 시간을 단축시키기 위해 만든 보조적인 데이터 구조.
3. CREATE?
1) CREATE SCHEMA
- 스키마를 정의하는 명령문.
2) CREATE DOMAIN
- 도메인을 정의하는 명령문.
CREATE DOMAIN 도메인명 [AS] 데이터_타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK (범위값)];
데이터 타입 : SQL에서 지원하는 데이터 타입
기본 값 : 데이터를 입력하지 않았을 때 자동으로 입력되는 값
3) CREATE TABLE
- 테이블을 정의하는 명령문
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...
[, PRIMARY KEY(기본키_속성명, ... )]
[, UNIQUE(대체키_속성명, ... )]
[, FOREIGN KEY(외래키_속성명, ... )]
REFERENCES 참조테이블(기본키_속성명, ...)]
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명] [CHECK(조건식)]);
기본 테이블에 포함될 모든 속성에 대하여 속성명/속성 데이터 타입/기본값/NOT NULL 여부 지정
PRIMARY KEY : 기본키로 사용할 속성을 지정
UNIQUE : 대체키로 사용할 속성을 지정함. 중복된 값을 가질 수 없음.
FOREIGN KEY ~ REFERENCES ~ : 외래키로 사용할 속성을 지정함
- ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야 할 사항을 지정
- ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야 할 사항을 지정함
CONSTRAINT : 제약 조건의 이름을 지정함
CHECK : 속성 값에 대한 제약 조건을 정의함
4) CREATE VIEW
뷰를 정의하는 명령문
CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;
5) CREATE INDEX
인덱스를 정의하는 명령문이다.
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]])
[CLUSTER];
UNIQUE : 사용 시 중복 값이 없는 속성으로 인덱스를 생성. 미 사용 시 중복 값 허용.
ASC[또는 생략] : 오름차순으로 정렬
DESC : 내림차순으로 정렬
CLUSTER : 사용 시 인덱스가 클러스티드 인덱스로 생성됨.
4. ALTER?
ALTER 문을 통하여 기존의 데이터베이스 객체를 수정하는데 사용이 된다.
-- 열 추가
ALTER TABLE Users ADD phone_number VARCHAR(20) NOT NULL;
-- 열 삭제
ALTER TABLE Books DROP COLUMN publication_date;
-- 데이터 타입 변경
ALTER TABLE Authors
MODIFY name TEXT NOT NULL;
-- 제약 조건 추가
ALTER TABLE Users
ADD CONSTRAINT unique_username UNIQUE (username);
ALTER TABLE Users DROP CONSTRAINT unique_username;
-- 제약 조건 삭제
ALTER TABLE Books
DROP FOREIGN KEY fk_publisher_id;
-- 인덱스 비활성화
ALTER TABLE Books
DISABLE INDEX idx_title;
-- 인덱스 활성화
ALTER TABLE Books
ENABLE INDEX idx_title;
5. DROP?
1) DROP
아직 작성중..
'DB[SQL] 지식 및 공부' 카테고리의 다른 글
[DB] MYSQL 공부 및 지식 #2 DDL-CREATE TABLE (0) | 2024.05.11 |
---|---|
[DB_SQL] 문제 풀이 #1 (0) | 2024.04.16 |
[DB_SQL] 공부 및 지식 #1 DDL (0) | 2024.03.31 |