DB 기초 문법, DDL

2020. 10. 1. 00:57DB/문법

반응형

 

2020/09/30 - [DB/문법] - DB 기초 문법, DQL

 

DB 기초 문법, DQL

간단하게 Table 구조를 확인하고 이제 직접 사용해볼 차례이다. 사용하려면 당연하게도 문법을 알아야 써먹는다. DQL(Data Query Language) -> 조회 (Select) DML(Data Manipulation Language) -> 테이블안의 내용..

wakeup-brain.tistory.com

 

누군가 만들어준 테이블을 사용한다면 전혀 필요가 없겠지만, (실전에서는 안 쓰지 않을까 싶다.)

 

나는 연습을 해야하고 직접 테이블 구성을 해야하므로 간단하게 알아보고 넘어가자.

 

일단 뭐 아무것도 없으므로 만들어야겠다. 

 

CREATE TABLE [name] (

                             [column1] [datatype] [default 형식-옵션],

                             [column2] [datatype] [default 형식-옵션],

                             [column3] [datatype] [default 형식-옵션],

                             [column4] [datatype] [default 형식-옵션],

                            );

예를 들어보자.

 

아래 예제는 테스트로 만들어놓은 실생활 코딩 프로젝트의 단어사전 테이블을 작성한 것이다.

 

no 컬럼의 경우 Not null 제약성에 따라 null값이 입력될 수 없고,

 

MYSQL의 자동체번함수 기능을 사용하여 no 컬럼의 값을 입력하지 않아도 자동 체번된 값으로 추가된다.

 

또한 제약사항중에 primary key 가 'no' 컬럼으로 되어있는데,

 

이는 Not Null + Unique 의 상태를 갖는 컬럼이란 의미이다.

 

즉, 빈 값이 올 수 없고, 중복 값을 허용하지 않는 컬럼인 것이다.

 

이를 통해 no 컬럼의 각 row들은 각각 유일한 값을 갖고 있을 수 밖에 없다.

CREATE TABLE `textsets` (
  `no` INT NOT NULL AUTO_INCREMENT,
  `korea` NVARCHAR(100) NULL,
  `english` NVARCHAR(100) NULL,
  `china` NVARCHAR(100) NULL,
  `poland` NVARCHAR(100) NULL,
  `ukraine` NVARCHAR(100) NULL,
  `rank` INT NULL,
  PRIMARY KEY (`no`));

이렇게 테이블을 생성했으면 사용하면 되는데,

 

혹시 생성된 테이블의 컬럼을 재정의하고 싶거나, 컬럼의 추가 및 삭제 를 하고 싶을 때 사용하는 것이 바로

 

Alter 이다.

 

ALTER TABLE [name]

       - add column명, column 타입, 제약사항

       - change(mysql) column명, column타입

       - drop column명

       - rename to [new name]

 

ALTER TABLE `textsets` 
DROP COLUMN `china`,
CHANGE COLUMN `korea` `korea2` VARCHAR(200) CHARACTER SET 'utf8' NULL DEFAULT NULL ,
ADD UNIQUE INDEX `korea2_UNIQUE` (`korea2` ASC) VISIBLE;
;

 

변경도 불편한 것이 없다.

 

만들 줄 알면 삭제도 할 줄 알아야 하는 법...

 

DROP TABLE [name]

 

테이블을 삭제해버린다. 당연히 원래 있던 데이터도 삭제된다. ROLLBACK도 불가능하다.

 

TRUNCATE TABLE [name]

 

테이블을 초기 갖 생성된 상태로 돌려 놓는다. ROLLBACK도 불가능하다.

→ DML인 delete를 사용하여 테이블 안의 row를 전부 삭제했을 때와 같은 효과를 보여주지만

    삭제되는 속도가 느리며, commit 전이라면 rollback이 가능하다.

→ delete에 비해 truncate 가 월등히 빠른 처리 속도를 보여주지만 rollback이 불가능하여 거의 사용할 일이 없다.

 

반응형

'DB > 문법' 카테고리의 다른 글

DB 기초 문법, TCL  (0) 2020.10.01
DB 기초 문법, DML  (0) 2020.10.01
DB 기초 문법, DQL  (0) 2020.09.30