视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
约束、视图、序列、伪列和索引
2020-11-09 15:07:15 责编:小采
文档


前言 约束条件用于保证数据的完整性。主要有主键约束(primary key)/非空约束(not null)、唯一约束(unique) 检查约束(check)和外键约束(foreign key). 正文 约束 主键约束(primary key) 主键约束包含了非空和唯一 create table 表名(字段名 字段

前言

约束条件用于保证数据的完整性。主要有主键约束(primary key)/非空约束(not null)、唯一约束(unique) 检查约束(check)和外键约束(foreign key).

正文

约束

主键约束(primary key)

主键约束包含了非空和唯一

create table 表名(字段名 字段类型(长度) 约束条件);

1.创建自定义名称约束

create table 表名(字段名 字段类型(长度),constraint 约束名 约束类型(字段名));

注:可以通过user_constraints数据字典来查询约束。

非空约束(not null)

检查约束(check)

create table t_test(id number(10);sex char(2); constraint test_sex check (sex in('男',‘女’)));--可以通过在字段后面加 default 值,来设置默认值;在使用默认值时使用default关键字。

注:元组上的约束的定义

元组级别的可以设置不同属性之间取值的相互约束条件

check(ssex='女' or sname NOT like 'MS.%');--当学生性别为男时,其名字不能以MS.开头。

外键约束(foreign key 字段名 references 表名(字段名)).

外键字段可以为空,或者引用自依赖的父项。

设置级联

1.赋予空值

foreign key(外键字段) references 表名(字段) on delete set null;

2.级联删除

foreign key(外键字段) references 表名(字段) on delete cascade;

联合主键

constraint pk_t_emp primary key (字段1,字段2);

DDL操作约束

alter table 表名 drop contraints 约束名称;

alter table 表名 add contraints 约束名称 约束类型(字段);

alter table 表名 modify (字段 字段类型 要添加的约束);

视图

create or replace view 视图名 as select * from emp;

注:

复杂视图的定义是,视图中的数据不能直接通过表获得,必须通过计算来获得;复杂视图的查询字段必须取别名。

序列

序列是数据库中特有的一组能够实现自动增长的数字。

create sequence 序列名 increment by 每次增长的步长 start with 起始值。

1.select 序列名.nextval from dual.--获取序列的下一个值;获取序列的当前值采用currval属性。

伪列

oracle特有的默认提供给每一个表的,以便实现某些功能。

rownum

表示每条记录的序号(查到结果集后才分配的序号),常常用于分页。

rowid

表示每条记录的唯一标识(一组32为的字符串),可用来获取记录的物理地址

应用于分页

1.三目运算来计算总页数 totalpage=sum/pagesize+sum%pagesize==0?0:1;//计算总页数,sum为总记录数

2.第page页的记录的起始位置和结束位置分别为:

pagesize*(page-1)+1;起始位置

pagesize*page;j、结束位置

注:

1.可以使用差集(minus)在数据库查询中实现分页,但效率低'

2.常用子查询将rownum作为另一结果集的字段来实现分页。

select ee.* from(select e.* , rownum rr from (select * from emp where sal is not null order by sal ) e )ee where ee.rr berween &start and &end;

3.rownum的分页地java代码示例

索引

快速的查找定位到某条记录(底层采用rowid来实现);没有索引查找时,将采用全表扫描(full table scan)

注:

1.查找索引可以使用user_indexes数据字典。

2数据库.默认为表中的主键和唯一键建立索引。

自定义索引

create index 索引名 on 表名(字段名);

不应该应用索引的情况

1.经常进行更新操作的字段

2.表小,查询结果集大

3.不常用的字段

应用索引的情况

1.经常用来查询的字段

2.当表的数据量很大且查询的结果集较小

3.当前字段值很多为空的字段

4.经常用来作为联合查询的字段

5.外键字段

数据字典

存储描述对象(表,序列、视图、触发器、过程、函数等)信息的表或视图称为数据字典。

user_XXX 表示当前用户的相关信息的数据字典

user_tables/user_constraints/user_indexes/user_sequences/user_views/user_objects

例如:select distinct object——type from user_objects;--查看所有的对象

user_all_XXX 当前用户所能访问的对象的数据字典

dba_xxx 当前数据库下得所有对象的数据字典

总结

下载本文
显示全文
专题