CREATE TABLE IF NOT EXISTS tb1 (
pk INT PRIMARY KEY auto_increment, -- 제약조건 / 컬럼 레벨에서 제약조건 추가
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N')) -- col1에 대한 제약조건 / 테이블 레벨에서 제약조건 추가
) ENGINE=INNODB;
-- if not exists ⇒ 옵션
-- varchar ⇒ 가변한다 / varchar(255) 최대 255byte까지 추가할 수 있다.
-- char ⇒ 고정형
-- 한 글자(한글): 3byte
-- 특수문자 및 영어: 2byte
-- 제약조건 사용하는 이유: 데이터 무결성을 위해
-- primary key를 넣지 않을 경우 자동으로 not null로 바
desc tbl1;
-- or
describe tbl1;
INSERT
INTO tbl1
VALUES
(
1, 2, 'Y'
);
create 시 설정했던 제약조건을 어겼을 시에 나오는 오류
-- auto_increment
CREATE TABLE if NOT EXISTS tbl2 (
pk INT PRIMARY KEY AUTO_INCREMENT,
fk INT,
col1 VARCHAR (255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE = INNODB;
DESC tbl2;
INSERT
INTO tbl2
VALUES
(
null, 2, 'Y'
);
SELECT * FROM tbl2;
pk 번호 자동으로 해줌
ALTER TABLE 테이블명 ADD 컬럼명 컬럼정의
-- alter
-- 컬럼 추가
ALTER TABLE tbl2 ADD col2 INT NOT NULL;
DESC tbl2;
-- 컬럼 삭제
ALTER TABLE tbl2 DROP COLUMN col2;
DESC tbl2;
-- fk 컬럼을 change_fk 컬럼으로 변경(NOT NULL 제약조건 존재)
-- 컬럼 이름 및 컬럼 정의 변경
ALTER TABLE tbl2
CHANGE COLUMN fk change_fk INT NOT NULL;
DESC tbl2;
change_fk가 not null로 된 것을 볼 수 있음
--- 제약조건 제거(auto_increment로 인해 제거 불가)
ALTER TABLE tbl2 DROP PRIMARY KEY;
-- auto_increment 제거
-- AUTO_INCREMENT가 걸려 있는 컬럼은 PRIMARY KEY 제거가 안되므로 AUTO_INCREMENT를 MODIFY 명령어로 제거한다.
-- (MODIFY는 컬럼의 정의를 바꾸는 것이다.)
ALTER TABLE tbl2 MODIFY pk INT;
-- 다시 primary key 제거
ALTER TABLE tbl2 DROP PRIMARY KEY;
ALTER TABLE tb2
ADD col3 DATE NOT NULL,
ADD col4 TINYINT NOT NULL;
DESC tb2;
DROP TABLE IF EXISTS 테이블명
-- TRUNCATE
-- tnl6 테이블 생성
CREATE TABLE if NOT EXISTS tnl6(
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) engine = INNODB;
DESC tnl6;
-- 4개 행 데이터 insert
INSERT INTO tnl6 VALUES (NULL, 10, 'Y');
INSERT INTO tnl6 VALUES (NULL, 20, 'Y');
INSERT INTO tnl6 VALUES (NULL, 30, 'Y');
INSERT INTO tnl6 VALUES (NULL, 40, 'Y');
-- 제대로 insert 되었는지 확인
SELECT * FROM tnl6;
-- 테이블 초기화 하기
-- TRUNCATE TABLE tb6;
TRUNCATE tnl6; -- TABLE 키워드 생략 가능