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

相关文章

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C