数字字典表

--查看当前用户下面有哪些张表

select * from user_tables;

select table_name from user_tables;

--查看当前用户下面有哪些视图

select * from user_views;

select view_name from user_views;

--查看当前用户下面有哪些约束

select * from user_constraints;

select constraint_name from user_constraints;

--查看当前用户下面的约束在哪些表上面

select constraint_name, table_name from user_constraints;

--select * from dictionary;

像上面这样的表被称作数据字典表,存在dictionary中。

索引

索引的概念

索引是一个数据库对象,索引就相当于我们字典里那个索引;当为某个字段建立索引,查询这个字段的时候效率就会更高。

需要注意的是,索引的建立只是提供了查询效率,修改却更慢了,因为需要附加修改索引表。

什么时候建索引

查询某个字段,访问量特别大的时候,而且效率比较低的时候,这个时候可以考虑建立索引。但不要轻易建立索引,因为建立所以也会增加而外的维护开销。

创建索引

--给stu表的email字段创建索引

create index stu_email_index on stu(email);

删除索引

--删除stu表的email字段的索引stu_email_index

drop index stu_email_index;

序列

序列的概念

create table stu

(

id number(10) ,

...

constraint stu_id_pk primary key(id),

...

);

在创建stu表的时候,我们制定了id作为主键,主键是唯一的,这就要求每次插入一条记录,都要插入一个新的id,但是在多线程的环境下同时插入大量记录,如何保证每次插入的id是不同的,而且这个id应该是有序递增的?一般数据库都会提供这样的机制:专门产生一个独一无二的数,然后每次自己往上递增一个1或者指定增量。Oracle里,这种机制称为序列sequence。sequence是一个对象,可以使用里面的属性nextval作为主键id的值,这就能保证主键id是唯一的。

创建序列与查看

--序列提供了两个属性,即NEXTVAL 和CURRVAL,用来访问序列中的序号。

--其中NEXTVAL代表下一个可用的序号, CURRYAL代表当前的序号。

drop sequence seq;

create sequence seq;

select seq.nextval ,seq.currval from dual;

SELECT * FROM USER_SEQUENCES;

SELECT * FROM ALL_SEQUENCES;

--sys用户查看

SELECT * FROM DBA_SEQUENCES;

--INCREMENT BY选项指定了序列中序号递增的幅度

drop sequence seq2;

create sequence seq2 increment by 2;

select seq2.nextval ,seq2.currval from dual;

--START WITH选项指定序列中的序号从哪个数字开始

drop sequence seq3;

create sequence seq3 start with 20;

select seq3.nextval ,seq3.currval from dual;

--MAXVALUE用来指定序列中序号的最大值

drop sequence seq4;

create sequence seq4 maxvalue 3;

select seq4.nextval ,seq4.currval from dual;

--MINVALUE用来指定序列中序号的最小值

drop sequence seq5;

create sequence seq5 minvalue 5;

select seq5.nextval ,seq5.currval from dual;

--选项CYCLE使得序列中的序号可以循环使用

drop sequence seq6;

--必须指定nocache 或者cache,否则报ORA-04013: number to CACHE must be less than one cycle

create sequence seq6 minvalue 1 maxvalue 5 cycle nocache;

select seq6.nextval ,seq6.currval from dual;

--如果把序列中的序号放在内存中进行缓冲,那么获得序号的速度将大大加快。

--将序列中接下来的n个序号在内存中进行缓冲,最小值为2

drop sequence seq7;

create sequence seq7 minvalue 1 maxvalue 30 cache 3;

select seq7.nextval ,seq7.currval from dual;

序列的修改

--序列在创建之后,可以对其进行修改。

--比如修改它的最大值、最小值、增幅等,但不能修改初始值。

drop sequence seq8;

create sequence seq8 increment by 2;

select seq8.nextval ,seq8.currval from dual;

alter sequence seq8 increment by 3;

删除序列

drop sequence seq;

序列作为主键使用

insert into stu(id,name,email) values(seq.nextval,'lisi','321@qq.com');

insert into stu(id,name,email) values(seq.nextval,'wangwu','988@qq.com');

insert into stu(id,name,email) values(seq.nextval,'chenliu','567@qq.com');

三范式

范式的由来

数据库设计时的一些规则,而这些规则是由一个姓范的人规定的,所以叫范式。

范式的目标

不存在冗余数据(同样的数据不存第二遍)。

第一范式

第一范式的要求:1.要有主键(设计任何表都要有主键) 2.列不可分

第二范式

第二范式的要求:当一张表里面有多个字段作为主键的时候,非主键的这些字段,不能依赖于部分主键。简单的说:不能存在部分依赖。

第三范式

第三范式的要求:不能存在传递依赖(除了主键之外的其他字段必须直接依赖于主键)。

oracle(sql)基础篇系列(四)——数字字典、索引、序列、三范式的更多相关文章

  1. python基础篇(四)

    PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...

  2. 【目录】mysql 基础篇系列

    随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql m ...

  3. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  4. 撸基础篇系列,JAVA的NIO部分

    前言:撸基础篇系列,避免每次都要从头开始看,写个自己的知识体系树 NIO 核心就是异步, 比如,复制文件,让操作系统去处理,等通知 BIO核心类 一,BIO NIO基本操作类 Bytebuffer 构 ...

  5. java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现

    java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析 ...

  6. oracle(sql)基础篇系列(四)——数字字典、索引、序列、三范式

      数字字典表 --查看当前用户下面有哪些张表 select * from user_tables; select table_name from user_tables;   --查看当前用户下面有 ...

  7. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  8. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

    花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...

  9. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

随机推荐

  1. hdu-3401-Trade-单调队列优化的DP

    单调队列入门题... dp[i][j]:第i天.手中拥有j个股票时,获得的最大利润. 若第i天不买不卖:dp[i][j]=max(dp[i][j],dp[i-1][j]); 若第i天买         ...

  2. spark集群体系结构

  3. asp.net 汉字转拼音的车祸现场

    asp.net 汉字转拼音 需求背景: 昨天遇到个问题,就是面对系统中集中性的要设置大批量的用户设置默认的用户名,密码,权限(角色),同时要求用户名是姓名的全拼,回头看看旁边那个哥们撸胳膊挽袖子准备一 ...

  4. IP地址的正则表达式写法

    这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值. 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 正则写法 ...

  5. 新疆大学(新大)OJ xju 1009: 一带一路 prim求最短路径+O(n)素数筛选

    1009: 一带一路 时间限制: 1 Sec  内存限制: 128 MB 题目描述 一带一路是去去年习大大提出来的建设“新丝绸之路经济带”和“21世纪海上丝绸之路”的战略构想.其中就包括我们新疆乌鲁木 ...

  6. Epplus做Excel的数据透视

    //表格的范围需要自己定义 var epplus = new ExcelPackage(); var sheet = epplus.Workbook.Worksheets.Add("Shee ...

  7. 【原创】JMS生产者和消费者【PTP同步接收消息】

    一般步骤: 请求一个JMS连接工i厂. 是用连接工厂创建连接. 启动JMS连接. 通过连接创建session. 获取一个目标. 创建一个生产者,或a.创建一个生产者,b.创建一条JMS消息并发送到目标 ...

  8. Ubuntu 14.04下安装CUDA8.0

    配置环境如下: 系统:Ubuntu14.04 64bit 显卡:Nvidia K620M 显卡驱动:Nvidia-Linux-x86_64-375.66.run CUDA8.0 +  cudnn8.0 ...

  9. Eclipse安装Web插件

    方法/步骤     本次安装教程,我把所有的步骤都写在了图片中,大家仔细查看图片即可,希望能帮到大家   1.选择菜单栏上的“Help”   选择Install New Software   在弹出的 ...

  10. http状态码304

    服务器对客户端返回HTTP/1.1 304  意思是服务端告诉客户端 我的的缓存没有改变你不需要来取了,就用你自己本地的吧! 浏览器的三种缓存协商机制: if-modified-since (基于最后 ...