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

 

数字字典表

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

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;

删除序列

drop sequence seq;

 

序列作为主键使用

insert into stu(id,name,email) values(seq.nextval,‘lisi‘,‘[email protected]‘);

insert into stu(id,name,email) values(seq.nextval,‘wangwu‘,‘[email protected]‘);

insert into stu(id,name,email) values(seq.nextval,‘chenliu‘,‘[email protected]‘);

 

 

 

三范式

范式的由来

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

范式的目标

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

第一范式

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

第二范式

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

第三范式

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

 

时间: 2024-08-10 17:08:46

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

小猪猪逆袭成博士之C++基础篇(四)数组、指针、vector、迭代器

小猪猪逆袭成博士之C++基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始有10个连续的int大小的空间.我们还是从初始化说起. 我们以数据类型int为例,当然也可由有很多的数据类型,可以是像int,double这种,也可以是自定义的类,一般的初始化方法有: int a[10]; int a[10]={0}; int a[3]={0,1,2}; 在前面的文章中,有

Oracle SQL性能优化系列

1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行an

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

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

oracle sql 基础(二):select 语句

为了从数据库中查询数据,你需要用SQL语言中使用最多的SELECT语句.我们分别介绍SELECT语句的基础语法.子查询.从多表中查询数据,然后再进行实例解析. 一.SELECT语句的基础语法 SELECT语句就像叠加在数据库表上的过滤器,即选择查询用于定位数据库特定的列和行.下面是SELECT语句的基础语法.  SELECT [ALL|DISTINCT SELECT_LIST FROM {table_name|view_name} [WHERE search_condition] [GROUP

线程基础知识系列(四)线程的同步2 线程通信和Condition变量

本文是系列的第四篇. 线程基础知识系列(三)线程的同步  :同步控制,锁及synchronized 线程基础知识系列(二)线程的管理 :线程的状态,控制,休眠,Interrupt,yield等 线程基础知识系列(一)线程的创建和启动  :线程的创建和启动,join(),daemon线程,Callable任务. 第三篇文章,重点阐述了如何使用锁和同步块对线程间共享可变变量保护,保证只有一个线程可以进入临界区.其实,没有过多的涉及另一个重要的同步概念:线程协作.第三篇中涉及的线程间并没有有效的协调.

SQL基础篇1(MICK)

数据库和SQL C:\PostgreSQL\9.5\bin\psql.exe -U postgres -d shop 数据库的基本概念 数据库(DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合 数据库管理系统(DBMS):用来管理数据库的计算机系统 DBMS的重要性:(文本文件和电子表格无法做到) 无法多人共享数据 无法提供操作大量数据所需的格式 实现读写自动化需要编程能力 无法应对突发事故 DBMS的种类 层次数据库:Hierarchical DB 关系数据库:Rel

oracle sql 基础(五):数据定义语言(创建和管理序列、索引、同义词)

许多应用程序要求使用唯一的数字作为主键的值,你即可以在应用程序中构建代码来处理这种需求,也可以用一个序列来产生唯一的数字.如果你想要增进某些查询的性能,你应该考虑创建一个索引,你也可以用索引在列或列的集合上强制唯一性.你可以用同义词为对象提供可替代的名字.下面我们来介绍序列.索引和同义词三个数据库对象.       一.创建和管理序列 序列是用户创建的数据库对象,可以被多个用户共享. 序列的一个典型的用途是创建一个主键的值,它对于每一行必须是唯一的.序列由一个Oracle内部程序产生并增加或减少

oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图

    多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门名字 --(1)必须明确的指出重复字段属于哪个表 select ename,dname dept.deptno from emp,dept where emp.deptno = dept.deptno;   --(2)新语法:join...on(...=...) select ename,

oracle sql 基础(四):数据定义语言(创建和管理表、视图)

数据定义语言 (Data Definition Language, DDL) 是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE.ALTER与DROP三个语法所组成.数据库对象包括表.视图.索引.同义词.序列等(TABLE/VIEW/INDEX/SYN/SEQUENCE).我们先对创建和管理表和视图进行一个介绍. 一.创建和管理表 数据表是数据库中一个非常重要的对象,是其他对象的基础.可分为用户表和数据字典两类. 1.创建表(CREATE TABLE) CREATE TABL