********************************* constraints(제약조건) 예제 *********************************************8
SQL> create table post(
2 post1 char(3),
3 post2 char(3),
4 addr varchar2(60),
5 constraints pk_post primary key(post1, post2)
6 );
테이블이 생성되었습니다.
SQL> create table member(
id number(4),
name varchar2(10) not null,
sex char(1),
jumin1 char(6),
jumin2 char(7),
tel varchar(15),
post1 char(3),
post2 char(3),
addr varchar2(60),
constraints pk_id primary key(id),
constraints uk_jumin unique(jumin1, jumin2),
constraints ch_sex check (sex in('1','2')),
constraints fk_post foreign key(post1, post2)
references post(post1, post2)
);
--------->설명.
creat table member(
id number(4),
constraints pk_01 primary key(id), //윗줄과 컴마 있어서 별개이므로 (id)꼭 써줘야 함.
name varchar(10) not null,
sex char(1),
constraints ch_01 check (sex in(1,2)), //char형이므로 원래 '1'이렇게 나타내야 함. but, 알아서 형 변환함.
jumin1 char(6),
jumin2 char(7),
constraints uk_01 unique(jumin1, jumin2),
constraints fk_01 foreign key(post1, post2)
references post(post1, post2); //foreign key는 참조하는 pk도 지정해야 함.
--------------------------------------------------------------------------------------------------------------------
예제>post테이블에 내용을 삽입하시오.
insert into post(post1, post2, addr)
values (101,110,'서울시 강서구 화곡동');
insert into post(post1, post2, addr)
values (101,110,'서울시 강서구 화곡1동');
문1>number테이블에 임의의 자료를 1개 삽입하시오.
insert into member(id, name, sex, jumin1, jumin2, tel, post1, post2, addr)
values(1234,'주야',2,'123456','1234567','123-4567',101,111,'서울시 강서구 화곡동');
예제>emp테이블에서 30번 부서에 근무하는 사원의 정보만 추출하여 emp_30 테이블을 생성하라.
단, 열은 사원번호, 이름, 업무, 입사일자, 급여, 보너스를 포함한다.
create table emp_30 as (select * from emp where deptno=30);
문2>emp테이블에서 부서별로 인원수, 평균 급여, 급여의 합, 최소 급여, 최대 급여를 포함하는
emp_deptno 테이블을 생성하라.
create table emp_deptno as(select count(*) c_person,round(avg(sal)) avg,
sum(sal) sum,min(sal) min,max(sal) max from emp group by deptno);
문3>emp테이블에서 사원번호, 이름,업무, 입사일자, 부서번호만 포함하는 emp_temp 테이블을
생성하는데 자료는 포함하지 않고 구조만 생성하라.
ex)select * from emp where 1=1;
create table emp_temp as (select empno, ename, job, hiredate, deptno from emp where 1=2);
#. 정리
1.create table tablenames(
컬럼 명시하는 방법
);
2.create table tablename as(서브쿼리)
3.제약조건(constraints)
constraints 제약조건이름 primary key(컬럼명, 컬럼명....32까지 가능),
constraints 제약조건이름 not null(컬럼명, ...),
constraints 제약조건이름 unique(컬럼명, ....),
constraints 제약조건이름 check (컬럼명, 조건 || 조건),
constraints 제약조건이름 foregin(컬럼명, ....)
references 참조테이블(참조컬럼명);
'DB(SQL)' 카테고리의 다른 글
[SQL] commit (0) | 2017.02.28 |
---|---|
[SQL] 테이블 생성/복사/삭제 (0) | 2017.02.28 |
[SQL] 함수 연습2 (0) | 2017.02.28 |
[SQL] 함수 연습1 (0) | 2017.02.28 |
[SQL] SQL 연습2 (0) | 2017.02.28 |