东软实习之数据库(12)——序列、索引、同义词

  #序列

    序列的概念

      序列是一种用于产生唯一数字列值的数据库对象,一般使用序列自动地生成主码值或唯一键值,序列可以是升序或降序。

      序列特点:

      • 可以自动产生唯一数值;
      • 可被多个用户共享;
      • 典型应用是生成主键值,用于标识记录的唯一性;
      • 使用缓存加速序列的访问速度。

    #创建序列语法

      

      创建序列,必须有CREATE SEQUENCE或CREATE ANY SEQUENCE权限。

       序列被创建后,可以通过查询数据字典视图USER_SEQUENCES查看序列信息。

      创建序列

    1. sequence 序列产生器的名称
    2. INCREMENT BY n 指定序列值之间的间隔n,如果省略该项间隔为1
    3. START WITH n 指定起始序列值n,如果该项省略起始值为1
    4. MAXVALUE n 指定最大序列值
    5. NOMAXVALUE 指定最大序列值为10的27次方,而降序的最大值为-1,这是一默认选项
    6. MINVALUE n 指定最小序列值
    7. NOMINVALUE 指定升序最小序列值为1,而降序最小序列值为负10的26次方,这是一默认选项
    8. CYCLE | NOCYCLE 指定序列值在达到最大值或最小值之后继续产生序列值,NOCYLE表示不再产生,NOCYLE是默认选项。
    9. CACHE n | NOCACHE 指定序列值被Oracle服务器预先分配并存储在内存中,NOCACHE表示不预先分配并存储,CACHE 20是默认选项

      

      NEXTVAL和CURRVAL伪列

        可用语句sequence_name.CURRVAL和sequence_name.NEXTVAL来访问序列;

      • CURRVAL:获取当前序列值;
      • NEXTVAL:返回下一个有效的序列值;
      • CURRVAL和NEXTVAL都返回NUMBER值;
      • CURRVAL能被引用之前,必须使用NEXTVAL产生一个序列值;

      NEXTVAL和CURRVAL伪列

        您可以在下列情况使用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 语句中

    #创建序列

        

    #修改序列

      

      

    #删除序列

      



  #索引

    索引的概念

      索引是: 方案(schema)中的一个数据库对象;

           在数据库中,用来加速对表的查询速度;

           通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O;

           与表独立存放,但需要依附于表,是在表的基础上创建的;

           由 Oracle数据库自动维护;

          (注: 如果您删除某个表,那么和该表相关的索引也被删除。)

        

    #创建索引

      创建索引有两种方式:自动创建、手动创建

      自动创建: 当在表上定义一个PRIMARY KEY 或者UNIQUE 约束条件时,Oracle数据库自动创建一个对应的唯一索引;

      手动创建: 用户可以创建索引以加速查询,在需要创建索引的字段上创建需要的索引。

      

    #测试索引

      

      

    适合创建索引情况

    1. 查询列的数据范围很广泛;
    2. 查询列中包含大量的NULL值, ,因为空值不包含在索引中;
    3. WHERE条件中的列或者多表连接的列适合创建索引;
    4. 欲查询的表数据量很大,而且大多数的查询得到结果集的数量占总记录量的2%~4%;
    5. 过多的索引并不总是更有好处,过多的索引并不意味着更快的查询速度,每一次对含有索引的表进行DML操作就意味着索引必须更新,过多的索引会导致在DML操作后Oracle服务器要花费更多的时间在索引的更新上。

    不适合创建索引的情况

    1. 很小数据量的表;
    2. 在查询中不常用来作为查询条件的列;
    3. 查询最终得到的结果集很大;
    4. 频繁更新的表(索引对于DML操作是有部分负面影响的) ;
    5. 索引列作为表达式的一部分被使用时(比如常查询的条件是SALARY*12,此时在SALARY列上创建索引是没有效果的) ;

    #删除索引

      

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

      常用与索引相关的数据字典视图有:

      • USER_INDEXES:用户的索引对象的定义,包含索引的名字和索引的一些相关属性(比如唯一性等)
      • USER_IND_COLUMNS:用户索引对象的列的定义信息,会列出索引名字,表名字,和列的名字等。


  ##本章重点总结

  1. 理解序列、索引对象的作用及概念;
  2. 掌握序列的创建及使用方法;
  3. 掌握索引的创建及使用方法;
  4. 掌握何时应该创建索引;

原文地址:https://www.cnblogs.com/destinywxy/p/9341409.html

时间: 2024-10-05 08:34:53

东软实习之数据库(12)——序列、索引、同义词的相关文章

东软实习之数据库(7)——子查询

##子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询执行.    子查询的结果被主查询(外部查询)使用 Expr operator包括比较运算符. 单行运算符:>.=.>=.<.<>.<= 多行运算符: IN.ANY.ALL    子查询可以嵌于以下SQL子句中: WHERE子句 HAVING子句 FROM子句 子查询使用指导 子查询要用扩号扩起来 将子查询放在比较运算符的右边 在子查询中的ORDER BY 子句不需要,除非你正在执行Top-N分析 对于单行子查

Oracle数据库——索引、视图、序列和同义词的创建

一.涉及内容 1.理解索引的概念和类型. 2.掌握创建索引的命令. 3.理解视图的概念和优点. 4.理解可更新视图应具备的特点. 5.掌握创建一般视图和可更新视图的命令. 6.理解序列和同义词的概念和作用. 7.掌握序列的创建与应用. 8.掌握同义词的创建与应用. 二.具体操作

Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

alter table userInfo add(msn varchar2(20));   1.建表 create table userInfo ( id number(6), name varchar2(20), sex number(1), age number(3), birthday date, address varchar2(50), email varchar2(25), tel number(11) );   2.创建约束 不带约束名称的: create table userIn

视图序列索引

视图名字一般是以"V_"开头 视图在SQL语句中体现的角色与表相同,但是视图并不是一张真实存在的表,而只是对应一个 select语句的查询结果集,并将其当做表看待而已,使用视图的目的就是简化sql语句的复杂度,重用子查询,限制数据访问 视图对应的子查询中的字段若含有函数或者表达式,那么该字段必须指定别名.当师徒对应的子查询中的字段使用了别名,那么视图中该字段就用别名来命名 create view v_emp_10 as select empno,ename,sal,deptno fro

序列-索引-约束

序列-索引-约束 1.序列 序列:也是数据库对象之一,作用是生成一系列的数字,序列常与某张表的主键字段提供值使用. 序列的创建: --序列的创建 CREATE SEQUENCE SEQ_NUM_2 START WITH 1 INCREMENT BY 2 START WITH:开始的值. INCREMENT BY :步长. 序列中的函数: A:NEXTVAL(获取序列的下一个值   第一个值获取的是START WITH 后面的值是START WITH+INCREMENT 每次加步长一次 ) 例:

Python for循环通过序列索引迭代

Python for 循环通过序列索引迭代: 注:集合 和 字典 不可以通过索引进行获取元素,因为集合和字典都是无序的. 使用 len (参数) 方法可以获取到遍历对象的长度. 程序: strs = "Hello World." # 使用 len 方法可以获取到遍历对象的长度. print(len(strs)) # 12 lst = [7,8,9,4,5,6] print(len(lst)) # 6 tup = (1,2,3,7,8,9) print(len(tup)) # 6 使用

让你提前知道软件开发(27):创建数据库表和索引

文章2部分 数据库SQL语言 数据库表及索引的创建         数据表(或称表),是数据库最重要的组成部分之中的一个.数据库仅仅是一个框架.数据表才是事实上质的内容.举个样例来说,数据库就像是一座空旷的房子.而数据表是里面的家具,没有家具的房子仅仅是一个空壳而已.依据信息的分类情况,一个数据库中可能包括若干个不同用途的数据表. 表结构有简单.有复杂,这就对开发者提出了要求. 怎样设计一个表的字段才是最好的?表的字段怎样命名?怎样定义表字段的类型?怎样建立索引?等等. 1. 改动之前的建表脚本

数据库中的索引Index

索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: 1.通过创建唯一索引,可以保证数据记录的唯一性: 2.可以大大的加快数据检索的速度: 3.可以加速表与表之间的连接: 4.在使用ORDER BY 和GROUP BY 子句中进行检索数据是,可以显著减少查询中分组和排序的时间: 5.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能: 索引分

浅谈数据库优化之-索引

数据库索引 1.什么是索引 在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象.A)索引可以避免全表扫描.多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页.B)对于非聚集索引,有些查询甚至可以不访问数据页.C)聚集索引可以避免数据插入操作集中于表的最后一个数据页.D)一些情况下,索引还可用于避免排序操作. 当然,众所周知,虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新