序列、索引、同义词

一、序列的概念
  • 序列(SEQUENCE)
  • 序列是按照一定规则能自动增加/减少数字的一种数据库对象。
  • 通常可以使用序列自动地生成主键值。
二、创建序列
  • 语法

CREATE SEQUENCE [schema.] sequencename
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];

  • sequencename:序列对象的名字
  • INCREMENT BY n:序列连续两个值之间的间隔n,默认为1。
  • START WITH n :序列起始值n,该项省略,起始值为1
  • MAXVALUE n :序列最大值;NOMAXVALUE :指定序列无最大值
  • MINVALUE n :序列最小值;NOMINVALUE :指定序列无最小值
  • CYCLE|NOCYCLE:表示序列在达到最大值或最小值之后是否继续产生序
    列值,NOCYLE表示不再产生,NOCYLE是默认选项。
  • CACHE n|NOCACHE:表示序列值被服务器预先分配并存储在内存中,
  • NOCACHE:表示不预先分配并存储,CACHE 20是默认选项
  • 例子
  • 创建序列test_seq,起始值为10,每次增长2,最大值100,最小值9,循环序列,每次缓存10
CREATE  SEQUENCE  test_seq 
START WITH 10        --序列从10开始 
INCREMENT BY 2     --序列每次增加2 
MAXVALUE 100        --序列最大值100 
MINVALUE 9          --序列最小值9 
CYCLE             --序列循环,每次增加2,一直到100后回到9从新开始 
CACHE 10;         --缓存中序列值个数为10
三、序列属性
  • NEXTVAL和CURRVAL伪列
  • CURRVAL:表示序列返回的当前值
  • NEXTVAL:表示序列返回的下一个值
  • CURRVAL在被引用之前,必须先使用NEXTVALL来产生一个序列的值
  • 可用语句 序列名.CURRVAL或序列名.NEXTVAL来访问序列
  • 可以在下列情况下使用NEXTVAL和CURRVAL
  • SELECT 语句的SELECT列表中,但是不包含子查询中的SELECT语句
  • INSERT 语句中的子查询SELECT列表中
  • INSERT 语句的VALUES子句中
  • UPDATE 语句的SET子句中
  • 在下列情况下不能使用NEXTVAL和CURRVAL
  • 在视图的SELECT列表中
  • 包含DISTINCT关键字的SELECT语句中
  • 含有GROUP BY,HAVING,ORDER BY 子句的SELECT语句中
  • SELECT,DELETE,UPDATE语句的子查询中
  • 含有DEFAULT表达式的CREATE TABLE 、ALTER TABLE 语句中
  • 使用序列
  • 创建序列student_seq
GREATE SEQUENCE student_seq
START WITH 10000
INCREMENT BY 1;
  • 使用上面创建好的序列生成student表中的sid列插入值
INSERT INTO student
VALUES (student_seq.NEXTVAL,'Scott','Computer',11);
  • 查看上面创建的序列的当前值
SELECT student_seq.CURRVAL  
FROM dual;
  • 修改序列
  • 修改序列的语法
    ALTER SEQUENCE [schema.]sequencename
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE n | NOCACHE];
    注意:在修改序列的语法中没有没有START WITH子句
  • 正确修改的例子
ALTER SEQUENCE test_seq 
INCREMENT BY 4    --序列每次增加4 
MAXVALUE 1000     --序列最大值1000 
NOCACHE;         --不设定缓存
//注意:这里修改序列最大值的时候,只能修改成比原来大的数值
  • 删除序列
  • 语法:
    DROP SEQUENCE 要删除的序列名称
DROP  SEQUENCE  student_seq;
四、ROWID
  • 是一个伪列,系统自动产生。
  • ROWID能唯一标识每一条数据库行记录的物理地址,通过ROWID能够快速定位到一条行记录。
  • ROWID的格式
  • 例如:AAAHjXAAOAAAADaAAA
    数据对象编号 文件编号 块编号 行编号
    AAAHjX AAO AAAADa AAA
  • ROWID使用
SELECT * 
FROM emp
WHERE ROWID = '真实存在的ROWID值';
五、索引概念
  • 是对数据库表中一个或多个列的值进行排序的一种数据库对象
  • 在数据库中,通过索引可以加速对表的查询速度
  • 索引的类型
  • 单列索引
    索引建立在表中的某一列上
  • 复合索引
    索引建立在表中的某几列的组合上
  • 创建索引
  • 自动创建:当有PRIMARY KEY或者UNIQUE约束时,数据库会自动创建索引
  • 手动创建:用户使用创建索引的语法来进行创建
  • 创建索引的语法

CREATE INDEX indexname
ON table(列名)

  • 例子:在emp表的ename上创建索引
CREATE INDEX idx_emp_ename
ON emp(ename);
  • 适合创建索引的情况
  • 表数据量很大
  • 要查询的结果集在2% - 4%之间
  • 经常用来做WHERE条件中的列或者多表连接的列
  • 查询列的数据范围分布很广
  • 查询列中包含大量的NULL值,因为空值不包含在索引中
  • 不适合创建索引的情况
  • 数据量很小的表
  • 在查询中不常用来作为查询条件的列
  • 频繁更新的表
  • 索引列作为表达式的一部分被使用时,比如常查询的条件是SALARY*12,此时的SALARY列上创建索引是没有效果的
  • 查询条件有单行函数时,用不上索引
  • 索引的缺点
  • 占用空间
  • 降低DML的操作速度
  • 删除索引

DROP INDEX 索引名称
删除索引后,索引中的数据及定义被删除,索引所占用的数据空间被释放,但表中的数据仍然存在

六、相关的数据字典
  • USER_INDEXS:数据字典视图包含索引的名称及唯一性
  • USER_IND_COLUMNS:数据字典视图中包含索引名称、表名以及列名
七、同义词
  • 同义词的概念
  • 同义词(SYNONYM)
    是指向数据库对象(如:表、视图、序列、存储过程等)的数据指针。
  • 使用同义词的好处
    1.可以简化对数据库对象的访问
    2.方便对其他用户表的访问
    3.简化过长的对象的名称
    4.节省大量的数据库空间,对不同用户的操作同一张表没有多少差别
    扩展数据库的使用范围,能够在不同的数据库用户之间实现无缝交互
    5.同义词可以创建在不同一个数据库服务器上,通过网络实现连接
  • 创建同义词

GREATE [ PUBLIC ] SYNONYM 同义词
FOR [schema.]对象名

  • 同义词两种类型
  • 私有(PRIVATE)
    是在指定的方案中创建的,并且只允许拥有它的方案访问。
  • 共有(PUBLIC)
    由PUBLIC方案所拥有,所有的数据库方案都能可以引用他们。
  • 删除同义词
  1. 创建emp表的别名
GREATE SYNONYM s_emp
FOR hr.emp;
  1. 删除同义词
DROP  SYNONYM  s_emp

注意:只有数据库管理员才拥有公有同义词的创建和删除权限

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容