-- *cascade 옵션1) 부모테이블과 자식테이블 간의 참조 설정(외래키)이 되어 있을 때 부모테이블의 제약 조건을 비활성화라면 이를 참조하고 있는 자식 테이블의 제약 조건까지 같이 비활성화 시켜 주는 옵션2) 부모테이블의 제약조건을 삭제하면 이를 참조하고 있는 자식테이블의 제약조건도 같이 삭제된다 alter table dept06disable primary key cascade; select constraint_name, constraint_type, table_name, r_constraint_name, statusfrom user_constraintswhere table_name in('DEPT06', 'EMP06'); alter table dept06drop primary key; --erro..
-- 시퀀스(Sequence) -- 오라클에서는 행(레코드)을 구분하기 위해서 기본 키(프라이머리 키)를 두고 있는데 기본 키는 중복된 값을 가질 수 있으므로 항상 고유한 값을 가져야 한다-- 기본 키가 고유한 값을 갖도록 사용자가 직접 값을 생성해 내려면 부담이 크다-- 테이블 내의 고유한 숫자를 자동으로 생성하는 자동 번호 생성해 주는 기능이 시퀀스이다-- 시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있다-- 테이블 생성 후 시퀀스(일련번호)를 따로 만들어야 한다 [1] 샘플 테이블 생성create table memos( num number(4) constraint memos_num_pk primary key, name varchar2(20) constraint memos_name_nn..
============================== -- 다중 행 서브쿼리문-- 다중 행 연산자(Multiple Row Operator)와 함께 사용해야 한다 -- 1) [in 연산자]-- 메인 쿼리의 비교 조건 ( ' = ' 연산자로비교할 경우)이 서브쿼리이 결과 중에서 하나라도 일치(or)하면 참이다 -- [예제] 급여를 3000 이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력해 보자 -- 3000 이상인 사람부터 확인select * from emp; -- 3000 이상인 부서 확인select deptnofrom empwhere sal >= 3000; -- error 실행문---select ename, sal, deptnofrom empwhere deptno = (s..
-- [12] 제약 조건 제거하기 alter table emp10drop primary key; -- emp10 안의 primary key 의 제약조건이 삭제된다 -- [13] 제약 조건(외래키) 컬럼 삭제-- DISABLE CONSTRAIN : 제약조건을 일시적으로 비활성화 할 수 있다-- ENABLE CONSTRAINT : 비활성화된 제약 조건을 해제하여 다시 활성화 할 수 있다 delete from dept06where deptno = 30; -- error alter table emp06disable constraint emp06_deptno_fk; insert into dept06values (30, '총무부', '중구'); alter table emp06enable constraint emp0..
-- [10] 제약 조건 추가하기 create table emp10( empno number(4), ename varchar2(20), job varchar2(20), deptno number(2)); alter table emp10 -- DDL에서 추가 add / 수정 모디파이(mofify??)add constraint emp10_empno_pkprimary key(empno); alter table emp10add constraint emp10_deptno_pkforeign key(deptno) references dept06(deptno); -- [11] not null 제약 조건 추가하기 alter table emp10add constraint emp10_ename_nn not null(ename..
-- [10] 제약 조건 추가하기 create table emp10( empno number(4), ename varchar2(20), job varchar2(20), deptno number(2)); alter table emp10 -- DDL에서 추가 add / 수정 모디파이(mofify??)add constraint emp10_empno_pkprimary key(empno); alter table emp10add constraint emp10_deptno_pkforeign key(deptno) references dept06(deptno);
====아래는 9번으로 발행====== -- [9] Default 제약 조건 명시 방법 -- 1) 컬럼 레벨 방식 제약 조건설정 : 조건명을 명시해서 제약 조건을 설정하는 방식이다create table dept09( deptno number(2) constraint dept09_deptno_pk primary key, dname varchar2(20) constraint dept09_dname_nn not null, loc varchar2(20) default 'SEOUL'); -- 2) 테이블 레벨 방식 제약 조건설정create table emp09( empno number(4), ename varchar2(20) constraint emp09_ename_nn not null, job varchar2(..
-- [13] Top 쿼리 -- 상위 몇 개의 data만을 출력하고 싶을 때-- 1) 사원 중에서 입사일이 가장 빠른 사원 5명(top~5)만을 얻어오는 질의문-- 2) 사원 중에서 급여를 가장 많이 받는 사원 7명만을 얻어오는 질의문-- 3) TOP-N을 구하기 위해 rownum & inline view가 사용 -- [rownum]의 특징-- 1) 오라클에서만 지원하는 기능-- 2) 오름차순 정렬을 하더라도 rownum 컬럼 값은 바뀌지 않는다-- 3) 오라클이 내부적으로 부여하는데 insert 문을 이용하는 입력하면 입력한 순서에 따라 1씩 증가되면서 값이 지정-- 4) 정렬된 순서대로 rownum 컬럼 값이 매겨지도록 하려면 새로운 테이블이나 뷰로 새롭게 데이터를 저장해야만 한다 -- [rownum..
2020041406 /데이터 제어어 DCL(Data Control Language) 권한(Role) 권한(Role)사용자에게 보다 효율적으로권한을 부여할 수 있도록 여러 개의 권한을 묶어 놓은 것이다 -- [13] 권한(Role)create user tester3 identified by tiger; grant connect, resource to tester3; SQL> conn tester3/tiger SQL> select * from dict where table_name like '%ROLE%';
-- [8] Default 제약 조건 설정 방법 실습 -- 지역명(LOC) 컬럼에 아무 값도 입력하지 않을 때 Default 값으로 'SEOUL' 입력되게 한다 create table dept08( deptno number(2) constraint dept08_deptno_pk primary key, dname varchar2(20) constraint dept08_dname_nn not null, loc varchar2(20) default 'SEOUL'); insert into dept08(deptno, dname) values(10, '회계부');select * from dept08; --확인 insert into dept08 values(20, '연구소', '종로구');select * from d..
-- [11] 뷰 생성에 사용되는 다양한 옵션-- with read only-- with read only 차이점 : 뷰를 설정할 때 조건으로 설정한 컬럼이 아닌 컬럼에 대해서는 변경이 가능 create table emp_copy03asselect * from emp; create or replace view view_check30asselect empno, ename, sal, comm, deptnofrom emp_copy03where deptno = 30; select * from view_check30; update view_check30set comm = 1000; select * from view_check30; select * from emp_copy03; create or replace vi..