oracle对象【约束,序列,索引,视图,同义词】

2024-03-09 22:32

本文主要是介绍oracle对象【约束,序列,索引,视图,同义词】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一:约束 
 
        --直接添加不为空的约束 


       create table tb_userinfo( 

                    userid number primary key, --primary key表示主键 (唯一 并且不能为空) 
 

                   username varchar2(20) not null, --not null 表示当前的列 不允许插入 null 和 '' 


                ) 
 

        --直接添加不为空的约束 给约束添加别名 
 

       create table tb_userinfo( 
 

                    userid number primary key, --primary key表示主键 (唯一 并且不能为空) 
 

                   username varchar2(20) [constraint nullable_username] not null, --添加别名后 会添加一个别名对应的约束 
 

               ) 
 

        --通过check的方式 添加不为空的约束  check的语法要和where条件一致         
 

        create table tb_userinfo( 
 

                    userid number primary key, --primary key表示主键 (唯一 并且不能为空) 
 


                   username varchar2(20) [constraint check_username]  check(username is not null) --通过添加约束的方式 添加not null 
 


        )     
 

        --定义唯一约束  唯一约束相当于添加了一个唯一索引的列 
 

       create table tb_userinfo( 
 

                    userid number [constraint uni_userid] unique 
 

        )   
 

        --check约束必须满足where条件  不能使用子查询 
 

       create table tb_userinfo( 
 

               userid number primary key, 
 

               username varchar2(20) not null, 
 

               sex number constraint check_sex check(sex in(0,1)) 
 

        )    
 

        --primary key表示列上添加了 唯一约束+不为空约束  会为列上添加一个唯一索引  可以大大的提高效率 一张表的设计 一定要有一个主键 
 

       create table tb_userinfo( 
 

               userid number [constraint pri_userinfo_userid] primary key 
 

         ) 
 


       --定义外键  外键的定义 必须能唯一定位到外键对应的记录 比如 知道学生信息后 就唯一确定了他所在的班级 
 


       --班级表 
 


       create table tb_grade( 
 


           cid  number primary key, 
 


           cname varchar2(20) not null 
 


        ) 
 


        --cid number check(cid in(select cid from tb_grade)) 用于理解 
 


       create table tb_student( 
 


           sid number primary key, 
 


           sname varchar2(20) not null, 
 


           cid number [constraint FOR_STUDENT_CID] references TB_GRADE (CID)         
 


        ) 
 


        --外键的引用 必须通过alter table的方式来添加 
 


       alter table tb_student add constraint FOR_STUDENT_CID foreign key (CID) 
 


                      references TB_GRADE (CID)         
 


        --删除外键必须通过名称  未定义名称时 需要通过      dba_constraints表去查询         
 


        alter table tb_student drop constraint SYS_C008553    
 


        --查询表所有的外检 类型  C表示check约束 P代表主键  R代表外检  
 


        select * from dba_constraints  where table_name='TB_STUDENT'                    
 


二:序列 
 


        --创建序列  minvalue表示范围中最小的那个值 maxvalue表示范围中最大的那个值 
 


       --start with 表示序列从1开始递增  increment by表示步值(每次累加值) 
 


       create sequence TB_GRADE_SEC 
 


        minvalue 1 
 


        maxvalue 999999999999999999999999999 
 


        start with 1 
 


        increment by 1 
 


        cache 20; 
 


        --查询当前值得下一个值 
 


       select TB_GRADE_SEC.NEXTVAL from dual; 
 


        --查询当前值 
 


       select TB_GRADE_SEC.Currval from dual; 
 


        select * from tb_grade; 
 


        --在insert语句中使用序列 
 


       insert into tb_grade values(TB_GRADE_SEC.NEXTVAL,'test'); 
 


        commit;               
 


        --删除序列 
 


       drop sequence tb_grade_sec               
 


三:索引 
 


        索引候选列需要存储很大范围(重复的范围 每一个值都不一样 就是范围大)的值——“B-树”索引 
 


        索引候选列只包含很少范围(比如列上的值 都是某几个枚举的值  男,女)的值——“位图”索引 
 


        --在列上使用 unique,primary key可以自动添加btree索引 
 


       create table TB_STUDENT 
 


        ( 
 


          SID   NUMBER  primary key not null, 
 


          SNAME VARCHAR2(20) unique, 
 


          sex number check(sex in(0,1)), 
 


          CID   NUMBER 
 


        ) 
 


        --唯一索引(BTree索引) map.put(1,'test') 创建btree的语句 唯一索引 可以直接定位行 效率最高  
 


        create UNIQUE index index_student_sid on TB_STUDENT(sid) 
 


        --normal索引(BTREE索引) 表示列允许出现重复 但是不能出现大范围的重复 否则效率降低 
 


       create index index_student_sid on TB_STUDENT(sid)  
 


        --创建位图索引 大范围的重复时 使用索引 
 


       create bitmap index bitmap_student_sex on TB_STUDENT(sex) 
 


        --创建基于函数的索引 
 


       create index upper_sname on tb_student(upper(sname)) 
 


        --删除索引 
 


        drop index upper_sname                   
 


    四:视图 
 


    CREATE [OR REPLACE] VIEW 视图名  
 


          AS 查询语句 [WITH CHECK OPTION] [WITH READ ONLY]; 
 


        选项: 
 


       OR REPLACE:视图存在时就替换 
 


       WITH CHECK OPTION:视图的创建条件不能更改 
 


       WITH READ ONLY:视图中的内容不能更改 
 


       --创建视图 用于重复利用相同的sql 可以用于权限控制  可以隐藏机密的数据 
 


       create or replace view vi_student_grade as 
 


        select s.sname,g.cname from tb_student s inner join tb_grade g on s.cid=g.cid where cname='1501' WITH CHECK OPTION 
 


        --查询 
 


       select * from vi_student_grade where cname='1501' 
 
   

        create or replace view vi_student as select * from tb_student; 
 


        --直接通过表更新,删除 
 


       update tb_student set sname='test' where sid=10; 
 


        --单表视图 可以用于间接更新,删除 
 


       update vi_student set sname='test' where sid=10; 
 


        删除视图 
 


       DROP VIEW 视图名; 
 


    同义词 
 


        --创建同义词 
 


        CREATE SYNONYM syn_scott_emp FOR scott.emp; 
 


         select * from syn_scott_emp;     
 


         drop SYNONYM  syn_scott_emp 
 


                              
 


 


   




 

这篇关于oracle对象【约束,序列,索引,视图,同义词】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792156

相关文章

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

golang 对象池sync.Pool的实现

《golang对象池sync.Pool的实现》:本文主要介绍golang对象池sync.Pool的实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力,下面就来介绍一下,感兴趣的可以了解... 目录sync.Pool的用法原理sync.Pool 的使用示例sync.Pool 的使用场景注意sync.

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1