(1)序列可以作为主键,还有什么可以作为主键,它们的区别是什么?
还可以使用SYS_GUID函数生成32位的唯一编码作用主键。
区别:
序列生成器sequence所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关键字,
因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。
SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的
(2)比较范围分区、间隔分区,说出它们的区别
范围分区:应用范围比较广的表区分方式,他以列的值的范围作 为分区的划分条件。
间隔分区:是Oracle 11g版本新的区分方法。不需要创建表时就将所有分区划分清楚。 间隔分区随着数据的增加会划分更多的分区,并自动创建新的分区。
(3)比较私有同义词、公有同义词,说出二者的特点和区别
特点:当前模式下创建私有同义词,用户必须拥有CREATE SYNONYM系统权限;其他用户模式下创建用户要拥有CREATE ANY SYNONYM系统权限。公有同义词可以隐藏数据库对象的所有者和名称,降低SQL语句复杂性;创建公有同义词,用户必须拥有CREATE PUBLIC SYNONYM系统权限。
区别:私有同义词只能在当前模式下访问,且不能与当前模式的对象同名。公有同义词可被所有的数据库用户访问。
表空间分类
注意:一般不需要建临时和撤销表空间,除非把它们转移其他磁盘中以提高性能
创建表空间
通过CREATE TABLESPACE命令创建表空间
--建一个自增表空间
create tablespace tp_y230
datafile 'D:\oracle TableSpace\tp_y230.dbf'
size 10M
autoextend on; --自增
修改表空间
--方法一:更改数据文件的大小
ALTER DATABASE DATAFILE
'D:\DATA\tp_hr01.dbf'
RESIZE 80M;
--方法二:向表空间内添加数据文件
ALTER TABLESPACE tp_hr
ADD DATAFILE
'E:\DATA\tp_hr02.DBF' SIZE 20M
AUTOEXTEND ON;
更改表空间状态只读
ALTER TABLESPACE tp_hr READONLY;
删除表空间
DROP TABLESPACE tp_hr INCLUDING CONTENTS;
登录管理后台
SYS和SYSTEM用户都是Oracle 的系统用户,它们都使用SYSTEM表空间,SYS拥有更大的权限
创建用户
create user s230 --用户名
identified by admin --密码
default tablespace tp_y230 --指定表空间
给用户赋予权限
常用系统预定义角色:
CONNECT:临时用户
RESOURCE:更为可靠和正式的用户
DBA:数据库管理员角色,拥有管理数据库的最高权限
grant connect, resource to s230;
序列
序列是用于生成唯一、连续序号的对象
序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE语句创建序列
CREATE SEQUENCE toys_seq
START WITH 10 --指定第一个序号从 10 开始
INCREMENT BY 10 --指定序号之间的间隔为 10
MAXVALUE 2000 --表示序列的最大值为 2000
MINVALUE 10 --表示序列的最小值为 10
NOCYCLE --在达到最大值后停止生成下一个值
CACHE 10; --指定内存中预先分配的序号数
修改序列
使用ALTER SEQUENCE语句
ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;
删除序列
使用DROP SEQUENCE语句
DROP SEQUENCE toys_seq;
SYS_GUID函数
生成32位的唯一编码作为主键
同义词
##同义词是现有对象的一个别名
简化SQL语句
隐藏对象的名称和所有者
提供对对象的公共访问
##同义词共有两种类型:
私有同义词
CREATE OR REPLACE SYNONYM emp FOR SCOTT.emp;
公有同义词
CREATE PUBLIC SYNONYM public_sy_dept FOR SCOTT.dept;
删除同义词
DROP SYNONYM emp
DROP PUBLIC SYNONYM emp_syn;
索引
索引使用原则
表中导入数据后再创建索引,否则每次表中插入数据时都必须更新索引
在适当的表和字段上创建索引
如果经常检索的数据少于表中的15%,需要创建索引
限制表中索引的数目
索引越多,在修改表时对索引做出修改的工作量越大
索引分类
反向键索引
CREATE INDEX index_reverse_empno ON emp(empno) REVERSE;
位图索引
CREATE BITMAP INDEX index_bit_job ON emp(job);
表分区
允许用户将一个表分成多个分区
用户可以执行查询,只访问表中的特定分区
将不同的分区存储在不同的磁盘,提高访问性能和安全性
可以独立地备份和恢复每个分区
范围分区
以表中的一个列或一组列的值的范围分区
PARTITION BY RANGE (column_name)
(
PARTITION part1 VALUE LESS THAN (range1),
PARTITION part2 VALUE LESS THAN (range2),
...
[PARTITION partN VALUE LESS THAN (MAXVALUE)]
);
实现范围分区的自动化
PARTITION BY RANGE(column_name)
INTERVAL(NUMTOYMINTERVAL(n, 'interval_unit'))
(PARTITION P1 VALUES LESS THAN (range1));