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