ORACLE中数据字典视图分为3大类, 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES, INDEXES, OBJECTS, USERS等。
1.查看所有用户:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用户系统权限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
6.查看当前用户的缺省表空间
select username,default_tablespace from user_users;
7. 查看某个角色的具体权限,如grant connect,resource,create session,create view to TEST;查看RESOURCE具有那些权限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
1. 语句:
(一)查询:SELECT
数据操作语句:DML(数据的插入INSERT、删除DELETE、修改UPDATE、合并MERGE)
(二)合并:把一个表中的数据合并到另一个表中去,如果数据在原表中存在做UPDATE,否则INSERT(9I独有)。
(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、
SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。
(四)数据定义语句(DDL):对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改
(五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
2. SQL语句说明:
(1)语句文本的书写不区分大小写。(但字符串在作为值的时候要注意大小写)
(2)语句可以写单行也可以写多行。
(3)关键字不能缩写或跨行。
(4)语句通常被分多行书写。
(5)缩进被用于提高语句的可读性。
3.对表的基本操作
建立一种简单的表我们已经在笔记一中进行的说明,当然表的结构需要改动时还需要其它的命令(在dos下操作)
(1) 增加字段:alter table 表名 add (字段名 字段类型)
(2) 删除字段:alter table 表名 drop column 字段名
(3) 更改字段名: alter table 表名 rename column 旧字段名 to 新字段名
(4) 修改字段: alter table 表名 modify( 字段 类型),(此时应注意的问题,更改时要看具体值情况之间的转达换, 改为字符类型时,必须要为空)not null约束是使用alter table .. modify (..,not null),来加上的。
(5) 增加约束:alter table 表名 add constraint [约束名] 约束(字段); 只能够增加表级约束。
(6) 解除约束:(删除约束) alter table 表名 drop 约束; (对于主键约束可以直接用此方法,因为一张表中只有一个主键约束名, 注意如果主键此时还有其它表引用时删除主键时会出错)
alter table 表名 drop primary key cascade;
(如果有子表引用主键时,要用此语法来删除主键,这时子表还存在只是子表中的外键约束被及联删除了)
alter table 表名 drop constraint 约束名;
(7) 添加外键 alter table 表名 add constraint [约束名] foreign key(字段名) references 表名(字段名)
(8) 使约束失效或者生效:
i. alter table 表名 disable primary key; (相当于把一个表的主键禁用)
ii. alter table 表名 enable primary key; enable 时会自动去检查表的记录是不是符合要求,如果有脏数据时必须要先删除脏数据才可以 enable
(9) 重命名表: rename 旧表名 to 新表名
(10) 删除表 :trucate table 表名, 表结构还在,数据全部删除,释放表所占的空间,不支持回退,常用删除大表
1. drop table 表名
(11)当前用户的所有表: select table_name from user_tables;
二.oracle权限
1.系统权限:对表的权限
a)创建用户之后,还不能对创建表
b)授权:
i. grant connect to 用户名(连接的权限)
ii. grant resource to 用户名(访问资源的权限)
iii. grant create session to 用户名
iv. grant create table to 用户名(有了创建表的权利就能对表进行其它的操作)
v. grant unlimited tablespace to 用户名
vi. 对所有的用户有授予这个权限:grant create table to public(public 表示所有的用户)
vii. 撤销权限:把grant换成revoke
viii. 查看当前用户的系统权限:select * from user_sys_privs(系统提供的表,用户提供系统信息)
ix. create table 与create any table的区别:前者只能给当前用户创建表 ,而后者可以给其它的用户创建表
2.对象权限:用户与用户之间的权限。如果不授权的话,当前用户是不能访问另外一个用户的表(对于普通用户来讲) , 对象权限可以控制到列上
i. 把当前用户表的权限授予给另外一个用户:grant select/insert[某列]/delete/update[某列] on 表名 to 用户名,这样另外一个用户就可以对当前用户指定的表进行基本操作
ii. 授予所有的权限给另外一个用户: grant all on 表名 to 用户名
iii. 查看当前用户的对象权限: select * from user_tab_privs;