grant select on 테이블명 to 사용자계정;
==> select 할 수 있는 권한을 사용자에게 부여
revoke select on 테이블명 from 사용자계정;
==> 사용자로부터 테이블에 대한 select 권한을 제거
<기본문법>
create or replace view 뷰이름 as select ~~
==> 만약에 동일한 이름의 뷰가 있으면 수정해주고, 없으면 만들어준다.
예시) vw_customer는 주소가 '대한민국'인 고객을 보여준다. 이 뷰를 주소가 '영국'인 고객으로 변경해보자. 고객번호, 이름, 주소를 조회하도록 한다.
create or replace view vw_customer as
select custid, name, address from customer
where address like '%영국%';
<기본문법>
drop view 뷰이름
예시)
select object_name from user_objects;
예시)
select table_name from user_tables;
이름
----------------------------------------------------------------------------
OWNER
CONSTRAINT_NAME //제약명
CONSTRAINT_TYPE //제약의종류
TABLE_NAME //테이블이름
STATUS //제약의 상태(때로는 제약을 활성화, 비활성화 시킬수 있다.)
예시)
SYS_C008322 R EMP ENABLED
==> emp 테이블에 참조키에 대한 제약이 활성화된 상태이다.
즉, emp 테이블의 부서번호는 반드시 dept 테이블의 부서번호를 참조해야 한다.
<기본문법>
alter table 테이블명 disable constraint 제약명;
<기본문법>
alter table 테이블명 enable constraint 제약명;
==> 제약에 대한 만족하지 않는 데이터가 있으면 제약을 활성화할 수 없다.
<기본문법>
create index 인덱스명 on 테이블명(컬럼명);
예시) 사원 이름에 대하여 인덱스를 생성
create index idx_ename on emp(ename);
<기본문법>
create index 인덱스명 on 테이블명(컬럼1, 컬럼2);
<기본문법>
alter index 인덱스명 rebuild;
<종류>
<기본문법>
create or replace procedure 프로시저이름(변수이름 모드 자료형, ) --> 모드 in(입력용), out(출력용)
as
지역변수 선언
begin
프로시저가 해야할 명령어(들)
end;
/
예시) book 테이블에 새로운 레코드를 추가하는 프로시저 생성
create or replace procedure
insertBook(
p_bookid in number,
p_bookname in varchar2,
p_publisher in varchar2,
p_price in number
)
as
begin
insert into book(bookid, bookname, publisher, price)
values(p_bookid, p_bookname, p_publisher, p_price);
end;
/
show errors;
예시) 고객번호, 고객명, 주소, 전화를 매개변수로 전달받아 새로운 고객을 등록하는 프로시저를 만들고, 호출해보자.
create or replace procedure
insertCustomer(
p_custid in number,
p_name in varchar2,
p_address in varchar2,
p_phone in varchar2
)
as
begin
insert into customer(custid, name, address, phone)
values(p_custid, p_name, p_address, p_phone);
end;
/
예시) 부서위치를 매개변수로 전달받아 그 위치에 근무하는 모든 사원이름을 출력하는 프로시저를 생성하고 호출
create or replace procedure
printEmp(
p_dloc varchar2
)
as
p_ename varchar2(20);
cursor c is select ename from emp where dno in (select dno from dept where dloc = p_dloc);
begin
open c; //커저를 동작
loop //루프를 돈다.
fetch c into p_ename; //커저에 있는 것을 하나씩 뽑아온다.
exit when c%NOTFOUND; // 더이상 뽑아올 레코드가 없으면 exit한다.
dbms_output.put_line(p_ename); //뽑아올 사원이름을 출력
end loop; //루프를 닫아준다.
close c; //커저를 닫아준다.
end;
/
create or replace trigger 트리거이름
시점 명령어 on 테이블명 for each row
declare
변수선언
begin
트리거가 해야할 명령어(들)
end;
/