DB(SQL)

[SQL] 제약조건 연습

_주야 2017. 2. 28. 22:43

 

 

********************************* 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 참조테이블(참조컬럼명);

 

 

oracle-0810.txt

 

'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