oracle表管理
oracle:
public用户是公共角色,所有的用户都是其成员。
user_sys_privs数据字典视图查看有关用户和权限的信息。在user_sys_privs数据字典视图中,包含了用户名称,系统权限和是否能转授权限
的标志等信息。
user_sys_privs数据字典视图的信息与当前用户紧密关联,随用户不同而不同。
user_tab_privs_made数据字典视图中存储了有关某个用户对另外一个用户授予的权限。该视图包含的信息有接受权限的用户(grantee)、对象
权限的目标对象(table_name)、授予权限的用户(grantor)、对象权限(privilege)、接受权限的用户能否将该权限转授予其它用户的标志
(grantable),以及该权限是否形成层次结构的标志.
user_col_privs_made数据字典视图中包括了有关列级的权限。
user_tab_privs_recd存储了有关某个用户接受的权限。
user_col_privs_recd存储有关列级对象的权限信息。
收回对象权限:
revoke object_privilege on object_name from user_name;
对表中列授予的权限,只能从整个表上收回,而不能从某个列上收回。
与收回系统权限不同的是,当某个用户的对象权限初收回之后,从该对象转授出去的权限也自动被收回。
创建同义词:
create [public] synonym synonym_name for object_name;
创建角色:
create role role_name
identified by role_password;
对于角色来说,可以授予对象权限,也可以授予系统权限,还可以把另一个角色授予给他。
user_role_privs:查看有关授予用户的角色信息。
role_sys_privs:查看有关授予某个角色的系统信息。
user_tables数据字典视图中包括了当前用户拥有的所有表的信息,而
all_tables数据字典包括了当前用户有访问权限的所有表的信息。
user_tab_columns中存储了当前用户所拥有的表中列的信息,
all_tab_columns中存储了当前用户可以访问的所有表中列的信息。
增加列:
alter table table_name
add column_name type;
更新列:
alter table table_name
modify column_name type;
可以更新列的数据类型的长度、数字列的精度、列的数据类型和列的默认值等。
删除列:
alter table table_name
drop column column_name;
定义非空约束:
alter table table_name
modify column_name [constraint constraint_name] {not null|null};
主键约束:
alter table table_name
add constraint constraint_name primary key(column_name[,column_name,..]);
惟一性约束:
惟一性约束强调所有列不允许有相同的值,但是,它的定义比主键约束弱,即它所在的列允许空值。
alter table table_name
add constraint constraint_name unique(column_name[,column_name,..]);
外键约束:
外键是指引用另一个表中的某个列或某几列、或本表中另一个列或另几个列的一个列或几个列。被引用的列应该是主键约束列,或是惟一性约
束列。
在外键的定义中,涉及到外键表、外键列、被引用表和被引用列等几个概念。如果成功创建了外键约束,那么系统将要求外键列中的数据必须
来自被引用列中的数据,被引用列中不存在的数据不能存储在外键列中。在一般情况下,当删除被引用表中数据时,该数据不能出现在外键列
中。如果外键列中存储了将要在被引用表中删除的数据,那么对被引用表删除数据的操作将失败。
如果在定义外键约束时使用了cascade关键字,那么在删除或更改被引用列中的数据时,外键列中的相同数据自动执行相应的操作。
alter table table_name
add constraint constraint_name
foreign key(column_name)
references ref_table_name(ref_column_name)
[on delete [cascade|set null]]
[on update [cascade]]
检查约束:
检查约束指表中的某一列或一组列的取值应该满足检查约束指定的条件。
alter table table_name
add constraint constraint_name
check(expression);
缺省约束:
可以是一个常量,也可以是一个由系统函数提供的数据。缺省约束只在插入操作过程中起作用。一个列上最多只能有一个缺省约束起作用。
alter table table_name
modify column_name type
default (constraint_expression);
禁止约束既可以在定义约束时执行,也可以对现有约束执行禁止操作。如果在定义约束时就禁止该约束起作用,那么可以在定义约束的最后使
用disable关键字。如果希望禁止已有的约束,那么可以使用disable constraint子句。
alter table table_name
disable constraint constraint_name;
激活被禁止的约束:
alter table table_name
enable [novalidate] constraint constraint_name;
其中novalidate表示在激活约束时不验证表中已有数据是否满足约束定义,若无该关键字,激活时系统将要验证表中的数据是否满足约束定义
。
user_constraints查看当前用户拥有的所有约束信息。
user_cons_columns查看当前用户拥有的约束和列之间的信息。
删除约束:
alter table table_name
drop constraint constraint_name;
更改表名:
rename old_table_name to new_table_name;
为表或表中列添加注释:
comment on table_name
is table_comment;
comment on column table_name.column_name
is column_comment;
注意:注释内容要用单引号引起来。
user_tab_comments查看当前用户所有表的注释。
user_col_comments查看当前用户所有表列的注释。