본문 바로가기

DataBase

ALTER TABLE - 테이블 수정 (Maria DB)

기본 문법

ALTER TABLE 테이블명;

 

ADD - 컬럼 추가

ALTER TABLE 테이블명
ADD COLUMN 컬럼명 타입 제약사항;

예제)

ALTER TABLE products
ADD COLUMN col5 INT NOT NULL DEFAULT 1 REFERENCES employees(EmployeeID);

 

맨 앞, 중간에도 컬럼 추가 가능

-- 맨 앞에 컬럼추가
ALTER TABLE 테이블명
ADD COLUMN 컬럼명 타입 제약사항 FIRST;

-- 중간에 컬럼추가
ALTER TABLE 테이블명
ADD COLUMN 컬럼명 타입 제약사항 AFTER 컬럼명(이 컬럼 뒤에 생성);

예제)

-- 맨 앞에 컬럼 추가
ALTER TABLE products
ADD COLUMN col4 VARCHAR(10) FIRST;
-- 중간에 컬럼 추가
ALTER TABLE products
ADD COLUMN col3 VARCHAR(10) AFTER ProductName;

MODIFY - 컬럼 수정  ※!신중하게 할 것!

ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 타입 제약사항;

예제)

ALTER TABLE products
MODIFY COLUMN col3 INT;

※ 컬럼을 변경 할 때 변경할 컬럼안에 레코드가 있다면 타입을 변경할 때 조심

※ 타입의 길이도 줄이는건 주의!! 늘리는 건 딱히 상관 없음

예제)

-- 만약 col3이 기존에 VARCHAR(10) 타입이고 문자열의 값이 있다면
-- 다른 타입으로 변경하면 안된다.
ALTER TABLE products
MODIFY COLUMN col3 INT;

-- 만약에 col3 기존에 VARCHAR(10) 타입이고 10글자의 문자열 값이 있다면
-- VARCHAR(5) 이런식으로 줄이면 안된다.
ALTER TABLE products
MODIFY COLUMN col3 VARCHAR(5);

DROP - 컬럼 삭제  ※!신중하게 할 것! (그냥 없는 코드라고 생각)

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

제약사항만 추가, 제거

NULL - NULL 허용, 미허용

-- NULL 허용
ALTER TABLE 테이블명
MODIFY 컬럼명 타입 NULL ;

-- NULL 미허용
ALTER TABLE 테이블명
MODIFY 컬럼명 타입 NOT NULL ;

DEFAULT - 기본값 설정, 제거

--DEFAULT 값 추가
ALTER TABLE 테이블명
ALTER 컬럼명 SET DEFAULT 값;

--DEFAULT 제거
ALTER TABLE 테이블명
ALTER 컬럼명 DROP DEFAULT;

UNIQUE - 유일 키 추가, 제거

-- UNIQUE 추가
ALTER TABLE 테이블명
ADD UNIQUE (컬럼명);

-- UNIQUE 제거
ALTER TABLE 테이블명
DROP INDEX (UNIQUE INDEX명);

-- UNIQUE INDEX명 확인법
SHOW CREATE TABLE 테이블명; -- 테이블 생성 코드 확인
UNIQUE KEY `INDEX명`(컬럼명) -- INDEX명 확인 (컬럼명이랑 다를 수 있음)

PRIMARY KEY - PK값 추가, 제거

-- PRIMARY KEY 추가
ALTER TABLE 테이블명
ADD PRIMARY KEY (컬럼명);

-- PRIMARY KEY 제거
ALTER TABLE 테이블명
DROP PRIMARY KEY (컬럼명); -- NOT NULL이 남아있을 수 있으니 NOT NULL까지 제거

ALTER TABLE 테이블명
MODIFY 컬럼명 타입 NULL; -- NOT NULL -> NULL 허용으로 수정

FOREIGN KEY - 외래키 추가, 제거

-- FOREIGN KEY 추가
ALTER TABLE 테이블명;
ADD FOREIGN KEY (컬럼명) REFERENCES 참조할 테이블명(컬럼명);

-- FOREIGN KEY 제거(외래키명, 인덱스명 둘다 제거)
SHOW CREATE TABLE 제거할 테이블명; -- 테이블 생성코드 확인

CONSTRAINT 외래키명 -- 외래키명 확인
FOREIGN KEY(인덱스명) -- 인덱스명 확인

-- 외래키명 제거
ALTER TABLE 테이블명;
DROP FOREIGN KEY 외래키명;

-- 인덱스명 제거
ALTER TABLE 테이블명;
DROP INDEX 인덱스명;

 

반응형