2.1 数据库之序列,索引和同义词

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwz45698752/article/details/86590106


概述

学习目标

在这里插入图片描述
在这里插入图片描述


序列概述

在这里插入图片描述


  • 表是数据存储的主要方式

  • 关注:序列提供/产生唯一的数值

  • 当需要自动地提供某列值(如ID列)——》可由序列提供该值,且作为主键值(主键值要求非空唯一,序列能满足该要求)


序列

创建序列

在这里插入图片描述
在这里插入图片描述

  • 创建序列同样要有创建序列的权限

查询序列

在这里插入图片描述- 简而言之:查看当前数据库中的序列内容

  • 未考虑缓存——》则为下一个值,如下图所示
    在这里插入图片描述

序列的伪列

在这里插入图片描述

  • 可理解为序列有两个方法:nextval和currval方法
  • 调用完nextval方法之后才能调用currval(不然不能调用currval)

  • 索引循环注意点

在这里插入图片描述- 补充下背景:创建序列时,设定最大值为100,增量为10,循环方式

  • 关注:100之后第一个数(循环方式)是1

使用序列

在这里插入图片描述
在这里插入图片描述

  • 裂缝实例:
    在这里插入图片描述
  • 裂缝:破坏数据间的平滑性(所以要避免多个表共用一个序列)
  • empo2表使用序列作为ID列的值,插入63,64,另一个表empo1也使用该序列,接着插入65,从而造成不平滑现象,即裂缝
  • rollback时,数据回滚,而序列不回滚,自动提交,这时再插入ID列的值时(我们把序列作为ID列的值),会产生裂缝

  • 错误示范
    在这里插入图片描述
  • 不允许select * from 序列


修改序列

在这里插入图片描述
在这里插入图片描述

  • 为了保证唯一性,改变序列初始值只能通过删除序列实现,不然唯一性被破坏

删除序列

在这里插入图片描述


索引

在这里插入图片描述

  • 关注:
    • 创建索引后,通过该列查询表时(一定是通过该列,该列作为部分过滤条件),自动调用索引,提高查询速度
    • 创建索引后不需要显式调用,程序在用户使用相应索引指定的表时,会自动地获取索引去指向(?)
    • 索引是唯一的
    • 索引只对表的查询速度有影响,而对查询结果没有影响

创建索引

在这里插入图片描述

  • 主键或unique约束自动创建
  • 可以手动创建

手动创建

在这里插入图片描述


应用场景

在这里插入图片描述- 比如年龄分布范围较小(0-100),不用创建索引,而工资五花八门,可以创建索引

在这里插入图片描述在这里插入图片描述

  • 所占数据量过大——》频繁调用数据——》频繁调用索引——》干脆不用索引

  • 频繁更新的表不使用索引,因为更新数据同时要维护索引——》变慢


查询索引

在这里插入图片描述


删除索引

在这里插入图片描述


同义词

在这里插入图片描述

  • 为什么使用同义词?
  • 答:类比局部变量和全局变量,同义词可在全局使用,而别名只能用于所在的select语句中

创建及删除同义词

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/86590106
2.1