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

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a