⚫테이블의 이름 변경
형식) RENAME 기존테이블명 TO 변경테이블명
--BONUS 테이블의 이름을 COMM으로 변경
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME IN ('BONUS','COMM');
RENAME BONUS TO COMM;
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME IN ('BONUS','COMM');
⚫ 테이블의 속성 및 제약조건 변경
형식)ALTER TABLE 테이블명 변경옵션
--변경옵션에 의해 테이블 속성의 추가, 삭제, 변경이 가능하여 제약조건은 추가, 삭제 가능
1) USER1 테이블 생성
USER1 테이블 생성 - 회원번호(숫자형), 회원이름(문자형), 전화번호(문자형)
CREATE TABLE USER1(NO NUMBER(4),NAME VARCHAR2(20),PHONE VARCHAR2(15));
DESC USER1;
--USER1 테이블에 행 삽입
INSERT INTO USER1 VALUES(1000,'홍길동','010-1234-5678');
SELECT * FROM USER1;
COMMIT;
2) 테이블 속성 추가 - 기본값 및 컬럼 수준의 제약 조건 부여 가능
형식)ALTER TABLE 테이블명 ADD(컬럼명 자료형[(크기)] [DEFAULT 기본값] [컬럼제약조건]
--USER1 테이블에 주소(문자형) 속성 추가
--테이블에 행이 저장된 상태에서 속성 추가 가능 - 기존 행의 추가 컬럼에는 기본값이 자동 저장
ALTER TABLE USER1 ADD(ADDRESS VARCHAR2(100));
DESC USER1;
SELECT * FROM USER1;
UPDATE USER1 SET ADDRESS='서울시 강남구' WHERE NO=1000;--추가된 컬럼의 컬럼값 변경
SELECT * FROM USER1;
COMMIT;
3) 테이블 속성의 자료형 및 크기 변경 - 기본값 및 컬럼 수준의 제약 조건 부여 가능
형식)ALTER TABLE 테이블명 MODIFY(컬럼명 자료형[(크기)] [DEFAULT 기본값] [컬럼제약조건]
--USER1 테이블 초기화
TRUNCATE TABLE USER1;
SELECT * FROM USER1;
--USER1 테이블의 NO 컬럼의 자료형을 숫자형에서 문자형으로 변경
DESC USER1;
ALTER TABLE USER1 MODIFY(NO VARCHAR2(4));
--USER1 테이블에 행 삽입
INSERT INTO USER1 VALUES('1000','홍길동','010-1234-5678','서울시 강남구');
SELECT * FROM USER1;
COMMIT;
--USER1 테이블의 NO컬럼의 자료형을 문자형에서 숫자형으로 변경
--테이블 속성의 자료형을 변경할 컬럼에 값이 저장되어 있는 경우 자료형 변경 불가능
ALTER TABLE USER1 MODIFY(NO NUMBER(4));--자료형을 변경할 컬럼에 값이 저장되어 있어 에러 발생
--USER1 테이블의 NAME 컬럼 크기를 20BYTE에서 10BYTE로 변경 - 컬럼에 값이 저장되어 있어도 컬럼 크기는 변경 가능
DESC USER1;
ALTER TABLE USER1 MODIFY(NAME VARCHAR2(10));
--USER1 테이블의 NAME 컬럼 크기를 10BYTE에서 5BYTE로 변경
ALTER TABLE USER1 MODIFY(NAME VARCHAR2(5));--컬럼에 저장된 값보다 작게끔 컬럼 크기를 줄일 경우 에러 발생
4) 테이블 속성 삭제 - 테이블 속성에 저장된 모든 컬럼값 삭제
형식)ALTER TABLE 테이블명 DROP COLUMN 컬럼명
--USER1 테이블의 PHONE 컬럼 삭제
DESC USER1;
ALTER TABLE USER1 DROP COLUMN PHONE;
DESC USER1;
SELECT * FROM USER1;
5) 테이블의 컬럼명 변경
형식)ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경컬럼명
--USER1 테이블의 ADDRESS 컬럼명을 ADDR로 변경
DESC USER1;
ALTER TABLE USER1 RENAME COLUMN ADDRESS TO ADDR;
DESC USER1;
6) 제약조건 추가
6-1) 테이블의 속성 추가 또는 변경시 컬럼 수준의 제약조건 부여 가능(modify 사용)
--USER1 테이블의 NAME 컬럼에 NOT NULL 제약조건 부여
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='USER1';
ALTER TABLE USER1 MODIFY(NAME VARCHAR2(10) CONSTRAINT USER1_NAME_NN NOT NULL);
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='USER1';
6-2) ALTER TABLE 명령에 ADD 옵션을 사용하여 테이블 수준의 제약조건 부여 가능(modify보다 add 옵션 사용 권장)
형식) ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건
--USER1 테이블의 NO 컬럼에 PRIMARY KEY 제약조건 부여
ALTER TABLE USER1 ADD CONSTRAINT USER1_NO_PK PRIMARY KEY(NO);
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='USER1';
7) 제약조건 회수(삭제) - ALTER TABLE 명령에 DROP 옵션을 사용하여 제약조건 회수(삭제) 가능
형식) ALTER TABLE 테이블명 DROP {PRIMARY KEY|CONSTAINT 제약조건명}
--USER1 테이블의 NAME 컬럼에 NOT NULL 제약조건 회수
ALTER TABLE USER1 DROP CONSTRAINT USER1_NAME_NN;
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='USER1';
--USER1 테이블의 NO 컬럼에 PRIMARY KEY 제약조건 회수
ALTER TABLE USER1 DROP PRIMARY KEY;
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='USER1';
'Database > Oracle' 카테고리의 다른 글
[SQL-Oracle]시퀀스(SEQUENCE) (0) | 2023.12.07 |
---|---|
[SQL-Oracle]GENERATED AS IDENTITY(식별자 컬럼) (0) | 2023.12.07 |
[SQL-Oracle]DDL-DROP, TRUNCATE(삭제) (1) | 2023.12.06 |
[SQL-Oracle]DDL-CREATE(서브쿼리 사용) (1) | 2023.12.06 |
[SQL-Oracle]제약조건 - PRIMARY KEY, FOREIGN KEY (0) | 2023.12.06 |