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