1 2 3 4 5 6 7 8 | /* DDL: auto commit DML: commit해야함 DML 작업 후 DDL -> 그 전 DML 명령어까지 commit */ | cs |
1 2 3 4 5 6 7 8 | --# 테이블 생성 create table emp01 ( empno number(4), ename varchar2(20), -- 영문자 20자리, 한글 10자리 sal number(7,2) -- 7자리 중 소수점 2자리 ); | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | --# 서브쿼리로 테이블 생성 /* - 자료형 타입을 가져옴 (구조 + size) - 테이블 백업할 때 - 테이블 구조 분할해서 만들 때 - 제약 조건은 가져오지 X -> alter 명령어로 추가 */ --#1. 서브쿼리로 테이블 생성 - 테이블 create table emp02 as select * from emp ; --#2. 서브 쿼리로 테이블 생성 - 컬럼 지정 create table emp03 as select empno, ename, sal from emp ; --#3. 서브쿼리로 테이블 생성 - where절로 행 지정 create table emp_sales as select * from emp where deptno = 30 -- 결과는 테이블 ; --#4. 서브쿼리로 테이블 생성 - 구조만 복사: where절 조건 항상 거짓 create table emp06 as select * from emp where 10=50 ; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* 테이블 구조 변경: alter table 컬럼 추가, 수정, 삭제 */ --# 컬럼 추가 -- 맨 마지막에 추가, 원하는 위치 삽입 불가 -- 이전에 추가한 row 존재-> 컬럼값 null로 입력 alter table emp03 add(job varchar2(9)); --# 컬럼 변경 -- 타입, 크기, 기본값등을 변경한다는 뜻 alter table emp03 modify (job varchar2 (30)); --# 컬럼 삭제 alter table emp03 drop column job; | cs |
1 2 3 4 | --# ROW 삭제 -- 물리적(DDL): TRUNCATE 테이블 모든 row 제거 -- 논리적(DML): DELETE TRUNCATE TABLE emp03; | cs |
1 2 | --# 테이블명 변경 RENAME rename emp02 to test; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | --#제약 조건 정의 -- 컬럼 레벨 -- 테이블 레벨 --# not null 제약조건 -- 1. 컬럼 레벨에서만 가능 -- 2. 지정하지 않으면 해당 컬럼 null 저장 가능 */ --not null create table emp01( empno number(4) not null, ename varchar2(20) not null, job varchar2(20), deptno number(2) ); insert into emp01 values (9001,NULL,NULL,10); -- 제약조건 위반 insert into emp01 (ENAME,JOB) values ('TIGER','MANAGER'); -- 암묵적 null 추가( null,'tiger','manager',null); -- insert는 row단위로 값이 추가된다. --# Unique 제약 조건 create table emp03 ( empno number(4) unique, ename varchar2(20) not null, job varchar2(20), deptno number(2) ); --# UNIQUE -- 특정 컬럼에 대해 중복 X -- 컬럼 레벨 기술 -- 예시: 주민번호, 전화번호, email create table emp03 ( empno number(4) unique, ename varchar2(20) not null, job varchar2(20), deptno number(2) ); --# 무결성 제약조건명 기술 create table emp03 ( empno number(4) constraint emp03_empno_uk unique, -- 논리적 제약 사항 ename varchar2(20) not null, job varchar2(20), deptno number(2) ); --# primary key 제약 조건 create table emp03 ( empno number(4) constraint emp03_empno_pk primary key, ename varchar2(20) not null, job varchar2(20), deptno number(2) ); --# 참조 무결성을 위한 foreign key -- 부모 테이블의 primary key를 알아야(유일) 자식 테이블의 foreign key를 사용할 수 있다. -- 자식테이블 : 참조하지 않으면 null을 사용하여라 create table emp03 ( empno number(4) not null, ename varchar2(20) not null, job varchar2(20), deptno number(2) constraint emp03_deptno_fk references dept(deptno) --references 참조하고자하는 테이블명(컬럼명) ); --# CHECK 제약 조건 -- 설정 값 이외 값 추가 제한 -- 값의 범위, 특정 패턴의 숫자 or 문자값 -- data dictionary에 정의: 데이터 표준화 create table emp03 ( empno number(4) constraint emp03_empno_pk primary key, ename varchar2(20) not null, job varchar2(20), sal number(7,2) constraint emp03_sal_ck check(sal between 500 and 5000), gender char(1) constraint emp03_gender_ck check(gender in ('m','f')), deptno number(2) constraint emp03_dept_fk references dept(deptno) --references 참조하고자하는 테이블명(컬럼명) ); --# DEFAULT 제약 조건 -- 아무것도 입력하지 않았을 때 defalut 입력 create table emp03 ( empno number(4) constraint emp03_empno_pk primary key, ename varchar2(20) not null, job varchar2(20) default 'MANAGER', -- 아무것도 정의하지 않으면 manager 입력 sal number(7,2) constraint emp03_sal_ck check(sal between 500 and 5000), gender char(1) constraint emp03_gender_ck check(gender in ('m','f')), deptno number(2) constraint emp03_dept_fk references dept(deptno) --references 참조하고자하는 테이블명(컬럼명) ); | cs |
'Develop > DataBase' 카테고리의 다른 글
트랜잭션 (0) | 2018.07.11 |
---|---|
테이블의 내용 추가, 수정, 삭제하는 DML (0) | 2018.07.11 |
Oracle 11g 다운로드 (0) | 2018.07.10 |
Oracle 11g 설치 (0) | 2018.07.10 |
SQL 기초 (0) | 2018.07.10 |
댓글