2015. 7. 14. 14:58 Naver Blog 백업용
테이블을 생성하는 CREATE TABLE
- CREATE TABLE TABLE_NAME
- CREATE TABLE NEWEMP(
EMPNO NUMBER(4),
ENAME VARCHAR(10),
SAL NUMBER(7,20));
- 서브쿼리로 테이블 생성하기: 기존의 TABLE과 동일한 테이블(구조,데이터) 생성
CREATE TABLE TEMPTABLE
AS
SELECT * FROM EMP WHERE 1=0;
단, 구조만 복사하는 것은 WHERE 1=0의 조건을 넣어줌
테이블 구조를 변경하는 ALTER TABLE
- ALTER TABLE TEMPTABLE ADD(JOB VARCHAR2(9)); --> 새로운 컬럼을 추가
- ALTER TABLE TEMPTABLE MODIFY(JOB VARCHAR2(30)); --> 컬럼의 구조를 변경
- ALTER TABLE TEMPTABLE DROP COLUMN JOB; --> 컬럼을 삭제
BUT, 컬럼을 삭제하는 일은 위험하기 때문에 SET UNUSED(JOB)과 같이 논리적으로
제한하는 방법을 사용함
임시테이블 생성
CREATE TABLE NEWEMP(
ID VARCHAR2(20),
NAME VARCHAR2(20),
ADDR VARCHAR2(20),
POINT NUMBER(20),
EMAIL VARCHAR2(20));
ALTER TABLE NEWEMP ADD GENDER VARCHAR2(20);
CHAPTER 13)
데이터 무결성을 위한 제약 조건
- 제약조건의 이름은 헷갈릴 수 있으므로 [TABLE명_컬럼명_제약조건명] 으로 설정한다.
필수 입력을 위한 NOT NULL 제약조건
- NOT NULL 제약조건 수정은 MODIFY로 밖에 안됨
- 예시
ALTER TABLE NEWEMP MODIFY ADDR CONSTRAINT NEWEMP_ADDR_NN NOT NULL; INSERT INTO NEWEMP(ID,NAME,ADDR) VALUES('LEE','이민호',NULL); INSERT INTO NEWEMP(ID,NAME,ADDR) VALUES('LEE','이민호',NULL) * ERROR at line 1:
ORA-01400: cannot insert NULL into ("JAVA"."NEWEMP"."ADDR") |
유일한 값만 허용하는 UNIQUE 제약조건 = 중복불가
+ 컬럼레벨 제약조건 / 테이블레벨 제약조건
- NOT NULL 제약조건은 컬럼레벨만 가능
- 테이블레벨 제약조건 예시
CREATE TABLE TEST(
ID VARCHAR2(20),
NAME VARCHAR2(20),
PRIMARY KEY(ID)
UNIQUE(NAME));
INSERT INTO TEST VALUES('JANG', '장동건');
INSERT INTO TEST VALUES('JANG2', '장동건'); -> UNIQUE 제약조건에 걸림
+ 제약 조건 변경하기(P.402)
- ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME CONSTRAINT_TYPE(COL)
- 예시
ALTER TABLE NEWEMP ADD CONSTRAINT NEWEMP_EMAIL_U UNIQUE(EMAIL); INSERT INTO NEWEMP(ID,NAME,EMAIL) VALUES('JANG2','장동건','ABC@ABC.CO.KR'); INSERT INTO NEWEMP(ID,NAME,EMAIL) VALUES('JANG3','장동건','ABC@ABC.CO.KR');
ERROR at line 1:
ORA-00001: unique constraint (JAVA.NEWEMP_EMAIL_U) violated |
데이터 구분을 위한 PRIMARY KEY 제약조건
참조 무결성을 위한 FOREIGN KEY 제약조건
- CREATE TABLE MYDEPT(
DEPTNO VARCHAR2(10) PRIMARY KEY,
DNAME VARCHAR2(20));
- CREATE TABLE MYEMP(
EMPNO VARCHAR2(10) PRIMARY KEY,
ENAME VARCHAR2(20),
DEPTNO VARCHAR2(10));
ALTER TABLE MYEMP ADD CONSTRAINT MYEMP_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES MYDEPT(DEPTNO);
INSERT INTO MYEMP VALUES('1111','장동건','001'); INSERT INTO MYEMP VALUES('2222','김희주','002'); INSERT INTO MYEMP VALUES('3333','이민호','003');
INSERT INTO MYEMP VALUES('3333','이민호','003') * ERROR at line 1: ORA-02291: integrity constraint (JAVA.MYEMP_DEPTNO_FK) violated - parent key not found |
CHECK와 DEFAULT의 제약조건
- GENDER COLUMN에 남자,여자만 들어갈 수 있도록 제약
ALTER TABLE TABLENAME
ADD CONSTRAINT TABLENAME_COL_CK CHECK(GENDER IN ('남자','여자'));
- 예시
ALTER TABLE NEWEMP ADD CONSTRAINT NEWEMP_GENDER_CK CHECK(GENDER IN ('남자','여자'));
INSERT INTO NEWEMP(ID,NAME,GENDER) VALUES('KIM','김희주','여자'); INSERT INTO NEWEMP(ID,NAME,GENDER) VALUES('KIM','김희주','여자인가');
ERROR at line 1:
ORA-02290: check constraint (JAVA.NEWEMP_GENDER_CK) violated |
'DB > Oracle' 카테고리의 다른 글
[Oracle] ORACLE 컴퓨터 이름이 한글일 때 트러블슈팅 (0) | 2021.05.07 |
---|---|
[Oracle] 뷰와 시퀀스 -1- (0) | 2021.05.07 |
[Oracle] 서브쿼리 -1- (0) | 2021.05.07 |
[Oracle] 조인(JOIN) -1- (0) | 2021.05.07 |
[Oracle] 검색(SELECT) -1- (0) | 2021.05.07 |