Oracle数据库中序列,索引和同义词

序列:
    概念:
        序列是按照一定规则能自动增加/减少数字的一种数据库对象
    
    作用:
        通常可以使用序列自动地生成主键键,用于主键自增
    
    操作:
        1)创建:
            语法:
                CREATE SEQUENCE [schema.] sequencename
                [INCREMENT BY n] --默认自增1,自增的值
                [START WITH n]  --序列的起始值,默认从1开始
                [MAXVALUE n | NOMAXVALUE]  --最大值
                [MINVALUE n | NOMINVALUE]  --最小值
                [CYCLE | NOCYCLE]  --默认NOCYCLE,
                [CACHE n | NOCACHE];
        2)修改:
            语法:
                ALTER SEQUENCE [schema.]sequencename
                [INCREMENT BY n]
                [MAXVALUE n | NOMAXVALUE]
                [MINVALUE n | NOMINVALUE]
                [CYCLE | NOCYCLE]
                [CACHE n | NOCACHE];
        3)删除:
            语法:
                DROP SEQUENCE [schema.]序列名
        4)查看:
            语法:
                SELECT 序列名 from dual;
    
    属性:伪列
        1)伪列:
            1-1)CURRVAL:表示序列返回的当前值;
            1-2)NEXTVAL:表示序列返回的下一个值;
        2)可用语句:
            序列名.currval        序列名.nextval
        3)在以下情况下可以使用伪列:
            3-1)select语句的select列表中,但不包括子查询中的select语句
            3-2)insert语句中的子查询select列表中
            3-3)insert语句的values字句中
            3-4)update语句的set子句中
        4)在以下情况下不能使用伪列:
            4-1)在试图的select列表中
            4-2)包含distinct关键字的select语句中
            4-3)含有group by,having,order by子句的select语句中
            4-4)select,delete,update语句的子查询中
            4-5)含有default表达式的create table,alter table语句中
        PS:
            1)在一次查询(select语句)中,序列名.nextval只会自增一次
            2)CURRVAL在被引用之前,必须先使用NEXTVAL来产生一个序列值

索引:
    概念:
        索引是数据库表中一个或多个列的值进行排序的一种数据库对象
    作用:
        在数据库中,通过索引可以加速对表的查询速度
    
    类型:
        1)单列索引:
            索引建立在表中的某一列上
        2)复合索引:
            索引建立在表中的某几列的组合上

    方式:
        1)自动创建:
            当有主键和唯一约束时,数据库自动创建一个索引
        2)手动创建:
            语法:
                CREATE INDEX 索引名 ON 表名(column[, column]...);
            建议命名格式:
                idx_表名_列名
        3)删除索引:
            语法:
                DROP INDEX index;
                
    适合创建索引情况:
        1)表数据量很大
        2)要查询的结果集在2%-4%左右
        3)经常用来做WHERE条件中的列或者多表连接的列
        4)查询列的数据范围分布很广
        5)查询列中包含大量的NULL值,因为空值不包含在索引中

    不适合创建索引情况:
        1)数据量很小的表
        2)在查询中不常用来作为查询条件的列
        3)频繁更新的表
        4)索引列作为表达式的一部分被使用时,比如常查询的条件是SALARY*12,此时在SALARY列上创建索引是没有效果的
        5)查询条件中有单行函数时,用不上索引    

    索引缺点:
        1)占用空间
        2)降低DML的操作速度
        
    数据字典表:
        1)USER_INDEXES 数据字典视图包含索引的名称及其唯一性;
        2)USER_IND_COLUMNS
        
        
同义词:SYNONYM
    概念:
        是指数据库对象(如:表、视图、序列、存储过程等)的数据库指针
    
    分类:
        1)公有的(public):
            所有的数据库方案都可以引用他们
        2)私有的(private):
            是在指定的方案中创建的,并且只允许拥有它的方案访问
        
    创建:
        语法:
        CREATE [PUBLIC] SYNONYM  同义词  FOR [schema.] 表名
    删除:
        DROP SYNONYM 同义词;
    
    PS:
        只有管理员权限才可以创建和删除public权限的同义词

    同义词优点:
        1)可以简化对数据库对象的访问
        2)方便对其他用户表的访问
        3)简化过长的对象名称
        4)节省大量的数据库空间,不同用户的操作同一张表没有多少差别
        5)扩展数据库的使用范围,能够在不同的数据库用户之间实现无缝交互
        6)同义词可以创建在不同数据库服务器上,通过网络实现连接
    

猜你喜欢

转载自blog.csdn.net/Youth_Mr6/article/details/81461640