数字字典表

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

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是唯一的。

创建序列

create sequence seq;

select seq.nextval from dual;

--指定增量

create sequence seq2 start with 1 increment by 2;

删除序列

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. MAC下Homebrew的安装

    1.Homebrew是啥东东? Homebrew的官方网站http://brew.sh/index.html上有这么一句“Homebrew installs the stuffyouneed that ...

  2. SQL Server数据库SP命令祥解

    1.数据库: (1)sp_helpdb:报告有关指定数据库或所有数据库的信息.例:sp_helpdb   --显示所有数据库信息(名称.大小等)例:sp_helpdb Recruitment   -- ...

  3. V4L2框架分析学习二

    转载于:http://www.techbulo.com/1198.html v4l2_device v4l2_device在v4l2框架中充当所有v4l2_subdev的父设备,管理着注册在其下的子设 ...

  4. windows XP上实现python2.7.5和python3.4.3共存

    windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...

  5. H5案例分享:JS手势框架 —— Hammer.js

    JS手势框架 -- Hammer.js 一.hammer.js简介 hammerJS是一个开源的,轻量级的触屏设备javascript手势库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件.允许 ...

  6. discuz首页设置默认地址不带forum.php后缀的方法

    最近在研究discuz,上传安装几部搞定,打开首页跳到含有"/forum.php"的网址,到管理中心改了好一会儿也没好.那么如何实现discuz首页设置不带forum.php后缀呢 ...

  7. 天河微信小程序入门《三》:打通任督二脉,前后台互通

    原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https ...

  8. IIS网站或系统验证码不显示问题——"使用了托管的处理程序,但是未安装或未完整安装 ASP.NET"

    在IIS上发布了一个系统,但是登陆页面的验证码图片一直出不来,尝试了各种办法,权限.路径.继承父类路径等都不管用,进入Login.html,对着无验证码图片的图标,右键复制图片的网址,粘贴到地址栏,出 ...

  9. optparse

    Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...

  10. tomcat端口被占用问题完美解决方案!

    启动Tomcat服务器报错:Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are alrea ...