제2절 DDL
1. 데이터 유형
2. CREATE TABLE
(1) 테이블과 칼럼 정의
- 테이블에 존재하는 모든 데이터를 고유하게 식별가능한 칼럼이나 칼럼 조합 들 중 하나를 선정하여 기본키 칼럼으로 지정한다.
- 기본키는 단일 칼럼이 아닌 여러 개의 칼럼으로도 만들어질 수 있다.
(2) 테이블 생성
[테이블 생성시 주의해야할 규칙]
- 객체를 의미할 수 있는 적절한 이름 사용. 가능한 단수형.
- 테이블명 중복 X
- 한 테이블 내에서 칼렴명 중복 X
- 테이블 이름을 지정하고 각 칼럼들을 괄호 () 로 묶어 지정
- 각 칼럼은 콤마 , 로 구분, 테이블 생성문의 끝은 항상 세미콜론 ; 으로 종료
- 칼럼은 다른 테이블까지 고려하여 DB자체에서 일관성 있게 사용하는 것이 좋다.
- 칼럼 뒤에 데이터 유형은 필수다.
- 테이블명, 칼럼명은 반드시 문자로 시작해야하고, 길이에 대한 한계가 있다.
- 예약어 사용 불가
- A-Z, a-z, 0-9, _, $, # 문자만 허용 된다.
- 대/소문자를 구분하지 않는다. 기본적으로 대문자로 만들어진다.
- DATETIME 유형에는 별도로 크기를 지정하지 않는다.
- 문자 데이터 유형은 반드시 최대 길이를 표시해야 한다.
- 제약조건은 CONSTRAINT를 이용하여 추가 가능하다. (칼럼 LEVEL 정의 방식, 테이블 LEVLE 정의 방식)
(3) 제약조건
- 사용자가 원하는 조건의 데이터만 유지하기 위한 즉, 데이터의 무결성 유지를 위한 방법으로 테이블의 특정 칼럼에 설정을 제약하는 것.
- NULL : 공백이나 숫자0과는 전혀 다른 값, 아직 정의 되지 않은 미지의 값, 현재 데이터를 입력하지 못하는 경우
- DEFAULT : 데이터 입력시 칼럼의 값이 지정되어 있지 않을 경우 기본값을 사전에 설정할 수 있다.
(4) 생성된 테이블 구조 확인
- Oracle : DESCRIBE 테이블명; / DESC 테이블명;
- SQL Server : sp_help 'dbo.테이블명'
(5) SELECT 문장을 통한 테이블 생성
- CTAS : CREATE TABLE ~ AS SELECT ~
- 다만 CTAS로 생성시 기본키, 고유키, 외래키 등의 제약조건은 없어져서 별도로 설정해야한다.
3. ALTER TABLE
(1) ADD COLUMN
- 새롭게 추가된 컬럼은 마지막 컬럼이 되며 위치 지정은 불가하다.
(2) DROP COLUMN
- 한 번에 하나의 칼럼만 삭제 가능
- 최소 하나 이상의 칼럼이 테이블에 존재하여야 함
- 삭제된 컬럼은 복구 불가능
(3) MODIFY COLUMN
[칼럼 변경시 고려 사항]
- 칼럼 크기를 늘리는 것은 가능, 줄이는 것은 불가능 (기존 데이터 훼손 우려)
- 다만, 해당 칼럼이 NULL이거나 아무것도 없으면 줄이기 가능
- 해당 컬럼에 NULL이 없을 경우만 NOT NULL 제약 조건 추가 가능
- 해당 칼럼의 DEFAULT 값을 바꾸면 이후 발생하는 행 삽입에만 영향을 미친다.
- RENAME COLUMN : 칼럼명 변경시 사용, Oracle 등 일부 DBMS만 지원
[oracle] [SQL Server]
(4) DROP CONSTRAINT : 제약조건 삭제 명령어
(5) ADD CONSTRAINT : 제약조건 추가
4. RENAME TABLE : 테이블 이름 변경
5. DROP TABLE : 테이블 삭제
- CASCADE CONSTRAINT : 해당 테이블과 관계있던 참조 제약조건도 삭제
- SQL Server 에서는 CASCADE 옵션이 존재하지 않으며 테이블을 삭제하기 전에 참조하 는 제약 조건 또는 참조하는 테이블을 먼저 삭제해야 한다.
6. TRUNCATE TABLE : 테이블 구조는 남겨두고 그 안의 모든 행들이 제거됨
TRUNCATE TABLE 테이블명;
'자격증 > SQLD' 카테고리의 다른 글
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제1장 SQL 기본 / 제4절 TCL (0) | 2021.05.26 |
---|---|
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제1장 SQL 기본 / 제3절 DML (0) | 2021.05.26 |
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제1장 SQL 기본 / 제1절 관계형 데이터베이스 개요 (0) | 2021.05.26 |
SQLD 정리 / 과목 1 데이터 모델링의 이해 / 제2장 데이터 모델과 성능 / 제6절 분산 데이터베이스와 성능 (0) | 2021.05.22 |
SQLD 정리 / 과목 1 데이터 모델링의 이해 / 제2장 데이터 모델과 성능 / 제5절 데이터베이스 구조와 성능 (0) | 2021.05.22 |