테이블, 뷰, 인덱스, 시퀀스, 동의어 등의 데이터베이스 객체들을 생성*삭제*수정하는데 사용되는 SQL문
* CREATE : 객체 생성 * DROP : 객체 삭제 * ALTER : 객체 변경 * RENAME : 객체 이름 변경 * TRUNCATE TABLE : 테이블 내의 데이터 전부 삭제[복구 불가] |
Create Table | 새로운 테이블을 생성 테이블을 생성할 때 기본키, 외래키, 제약사항 등을 설정 |
Alter Table | 해당 테이블을 변경 칼럼을 추가하거나 변경*삭제 기본키를 설정하거나 외래키를 설정 가능 |
Drop Table | 해당 테이블을 삭제 테이블의 데이터 구조 뿐만 아니라 저장된 데이터도 모두 삭제 |
CREATE TABLE 테이블 명 (칼럼명1 DATATYPE [DEFAULT 형식], 칼럼명2 DATATYPE [DEFAULT 형식], 칼럼명3 DATATYPE [DEFAULT 형식]);
테이블명 생성시 주의사항
1. 객체를 의미할 수 있는 적절한 이름 사용 |
2. 가능한 단수형을 사용 |
3. 테이블명은 다른 테이블의 이름과 중복되지 않아야 함 |
4. 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없음 |
5. 테이블명과 칼럼명은 반드시 문자로 시작해야 함 |
6. 사전에 정의한 예약어[Reseved Word]는 사용할 수 없다. |
7. A~Z, a~z, 0-9, _, $, #만 사용 가능 [특수문자 사용 불가] |
※ 기본적으로 테이블명이나 칼럼명은 대문자로 만들어짐
종 류 | 설 명 |
기본키 [PRIMARY KEY] |
기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성 * 하나의 테이블은 하나의 기본키만 가짐 →한 릴레이션에서 특정 레코드를 유일하게 구별할 수 있는 속성 * 기본키로 정의된 필드(속성)에는 동일한 값이 중복되어 저장될 수 없음 * 기본키는 NULL값을 가질 수 없음 |
외래키 [FOREIGN KEY] |
다른 테이블의 기본키를 외래키로 가져와 테이블 간의 관계를 정의하기 위해 사용 * 참조 무결성 제약 옵션 선택 가능 |
고유키 [UNIQUE KEY] |
테이블에 저장된 행 데이터를 고유하게 식별하기 위해 사용 * 단, NULL은 고유키 제약 대상이 아님[여러개의 NULL값을 가질 수 있음] |
NOT NULL | NULL값 입력 금지 * 일반적으로 칼럼은 DEFAULT 상태에서 NULL값을 가짐 * NOT NULL 제약을 지정하면 해당 칼럼은 입력이 필수! |
CHECK | 데이터의 무결성을 유지하기 위해 테이블의 특정 칼럼에 설정하는 제약 * 입력할 수 있는 값의 범위 등을 제한하기 위해 사용 * TRUE/FALSE로 평가할 수 있는 논리식을 CHECK 제약으로 사용 |
사용자가 원하는 조건의 데이터만 유지하기 위한 데이터베이스의 보편적인 방법
FK키 참조 무결성 제약 옵션① DELETE(/MODIFY) ACTION
CASCADE | Parent Table에서 데이터 삭제시 참조한 Child Table 데이터도 함께 삭제 ex> ON DELETE CASCADE 옵션을 줄 경우, 삭제시 참조한 테이블의 데이터까지 자동으로 삭제 → 참조 무결성 보장 |
SET NULL | Parent Table에서 데이터 삭제시 참조한 Child Table 데이터가 NULL값으로 변경됨 |
SET DEFAULT | Parent Table에서 데이터 삭제시 참조한 Child Table 데이터가 DEFAULT값으로 변경됨 |
RESTRICT | Child Table 데이터에 PK값이 없는 경우만 Parent Table에서 데이터 삭제 허용 |
NO ACTION | 참조무결성을 위반하는 삭제/수정 action을 취하지 않음 |
FK키 참조 무결성 제약 옵션② Insert ACTION
AUTOMATIC | Parent Table에 PK가 없는 경우, PK 생성 후 Child Table 데이터 입력 |
SET NULL | Parent Table에 PK가 없는 경우, Child Table 외부키를 NULL값으로 입력 |
SET DEFAULT | Parent Table에 PK가 없는 경우, Child Table 외부키를 지정된 기본값으로 입력 |
DEPENDENT | Parent Table 데이터에 PK가 있을 때만 Child Table에서 데이터 입력 허용 → Parent Table 데이터에 PK가 없으면 Child Table에서 데이터 입력 못함 |
NO ACTION | 참조무결성을 위반하는 입력 action을 취하지 않음 |
NULL & DEFAULT
NULL | ‘아직 정의되지 않은 미지의 값’이거나 ‘현재 데이터를 입력하지 못하는 경우’를 의미 → 공백(BLANK, ASCII 코드 32번)이나 숫자 0(ZERO, ASCII 48)과는 전혀 다른 값 → 조건에 맞는 데이터가 없을 때의 공집합과도 다른 값 |
DEFAULT | 데이터 입력시 기본적으로 설정되는 값 → 일반적으로 명시된 값을 지정하지 않은 경우에 NULL 값이 입력 → DEFAULT 값을 정의한 경우, NULL 값이 아닌 사전에 정의된 기본 값이 자동으로 입력 |
DESC 테이블명;
생성된 테이블의 구조를 확인할 때 사용
ALTER TABLE 테이블명 ADD 추가할칼럼명 데이터유형;
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);
ALTER TABLE 테이블명 MODIFY (칼럼명 새로운데이터타입/길이 제약조건);
ALTER TABLE 테이블명 DROP COLUMN 칼럼명;
ALTER TABLE 테이블명 RENAME 새로운테이블명;
ALTER TABLE 테이블명 RENAME COLUMN 칼럼명 TO 새로운칼럼명;
DROP TABLE 테이블명;
DROP TABLE 테이블명 CASCADE CONSTRAINT;
TRUNCATE TABLE 테이블명;
DELETE FROM | TRUNCATE | DROP |
DML | DDL(일부 DML 성격을 가짐) | DDL |
Commit이전 ROLLBACK 가능 | ROLLBACK 불가능 | ROLLBACK불가능 |
사용자 Commit | Auto Commit | Auto Commit |
데이터만 삭제 로그 기록 남음 테이블 구조 유지 |
데이터 삭제 로그 기록 삭제[용량 초기화] 테이블 구조 유지 |
데이터 삭제 로그 기록 삭제 테이블 구조 삭제 |
테이블로부터 유도된 가상의 테이블을 "뷰"라고 함
뷰의 장점 | 뷰의 단점 |
하나의 테이블에 여러 개의 뷰 생성 가능 특정 칼럼만 조회 가능[보안 기능] 데이터 관리가 간단 SELECT문이 간단 |
독자적인 인덱스 생성 불가 삽입, 수정, 삭제 연산에 제약 데이터 구조 변경 불가 |
[개미의 걸음 SQLD 2과목] SQL종류④ TCL(Transaction Control Language) (0) | 2020.12.23 |
---|---|
[개미의 걸음 SQLD 2과목] SQL종류③ DML(Data Manipulation Language) (0) | 2020.12.22 |
[개미의 걸음 SQLD 2과목] SQL종류① DCL[Data Control Language] (0) | 2020.12.20 |
[개미의 걸음 SQLD 2과목] SQL기초 ② 데이터 유형 & 형변환 (0) | 2020.12.19 |
[개미의 걸음 SQLD 2과목] SQL기초 ① 연산자 (0) | 2020.12.18 |
댓글 영역