Growth Hoon

20230831_TIL_SQLD 2과목{DDL : CREATE, ALTER, RENAME, DROP} 본문

카테고리 없음

20230831_TIL_SQLD 2과목{DDL : CREATE, ALTER, RENAME, DROP}

sayhoon 2023. 9. 1. 00:10

SQL (Structured Query Language )

- 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어

 

데이터 조작, 정의, 제어어의 정의 및 SQL 문법

데이터 조작어 (DML : Data Manipulation Language)

- SELECT, INSERT, UPDATE, DELETE

 

데이터 정의어 (DDL : Data Definition Language)

- CREATE, ALTER, DROP, RENAME

 

데이터 제어어 (DCL : Data Control Language)

- GRANT, REVOKE

 

트랙잭션 제어어 (TCL : Transaction Cotrol Language)

- COMMIT, ROLLBACK


Table이란?

 

- 데이터를 저장하는 객체

- 하나의 공간을 필드(Field)라고 한다.

 

Table의 정규화

-  데이터의 불필요한 중복을 줄이는 것이 정규화 (Nomalization)

-  다른 Table의 기본키로 사용되고 있는 관계를 연결하는 Column을 Foreign Key라고 한다.


DDL ( Data Definition Language ) - 데이터 정의 언어

- CREATE, ALTER, DROP, RENAME

 

데이터의 유형
- CHARACTER : 고정길이 문자열 정보 ( 오라클, sql_server : CHAR 표현 )

- VARCHAR : 가변길이 문자열 정보  (오라클 : VARCHAR2, sql_server :VARCHAR 표현 )
- NUMERIC : 숫자 정보 ( 오라클 : NUMBER , sql_server : 10가지의 다양한 표현 )

- DATETIME : 날짜와 시각 정보 (오라클 : DATE, sql_server : DATETIME 표현)

 

CREATE (TABLE)

CREATE TABLE 테이블 이름(
    칼럼명 DATATYPE [DEFAULT 형식],
    칼럼명 DATATYPE [DEFAULT 형식],
    칼럼명 DATATYPE [DEFAULT 형식],
);

- 테이블 이름은 가능하면 단수명으로 지정

- 다른 테이블과 중복 x

- 각 칼럼들은 ()로 묶어서 지정하고 구분은 ,(콤마)로 한다

- 테이블 생성문의 마지막은 세미콜론

- 칼럼 뒤에 데이터 유형(DATATYPE)은 꼭 지정되어야 한다.

- 문자 유형은 반드시 가질 수 있는 최대 길이를 지정 ( VARCHAR(30) )

- 마지막 칼럼은 ,(콤마)를 찍지 않는다.

- 칼럼에 대한 조건은 CONSTRAINT를 이용하여 추가

 

CONSTRAINT

- 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법

- [PRIMARY KEY,  UNIQUE KEY,  NOT NULL,  CHECK,  FOREIGN KEY] 가 있음

 

생성된 테이블 구조를 확인하는 방법 = DESCRIBE

# Oracle
DESCRIBE 테이블명

# Sql Server
sp_help  'dbo.데이블명'

ALTER (TABLE)

- 테이블을  사용하는 도중에 변경할 때 사용

- 주로 칼럼을 추가/삭제 혹은 제약조건을 추가/삭제 하는 작업을 진행

 

ADD COLUMN - 컬럼 추가

- 마지막 컬럼으로 추가됨.

ALTER TABLE 테이블명
ADD 추가할컬럼명 데이터유형;

 

 

DROP COLUMN - 컬럼 제거

- 한번에 하나만 삭제됨.

- 삭제 후 최소 하나 이상의 컬럼 남아야함.

- 삭제된 컬럼 복구 불가

ALTER TABLE 테이블명
DROP COLUMN 삭제할 컬럼명;

 

MODIFY COLUMN - 데이터 유형, 티폴트 값, 제약조건 변경

# Oracle
ALTER TABLE 테이블명
MODIFY (칼럼명1 데이터유형 [DEFAULT 식] [제약조건],
	...);

# Sql server
ALTER TABLE 테이블명
ALTER (칼럼명1 데이터유형 [DEFAULT 식] [제약조건],
	...);

 

RENAME COLUMN

- Oracle등 일부 DBMS에서만 사용 가능

# oracle
ALTER TABLE 테이블명
RENAME COLUMN 변경해야 할 컬럼명 TO 새로운 컬럼명;

# sql server
sp_rename 변경해야 할 컬럼명, 새로운 컬럼멸, 'COLUMN';

 

DROP CONSTRAINT - 부여했던 제약조건 삭제

# Oracle & sql server
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;

ADD CONSTRAINT - 제약조건 추가

# Oracle & sql server
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

RENAME TABLE

# oracle
RENAME 변경전 데이블명 TO 변경 후 테이블명;

# sql server
sp_rename 변경전 테이블명, 변경 후 테이블명;

DROP TABLE

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

- 불필요한 테이블 삭제

- CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있던 참조하는 제약조건도 삭제

- SQL서버에는 CASCADE 옵션이 존재하지 않음, 그래서 FK 혹은 참조 테이블을 먼저 삭제해야함

 


TRUNCATE TABLE

TRUNCATE TABLE 테이블명;

- 테이블을 제거하는 건 아님

- 테이블 정보는 남기고, 행을 모두 제거하여 테이블 재사용성 가능

- DML로 분류될 수 있지만 내부 처리방식이나 AUTO commit 특성으로 DDL로 분류함.

 


reference site

1. 사용한 이미지 주소

2. SQLD관련 책