未加星标

oracle基础教程(第五天)管理索引、权限和角色

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏
期望目标
1.掌握维护oracle数据完整性的技巧
2.理解索引概念,会建立索引
3.管理oracle的权限和角色
维护数据的完整性
数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则。在oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的性能,所以作为维护数据完整性的首选。
约束
约束用于确保数据库数据满足特定的商业规则。在oracle中,约束包括:not null、unique(唯一)、primary key、foreign key和check(检查)五种。
not null(非空)
如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
unique(唯一)
当定义了唯一约束后,该列值是不能重复的,但是可以为null。
primary key(主键)
用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。
需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。
foreign key(外键)
用于定义主表和从表之间的关系。外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null。
check
用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间,如果不在1000~2000之间就会提示出错。
商店售货系统表设计案例---创建
SQL>createtablescott.goods(--商品表
goodsIdchar(8)primarykey,--主键
goodsNamevarchar2(30),
unitpricenumber(10,2)check(unitprice>0),
categoryvarchar2(8),
providervarchar2(30)
);
SQL>createtablecustomer(--客户表
customerIdchar(8)primarykey,--主键
namevarchar2(50)notnull,--不为空
addressvarchar2(50),
emailvarchar2(50)unique,
sexchar(2)default'男'check(sexin('男','女')),
cardIdchar(18)
);
SQL>createtablepurchase(--购买表
customerIdchar(8)referencescustomer(customerId),
goodsIdchar(8)referencesgoods(goodsId),
numsnumber(5)check(numsbetween1and30)
);
商店售货系统表设计案例(2)---维护
增加商品名不能为空
SQL>altertablegoodsmodifygoodsNamenotnull;
增加身份证不能重复
SQL>altertablecustomeraddconstraintcarduniqueunique(cardId);
增加客户的住址限制
SQL>altertablecustomeraddconstraintaddresscheckcheck(addressin('东城','西城'));
删除约束
当不在需要某个约束时,可以删除。
SQL>alter table 表名 drop constraint 约束名称;
特别说明:
在删除主键约束的时候,可能有错误,比如:
SQL>alter table 表名 drop primary key;
这是因为如果两张表存在主从关系,那么在删除主表的主键约束时,必须带上cascade选项,如下:
SQL>alter table 表名 drop primary key cascade;
显示约束信息
1.显示约束信息
通过查询数据字典视图user_constraints,可以显示当前用户所有的约束的信息。
SQL>select constraint_name,constraint_type,status,validated from user_constraints where table_name = '表名';
2.显示约束列
通过查询数据字典视图user_cons_cloumns,可以显示约束所对应的表列信息。
SQL>select column_name,position from user_cons_cloumns where constraint_name='约束名';
3.当然也有更容易的方法,直接用pl/sql developer查看即可。
表级定义和列级定义
列级定义
列级定义是在定义列的同时定义约束
如在department表定义主键约束
SQL>create table department4(
dept_id number(2) constraint pk_department primary key,
name varchar2(12),
loc varchar2(12)
);
表级定义
表级定义是指在定义了所有列后,再定义约束。这里需要注意的是not null约束只能在列级上定义。
以在建立employee2表时定义主键约束和外键约束为例:
SQL>create table employee2(
emp_id number(4),name varchar2(15),dept_id number(2),
constraint pk_employee primary key (emp_id),
constraint fk_department foreign_key (dept_id)
references department4(dept_id));
管理索引 --- 原理介绍
索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引有很多种,我们主要介绍常用的几种:
为什么添加了索引后,会加快查询速度呢?
管理索引---创建索引

本文数据库(综合)相关术语:系统安全软件

分页:12
转载请注明
本文标题:oracle基础教程(第五天)管理索引、权限和角色
本站链接:http://www.codesec.net/view/481530.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(29)