728x90
1. DDL(Data Definition Language)
💡 DDL(Data Definition Language)는 데이터베이스의 스키마를 정의하거나 수정하는 데 사용되는 SQL의 한 부분이다.
스키마(schema)
: 테이블의 구조(컬럼명, 자료형, 자료형 크기, 테이블명 등) 및 제약조건(unique, primary key, not null, check, foreign key 등)을 아우르는 말이다.
1-1. CREATE
- 테이블 생성을 위한 구문
- IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않는다.
테이블의 컬럼 설정 방법
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint
1-1-1. 기본 문법
INSERT INTO tb1 VALUES (1, 10, 'Y');
SELECT * FROM tb1;
1-2. AUTO_INCREMENT
INSERT 시 PRIMARY키에 해당하는 컬럼에 자동으로 번호를 발생(중복되지 않게)시켜 저장할 수 있다.
CREATE TABLE IF NOT EXISTS tb2 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
1-3. ALTER
테이블을 추가/변경/수정/삭제하는 모든 것은 ALTER 명령어를 사용한다.
1-3-1. 열 추가
ALTER TABLE tb2
ADD col2 INT NOT NULL;
DESCRIBE tb2;
1-3-2. 열 삭제
ALTER TABLE tb2
DROP COLUMN col2;
DESCRIBE tb2;
1-3-3. 열 이름 및 데이터 형식 변경
ALTER TABLE tb2
CHANGE COLUMN fk change_fk INT NOT NULL;
DESCRIBE tb2;
1-3-4. 열 제약 조건 추가 및 삭제
ALTER TABLE tb2
DROP PRIMARY KEY; -- 에러 발생
에러 발새잉유: AUTO_INCREMENT가 걸려 있는 컬럼은 PRIMARY KEY 제거가 안되므로 AUTO_INCREMENT를 MODIFY 명령어로 제거한다.(MODIFY는 컬럼의 정의를 바꾸는 것이다.)
1-3-5. 컬럼 여러개 추가하기
ALTER TABLE tb2
ADD col3 DATE NOT NULL,
ADD col4 TINYINT NOT NULL;
DESC tb2;
1-4. DROP
테이블을 삭제하기 위한 구문
tb3 테이블 생성 후 삭제
-- tb3 테이블 생성
CREATE TABLE IF NOT EXISTS tb3 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- tb3 테이블 삭제
DROP TABLE IF EXISTS tb3;
1-5. TRUNCATE
논리적으로는 WHERE절이 없는 DELETE 구문과 큰 차이가 없어 보인다.
하지만 어차피 데이터를 다 삭제할 경우 행마다 하나씩 지워지는 DELETE보다 DROP이후 바로 테이블을 재생성 해주는 TRUNCATE가 훨씬 효율적으로 한번에 테이블을 초기화 시켜준다. 또한 AUTO_INCREMENT 컬럼이 있는 경우 시작 값도 0으로 초기화가 된다.
-- tb6 테이블 생성
CREATE TABLE IF NOT EXISTS tb6 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- 4개 행 데이터 INSERT
INSERT INTO tb6 VALUES (null, 10, 'Y');
INSERT INTO tb6 VALUES (null, 20, 'Y');
INSERT INTO tb6 VALUES (null, 30, 'Y');
INSERT INTO tb6 VALUES (null, 40, 'Y');
-- 제대로 INSERT 되었는지 확인
SELECT * FROM tb6;
-- 테이블 초기화 하기
-- TRUNCATE TABLE tb6;
TRUNCATE tb6; -- TABLE 키워드 생략 가능
728x90
'수업자료 > database' 카테고리의 다른 글
[SQL]-VIEW (0) | 2024.06.27 |
---|---|
[SQL]-CONSTRAINT(제약조건) (0) | 2024.06.27 |
[SQL]-TRANSACTION (0) | 2024.06.26 |
[SQL]-DML (0) | 2024.06.26 |
[SQL]-SELECT절 (0) | 2024.06.25 |