日期:2014-05-16  浏览次数:20468 次

Oracle学习笔记(四)DCL和Transaction

1.delete和truncate的区别:

?

DELETE语句和TRUNCATE TABLE语句都可以删除表中的所有数据,但前者删除表的所有数据时,不会释放所占用的空间,并且操作可以撤销(ROLLBACK);后者删除表的所有数据时,执行速度更快,而且还会释放表,段所占用的空间,并且操作不能撤销(ROLLBACK)。

?2.设置保存点并且回滚。

?

SQL> savepoint sp1;

保存点已创建。

SQL> update stu_grade set score=300 where cid=10201;

已更新 1 行。

SQL> select * from stu_grade;

       SID        CID      SCORE
---------- ---------- ----------
     10101      10101         87
     10101      10201        300
     10101      10301         79
SQL> rollback to  sp1;

回退已完成。

SQL> select * from stu_grade;

       SID        CID      SCORE
---------- ---------- ----------
     10101      10101         87
     10101      10201        100
     10101      10301         79

?3.数据库的权限:

? CREATE SESSION:连接到数据库

??CREATE SEQUENCE:创建序列。序列是一些列数字用来自动填充主键列

? CREATE SYNONYM:创建同名对象,同名对象可以用于引用其他模式中的表。

? CREATE TABLE:创建表。

? CREATE ANY TABLE:在任何模式中创建表。

? DROP TABLE:删除表。

? DROP ANY TABLE:删除任何模式中的表。

? CREATE PROCEDURE:创建存储过程。

? EXECUTE?ANY PROCEDURE:执行任何存储过程。

? CREATE USER:创建用户。

? CREATE VIEW:创建视图。

? DROP USER:删除用户。

?4.实例

?

1.建立用户,默认没有登录的权限,必须赋予create session的权限。
 SQL> create user test identified by test;

用户已创建。

SQL> conn test/test;
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。
-----------------------------------------------------
赋权限之后:
SQL> grant create session to test;

授权成功。

SQL> conn test/test;
已连接。

2.修改用户密码
 SQL> alter user test identified by mytest;
用户已更改。
SQL> conn test/mytest;
已连接。

3.删除用户
 SQL> drop user test;
 用户已删除。

4.查看授予用户scott的系统权限
  SQL> select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
SCOTT                          UNLIMITED TABLESPACE                     NO

5.收回scott的用户权限
  SQL>revoke user_sys_privs from scott;

6.授予用户scott在表teachers上wage、bonus的update权限
  SQL>grant update  (wage,bonus) on teachers to scott with grant option;
  SQL> select * from user_tab_privs_recd;

OWNER                          TABLE_NAME
------------------------------ ------------------------------
GRANTOR                        PRIVILEGE                                GRA HIE
------------------------------ ---------------------------------------- --- ---
SYSTEM                         MVIEW_WORKLOAD
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_FILTER
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_LOG
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_FILTERINSTANCE
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_RECOMMENDATIONS
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_EVALUATIONS
SYSTEM                         SELECT                                   YES NO

SYSTEM                         MVIEW_EXCEPTIONS
SYSTEM                         SELECT                                   YES NO

SYSTEM                         DEF$_AQCALL
SYSTEM                         SELECT                                   YES NO

SYSTEM                         DEF$_ERROR

7.创建表
 SQL> create table teacher as select * from teachers;

表已创建。

SQL> select * from teacher;

       TID NAME     TITLE  HIREDATE            BONUS       WAGE        DID
---------- -------- ------ -------------- ---------- ---------- ----------
     10101 王彤     教授   01-9月 -90           1000       3000        101
     10104 孔世杰   副教授 06-7月 -94