본문 바로가기

빅데이터과정/SQL

#7_140623_마지막 문제

728x90
140623
점심과제

문제293. adams 라는 유저를 생성하고 adams 라는 유저에게 적절한 권한을 주고 adams 라는 유저로 접속해서 아래 테이블을 생성하시오. ename unique 제약을 걸고 sal 0~7000 사이의 데이터만 입력되도록 check 제약을 걸고 제약에 위반된 데이터를 입력해서 입력이 안 되는 insert 문장 작성하시오
테이블명 : emp500
컬럼명 empno, ename, sal

#scott 창에서
CREATE USER adams
IDENTIFIED BY tiger;
GRANT CONNECT TO adams;
GRANT UNLIMITED TABLESPACE TO adams;
GRANT CREATE TABLE TO adams;

#adams 창에서
create table emp500
(empno number(10),
ename varchar(10),
sal number(10));

alter table emp500
add constraint emp_sal_ck check(sal between 0 and 7000);

alter table emp500
add constraint emp_ename_un unique(ename);

insert into emp500(sal)
values(8000);
insert into emp500(sal)
*
ERROR at line 1:
ORA-02290: check constraint (ADAMS.EMP_SAL_CK) violated



#마무리 과제

마지막문제1. 부서 테이블에 토탈월급(sumsal) 컬럼을 추가하고 상호관련 서브쿼리 update 문을 이용해서 부서 테이블의 sumsal 을 해당 부서번호의 토탈월급으로 값을 갱신하시오

ALTER TABLE DEPT
ADD sumsal NUMBER(10);

SELECT * FROM DEPT;

UPDATE DEPT d
SET sumsal = (SELECT SUM(sal) FROM EMP e WHERE e.deptno=d.deptno);


마지막문제2. 사원 테이블에 아래의 제약을 각각 거시오

empno – primary key
ename – unique
sal – check(0~8000)
deptno – not null 제약을 거시오
위에서 생성한 제약을 모두 한꺼번에 삭제하는 스크립트를 data dictionary를 이용해서 생성하시오

ALTER TABLE EMP
ADD CONSTRAINT emp_empno_pk PRIMARY KEY(empno);

ALTER TABLE EMP
ADD CONSTRAINT emp_ename_un UNIQUE(ename);

ALTER TABLE EMP
ADD CONSTRAINT emp_sal_ck check(sal BETWEEN 0 AND 8000);

ALTER TABLE EMP
MODIFY sal CONSTRAINT emp_deptno_nn NOT NULL;

SELECT 'ALTER TABLE EMP drop CONSTRAINT ' || constraint_name || ';'
FROM user_constraints;






'빅데이터과정 > SQL ' 카테고리의 다른 글

#7_140623_DCL(Data Control Language)  (0) 2014.07.14
#7_140623_CORRELATED SUBQUERY  (0) 2014.07.14
#7_140623_EXISTS  (0) 2014.07.14
#7_140623_PAIRWISE  (0) 2014.07.14
#7_140623_ALTER TABLE  (0) 2014.07.14