七大对象:用户、表、约束、序列、视图、同义词和索引
知识点一:用户 - User - @H_502_2@账户、管理员-@H_502_2@一切对象的宿主
@H_502_2@
角色:
3@H_502_2@种标准角色:select*fromdba_sys_privs wheregrantee ='CONNECT'
Oracle@H_502_2@为了兼容以前的版本,提供了三种标准的角色(role)@H_502_2@:connect@H_502_2@、resource@H_502_2@和dba@H_502_2@。
1. connect role(@H_502_2@连接角色)
grant connect to smith; |
2. resource role(@H_502_2@资源角色)
grant connect,resourceto smith; |
3. dba role(@H_502_2@数据库管理员角色)
dba role@H_502_2@拥有所有的系统权限----@H_502_2@包括无限制的空间限额和给其他用户授予各种权限的能力。system@H_502_2@由dba@H_502_2@用户拥有。
注意:撤消一个用户的所有权限,并不意味着从oracle@H_502_2@中删除了这个用户, 也不会破坏用户创建的任何表;@H_502_2@只是简单禁止其对这些表的访问。其他要访问这些表的用户可以象以前那样地访问这些表。
创建角色
除了前面讲到的三种系统角色----connect@H_502_2@、resource@H_502_2@和dba@H_502_2@,用户还可以在oracle@H_502_2@创建自己的role@H_502_2@。用户创建的role@H_502_2@可以由表或系统权限或两者的组合构成。为了创建role@H_502_2@,用户必须具有create role@H_502_2@系统权限。
create role@H_502_2@命令的实例:
这条命令创建了一个名为student@H_502_2@的role@H_502_2@:
create role student; |
给student@H_502_2@角色授权:
grant create session to student; |
grant student to sunny; |
删除角色
drop role student; |
注意:指定的role@H_502_2@连同与之相关的权限将从数据库中全部删除。
@H_502_2@
知识点二:表 –table -- @H_502_2@ 维护使用sql@H_502_2@语句完成数据存储
@H_502_2@
primary key,
unique
default
check
知识点三:约束 –constraint –数据完整性和一致性
大体分类:实体完整性 -- @H_502_2@减少数据冗余 -- @H_502_2@主键约束(非空,唯一)
域完整性 -- @H_502_2@数据的准确性 -- check@H_502_2@约束(default@H_502_2@)
引用完整性 -- @H_502_2@数据的一致性 -- @H_502_2@外键约束
Oracle@H_502_2@约束对象5@H_502_2@大分类:主键(primary key@H_502_2@)、非空(not null@H_502_2@)、唯一性(unique@H_502_2@)、检查(check@H_502_2@)、外键(foreign key@H_502_2@)
创建约束的两种方式:create table@H_502_2@添加约束、alter table @H_502_2@添加约束
总结:
添加约束【主键、唯一、check@H_502_2@、foreign key@H_502_2@】
Alter table @H_502_2@表名 add [constraint @H_502_2@自定义约束名] select * from user_constraints; select * from user_cols_cons
primary key() |
unique() |
check() | @H_502_2@列名 between 0 and 100 | @H_502_2@列名 in(@H_502_2@‘男’,@H_502_2@’女’)
foreign key() references @H_502_2@ 主键表名(@H_502_2@主键列)
添加约束【非空、缺省】
Altert table @H_502_2@表名 modify (@H_502_2@列名 非空 | @H_502_2@缺省)
知识点四:序列(sequence@H_502_2@)来实现字段的自增长特性
语法:create sequence @H_502_2@序列名
startwith @H_502_2@起始值
Increment by @H_502_2@步长
maxvalue最大值
minvalue@H_502_2@最小值
Cycle @H_502_2@(nocycle@H_502_2@)
Cache @H_502_2@缓存>1@H_502_2@的数字
知识点五:视图view - @H_502_2@简化查询、提高安全性
语法 : create [or replace] view @H_502_2@视图名
as
负责的select@H_502_2@语句
使用:select * from @H_502_2@视图 where group by having order by
注意:有权限才能创建视图grant create view to@H_502_2@用户
1、如何添加主键约束 主键约束不允许为空 |
altertableclassadd primary key(classid) drop constraintsys_c0011740 --@H_502_2@向已经创建的表中添加自定义名称主键约束 add pk_classid primary key)
--创建表的时候添加主键约束(行级约束) createtableclass( classid number(2)primary key, classname varchar210))
表的时候添加主键约束(表级约束) ),128)">constraint pk_classid primary key(classid) not null
|
1、唯一约束unique 允许数据为空,而且可以多行数据为空 |
????? |
2、非空null-@H_502_2@行级约束 3、default-@H_502_2@行级约束 |
modifyclassname notnull--@H_502_2@删除非空约束 default用法和非空约束是一样 --@H_502_2@向已经创建的表中添加default约束 studentstusex default ‘男’--@H_502_2@删除default@H_502_2@约束 ???? --@H_502_2@添加default@H_502_2@的行级约束 student( stuid stuname stusex charstuReg datesysdate--date timestamp ) |
--@H_502_2@向已经创建的表中添加check@H_502_2@约束 alter table student add check(stusex in ('@H_502_2@男','@H_502_2@女')) --@H_502_2@创建表的过程中添加check@H_502_2@约束(行级约束) --@H_502_2@创建表的过程中添加check@H_502_2@约束(表级约束) Constraint ck_stusex check(stusex in('@H_502_2@男','@H_502_2@女') 注意: Constraint notnull_classname check(classname is not null);@H_502_2@对的 onstraint default_stusex check(stusex is default ‘男’);@H_502_2@不对的 |
|
5@H_502_2@、外键约束 |
写起来有点麻烦 --@H_502_2@向已经创建的表中加入外键约束 student add foreign key)references --@H_502_2@删除外键约束 ??? references class(classid) --@H_502_2@创建表级约束 ?????? |