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的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使