Query: select 문의 6가지절, 조인, 서브쿼리DML문(Data Manipulation Language): insert, update, delete, merge, selectTCL문(Transaction Control Language): commit, rollback, savepointDDL문(Data Definition Language): create, alter, drop, truncate, renameDCL문(Data Contorl Language): grant, revoke
: insert나 update나 delete를 하는 중간중간 rollback 할 지점을 지정하는 것
select * from emp;
update emp
set comm = 0;
-- savepoint a 지정
savepoint a;
update emp
set sal = 0;
-- savepoint b 지정
savepoint b;
delete from emp;
select * from emp;
-- emp 테이블을 delete 하기 전 상태로 돌아감
rollback to b;
select * from emp;
: 오라클 테이블의 이름을 변경하는 명령어
rename emp to emp1000;
select * from emp1000;
rename emp1000 to emp;
select * from emp;
alter table emp
add email varchar2(50);
select * from emp;
alter table emp
drop column sal;
select * from emp;
💡 column이 삭제되면
--> rollback도 안되고 flashback도 안됨
alter table emp
modify job varchar2(50);
desc emp;
alter table emp
add address varchar2(50);
alter table emp
drop column address;
-- c##smith 유저 생성
create user c##smith
identified by tiger;
grant connect to c##smith;
c##scott 유저
-- c##smith에게 emp 테이블에 대한 권한 부여
grant select on emp to c##smith;
-- synonym 만듦
create public synonym emp
for c##scott.emp;
-- emp 테이블 조회권한 회수
revoke select on emp from c##smith;
c##smith 유저
-- user 조회
show user;
-- scott 유저의 emp 테이블이 조회됨
-- synonym 만들기 전이라 c##scott.emp라고 꼭 써줘야됨
select * from c##scott.emp;
-- scott 유저에서 synonym 만든 후
-- emp만 써도 조회됨
select * from emp;

grant select on 테이블명 to 유저명;
revoke select on 테이블명 from 유저명;
-- 가지고 있는 모든 table 조회
select table_name from user_tables;
select 'grant select on ' || table_name || ' to c##smith;'
from user_tables;
-- c##smith에게 권한 부여
grant select on EMP21 to c##smith;
grant select on TELECOM_TABLE to c##smith;
grant select on ORDER2 to c##smith;
grant select on CRIME_TIME to c##smith;
grant select on EMP2 to c##smith;
grant select on SALGRADE to c##smith;
...
select 'create public synonym ' || table_name || ' for c##scott.emp;'
from user_tables;
-- synonym 만듦
create public synonym EMP21 for c##scott.emp;
create public synonym TELECOM_TABLE for c##scott.emp;
create public synonym ORDER2 for c##scott.emp;
create public synonym CRIME_TIME for c##scott.emp;
create public synonym EMP2 for c##scott.emp;
create public synonym SALGRADE for c##scott.emp;
...