信管1202—张仁杰
SIZE 600
TABLESPACE users
STORAGE (INITIAL 200K NEXT 300K MINEXTENTS 2 MAXEXTENTS 20); size说明一个聚簇字段值提供的最大字节数。
2. 创建聚簇表
在簇中创建的表称为“聚簇表”。通过将两个或多个聚簇表保存在同一个簇中,可以将两个表中具有相同的聚簇字段值的记录集中存放在同一个数据块(或相邻的多个数据块)中。
聚簇表中的聚簇字段必须与创建簇时指定的聚簇字段具有相同的名称和数据类型。
在CREATE TABLE语句中通过CLUSTER子句来指定表所使用的簇和聚簇字段。 Eg: CREATE TABLE classes(
class_id NUMBER(3) PRIMARY KEY, cname VARCHAR2(10) )
CLUSTER student_class (class_id); CREATE TABLE students (
sno NUMBER(5) PRIMARY KEY, sname VARCHAR2(15) NOT NULL,
class_id NUMBER(3) REFERENCES classes) CLUSTER student_class(class_id);
3. 修改簇
修改簇的物理存储参数(PCTFREE,PCTUSED,STORAGE); 修改SIZE 大小; 不能修改聚簇表。
4. 创建聚簇索引
为簇中的聚簇字段创建索引,这种类型的索引称为“聚簇索引”。
Eg:CREATE INDEX student_class_index ON CLUSTER student_class TABLESPACE USERS
STORAGE (INITIAL 10K NEXT 10K MINEXTENTS 2 MAXEXTENTS 10) PCTFREE 10;
5. 删除簇
使用DROP CLUSTER删除不包含聚簇表的簇及簇索引。
DROP CLUSTER student_class;
使用DROP CLUSTER...INCLUDING TABLES语句删除包含聚簇表的簇。
DROP CLUSTER student_class INCLUDING TABLES;
如果聚簇表中包含其他表外键参考的主键约束列或唯一性约束列,则需要使用CASCADE CONSTRAINTS子句删除约束,同时删除簇。
DROP CLUSTER student_class INCLUDING TABLES CASCADE CONSTRAINTS;
——————————————————————————————————
信管1202—张仁杰
视图
1. 创建视图
CREATE [OR REPLACE] [FORCE| NOFORCE] VIEW [schema.]view_name[(column1,column2,…)] AS subquery
[WITH READ ONLY]|[WITH CHECK OPTION] [CONSTRIANT constraint];
FORCE:不管基本表是否存在都创建视图。
WITH READ ONLY:指明在使用视图时,检查数据是否符合子查询中的约束条件。
2. 修改视图
实质是删除原视图并重建该视图,但保留该视图的各种权限。 CREATE OR REPLACE VIEW view_name AS subquery;
3. 删除视图
使用DROP VIEW语句删除视图。
——————————————————————————————————
序列
用于产生唯一序号的数据库对象。通常用于自动生成主键。
1. 创建序列
CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n]
[MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE]; 参数说明:
INCREMENT BY:设置相邻两个元素之间的差值,即步长,默认值为1; START WITH:设置序列初始值,默认值为1; MAXVALUE:设置序列最大值
NO MAXVALUE:设置默认情况下,递增序列的最大值为1027,递减序列的最大值为-1;
MINVALUE:设置序列最小值;
NOMINVALUE:设置默认情况下,递增序列的最小值为1, 递减序列的最小值为-1026;
CYCLE|NOCYCLE:指定当序列达到其最大值或最小值后,是否循环生成值,NOCYCLE 是默认选项;
信管1202—张仁杰
CACHE|NOCACHE:设置是否在缓存中预先分配一定数量的数据值,以提高获取序列值的速度,默认为缓存20个值。
2. 使用序列
实质上是使用序列的属性。
3. 修改序列
除了不能修改序列起始值外,可以对序列其他任何子句和参数进行修改。 ALTER SEQUENCE………..
序列的修改之影响以后生成的序列号。
4. 删除序列
DROP SEQUENCE sequence_name;
——————————————————————————————————
同义词
同义词是DB中标、索引、视图等其他模式对象的别名。 (1)创建同义词 语法:
CREATE [PUBLIC] SYNONYM synonym_name FOR object_name; 例如:
CREATE PUBLIC SYNONYM scottemp FOR scott.emp; (2)删除同义词 语法:
DROP [PUBLIC] SYNONYM synonym_name; 例如:
DROP PUBLIC SYNONYM scottemp;
——————————————————————————————————
用户
用户管理 1. 创建用户
CREATE USER user_name IDENTIFIED
[BY password|EXTERNALLY|GLOBALLY AS 'external_name'] [DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE temp_tablesapce_name] [QUOTA n K|M|UNLIMITED ON tablespace_name] [PROFILE profile_name]
信管1202—张仁杰
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK];
注意:在创建新用户后,必须为用户授予适当的权限。例如,授予用户CREATE SESSION权限后,用户才可以连接到数据库。
———————————————————————————————————————
user_name:用于设置新建用户名,在数据库中用户名必须是唯一的; IDENTIFIED:用于指明用户身份认证方式;
BY password:用于设置用户的数据库身份认证,其中password为用户口令; EXTERNALLY:用于设置用户的外部身份认证;
GLOBALLY AS'external_name':用于设置用户的全局身份认证,其中external_name为Oracle的安全管理服务器相关信息;
DEFAULT TABLESPACE:用于设置用户的默认表空间,如果没有指定,Oracle将数据库默认表空间作为用户的默认表空间;
TEMPORARY TABLESPACE:用于设置用户的临时表空间;
QUOTA:用于指定用户在特定表空间上的配额,即用户在该表空间中可以分配的最大空间;
PROFILE:用于为用户指定概要文件,默认值为DEFAULT,采用系统默认的概要文件;
PASSWORD EXPIRE:用于设置用户口令的初始状态为过期,用户在首次登录数据库时必须修改口令;
ACCOUNT LOCK:用于设置用户初始状态为锁定,默认为不锁定;
ACCOUNT UNLOCK:用于设置用户初始状态为不锁定或解除用户的锁定状态。
2. 修改用户
ALTER USER user_name [IDENTIFIED]
[BY password|EXTERNALLY|GLOBALLY AS 'external_name'] [DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE temp_tablesapce_name] [QUOTA n K|M|UNLIMITED ON tablespace_name] [PROFILE profile_name]
[DEFAULT ROLE role_list|ALL [EXCEPT role_list] |NONE]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK];
—————————————————————————————————— role_list:角色列表; ALL :表示所有角色;
EXCEPT role_list:表示除了role_list列表中的角色之外的其他角色; NONE:表示没有默认角色。
注意,指定的角色必须是使用GRANT命令直接授予该用户的角色。 实例:
将用户user3的口令修改为newuser3,同时将该用户解锁。
信管1202—张仁杰
ALTER USER user3
IDENTIFIED BY newuser3 ACCOUNT UNLOCK;
3. 用户信息数据字典
ALL_USERS:包含数据库所有用户用户名,用户ID,用户创建时间。 DBA_USERS:包含数据库所有用户的详细信息。 USER_USERS:当前用户的详细信息。
username, default_tablespace, sid, logon_time………… scott用户具有CONNECT和RESOURCE两个角色权限。
4. 删除用户
DROP USER user_name [ CASCADE ]; 步骤:
先删除用户所拥有的对象 再删除用户
将参照该用户对象的其他数据库对象标志为INVALID。 CASCADE为删除用户时也会删除其拥有的对象。
权限管理
1. 系统权限(有表)的授权
GRANT sys_priv_list TO user_list|role_list|PUBLIC [WITH ADMIN OPTION];
———————————————————————————————————————
sys_priv_list:表示系统权限列表,以逗号分隔; user_list:表示用户列表,以逗号分隔; role_list:表示角色列表,以逗号分隔; PUBLIC:表示对系统中所有用户授权;
WITH ADMIN OPTION:表示允许系统权限接收者再把此权限授予其他用户。 Eg:
为用户user2授予CREATE SESSION,CREATE TABLE ,CREATE INDEX系统权限。user2获得权限后,为用户user3授予CREATE TABLE权限。 CONNECT SYSTEM/MANAGER@ORCL; GRANT CREATE SESSION,CREATE TABLE, CREATE VIEW TO user2 WITH ADMIN OPTION; CONNECT user2/user2 @ORCL GRANT CREATE TABLE TO user3; 系统权限的回收
REVOKE sys_priv_list FROM user_list|role_list|PUBLIC;