ALTER TABLE ... ADD
: 테이블에 컬럼 추가
→ 생성된 테이블 구조에 새로운 컬럼을 추가
ALTER TABLE 테이블명
ADD 컬럼명 데이터형식;
★ 여러 컬럼을 한 번에 추가하는 경우 ★
ALTER TABLE 테이블명
ADD 컬럼명 데이터형식, 컬럼명 데이터형식
OR
ALTER TABLE 테이블명 ADD 컬럼명 데이터형식;
ALTER TABLE 테이블명 ADD 컬럼명 데이터형식;
제약조건 (CONSTRAINTS)
- 만약 종속성이 존재한다면 테이블의 삭제나 변경을 방지
- 제약조건 정보는 INFORMATION_SCHEMA 데이터베이스의 TABLE_CONSTRAINTS 테이블에 저장되어 있음
▶ DEPT0 테이블의 제약조건 확인
- 테이블에 제약 조건을 설정할 수 있음
ALTER TABLE 테이블 명
ADD CONSTRAINT 제약조건 이름 제약조건(컬럼명);
제약조건 1. UNIQUE
▶ STUDENT0 테이블의 제약조건 정보 확인
▶ STUDENT0 테이블의 SNAME 컬럼에 UNIQUE 제약조건을 가진 STD_UK_SNAME 제약 조건을 추가
▶ 제약조건을 추가한 후 STUDENT0 테이블의 제약조건을 확인해보면 정상적으로 추가되었음을 확인할 수 있음
▶ STUDENT0 테이블의 모든 정보 출력
▶ STUDNET0 테이블의 SNO, SNAME, SDEPT, GPA, STEL 컬럼에 순서대로 200811111, 'THOMAS', 10, 3.5, '010-3456-7512' 값을 삽입
▶ 동일한 테이블의 컬럼에 200811112, 'THOMAS', 20, 4.3, '010-8827-1324' 값을 추가하려고 하면 오류가 발생함
→ STUDENT0 테이블에 SNAME 필드가 UNIQUE INDEX로 걸려있기 때문에 발생
제약조건 2. CHECK
▶ STUDENT0 테이블의 제약 조건 확인
▶ STUDENT0 테이블에 STD_CK_GPA라는 CHECK 제약조건을 추가하되, GPA가 0 이상이고 4.5 이하여야 한다는 조건을 가짐
▶ STUDENT0 테이블의 제약조건을 확인하면 STD_CK_GPA가 새로 생겼음을 확인할 수 있음
▶ STUDENT0 테이블의 모든 정보를 출력
▶ STUDENT0 테이블의 SNO, SNAME, SDEPT, GPA, STEL 컬럼에 순서대로 200811113, 'SHACO', 10, 3.5, '010-5729-9082' 값을 삽입
▶ STUDENT0 테이블의 컬럼에 순서대로 200811114, 'TINA', 20, 4.6, '010-1234-5476' 값을 삽입하면 오류가 발생함
→ GPA값이 0 이상 4.5 이하라는 조건을 가지지만 4.6으로 조건을 위반했기 때문에 발생
제약조건 3. FOREIGN KEY
▶ STUDENT0 테이블의 제약 조건 확인
▶ DEPT0 테이블의 DNO 컬럼을 참고하여 STUDENT0 테이블에 FK_SDEPT라는 SDEPT 컬럼의 외래키 제약조건을 생성
▶ STUDENT0 테이블의 제약조건 정보를 확인해보면 제대로 생성되었음을 확인할 수 있음
▶ STUDENT0 테이블의 SNO, SNAME, SDEPT, GPA, STEL 컬럼에 200811115, 'NIKO', 10, 2.5, '010-3129-2947' 값을 삽입함
▶ STUDENT 테이블의 200811116, 'KATELYN', 50, 4.3, '010-8176-1263' 데이터를 삽입하면 오류가 발생
→ STUDENT0 테이블의 외래키는 DEPT0 테이블의 DNO를 참고하여 STUDENT0 테이블의 SDEPT로 가져오는데, 삽입하려는 데이터는 50으로 DEPT0 테이블의 DNO 컬럼에 존재하지 않는 값이기 때문에 참고할 수 없어 발생함
▶ STUDENT0 테이블의 제약조건을 확인해보면 알 수 있듯이, 이외에도 PRIMARY KEY, NOT NULL 등의 제약 조건이 존재함
CREATE TABLE ... CONSTRAINT
: 테이블 생성시 제약조건 추가
CONSTRAINT 제약조건 이름 제약 조건(컬럼명)
▶ PRIMARY KEY, CHECK 제약 조건을 가진 TEST 테이블 생성
▶ TEST 테이블의 제약조건을 확인해보면 정상적으로 생성되었음을 확인할 수 있음
ALTER TABLE ... CHANGE
: 테이블의 컬럼명 변경
ALTER TABLE 테이블명
CHANGE [기존 컬럼명] [변경할 컬럼명] [컬럼 타입];
▶ STUDENT0 테이블의 SDEPT 컬럼명이 SDEPTNO으로 변경됨
ALTER TABLE ... MODIFY
: 테이블의 컬럼타입 변경
ALTER TABLE 테이블명 MODIFY [컬럼명] [변경할 타입];
ALTER TABLE 테이블명 CHANGE [컬럼명] [컬럼명] [변경할 타입];
▶ STUDENTS0 테이블의 구조를 확인하면 STEL 필드의 타입이 정상적으로 변경되었음을 볼 수 있음
▶ STEL 필드의 이름과 타입을 동시에 변경
- NOT NULL 제약조건 추가
ALTER TABLE 테이블명
MODIFY [컬럼명] [컬럼 타입] NOT NULL;
▶ STUDENT0 테이블의 STELNO 필드에 NOT NULL 제약조건을 추가
▶ STUDENT0 테이블의 구조를 확인해보면 NULL 값이 YES에서 NO로 변경되었음을 확인
ALTER TABLE ... DROP
- 제약조건 삭제
- FOREIGN KEY, CHECK
ALTER TABLE 테이블명
DROP 제약 조건 제약조건 이름;
- PRIMARY KEY
ALTER TABLE 테이블명
DROP PRIMARY KEY;
- UNIQUE
ALTER TABLE 테이블명
DROP INDEX 제약조건 이름
- 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;
RENAME ... TO ...
: 테이블 명 변경
RENAME TABLE 기존 테이블명 TO 새 테이블명;
OR
ALTER TABLE 기존 테이블명 RENAME 새 테이블명;
▶ STUDENT 테이블[새로운 테이블]과 STUDENT0 테이블[기존 테이블]이 동일함을 확인할 수 있음
DROP TABLE
: 테이블 삭제
DROP TABLE 테이블명;
▶ CTEST12 테이블의 정보 확인
▶ CTEST12 테이블 삭제
▶ 테이블 삭제 후 더이상 존재하지 않음을 확인할 수 있음
DEPT0 테이블에 DYEAR 컬럼을 추가해보자.
데이터 형식은 VARCHAR(10)으로 함.
▶ DEPT0 테이블의 모든 정보 출력
▶ DEPT0 테이블에 DYEAR 컬럼 추가
▶ DEPT0 테이블의 모든 정보를 출력해보면 컬럼이 정상적으로 추가되었음을 확인할 수 있음
DYEAR 컬럼에 DYEAR의 범위가 1960이상이고 2020 이하인 CHECK 제약 조건을 설정해보자.
제약 조건의 이름은 DEPT0_CK_DYEAR로 함
▶ DEPT0 테이블에 위 조건에 해당하는 DEPT0_CK_DYEAR 제약 조건을 설정
▶ DEPT0 테이블의 제약 조건을 확인해보면 정상적으로 생성되었음을 확인할 수 있음
DEPT0 테이블의 UNIQUE 제약 조건을 삭제 후 DEPT0 테이블의 전체 제약 조건을 확인해보자.
▶ DEPT0 테이블의 제약 조건을 확인
▶ DEPT0 테이블에서 UNIQUE 제약 조건 삭제
▶ DEPT0 테이블의 제약조건을 확인해보면 정상적으로 제거되었음을 확인할 수 있음
'Data Base Design System' 카테고리의 다른 글
Stored Program / Stored Procedure (0) | 2021.12.04 |
---|---|
Delete (0) | 2021.11.28 |
update (0) | 2021.11.27 |
테이블 복사 및 데이터 복사 (0) | 2021.11.24 |
Insert (0) | 2021.11.23 |