iOracle实战笔记(第五天)

  今天的主要内容:维护数据的完整性、索引、管理Oracle的权限和角色。

一、维护数据库的数据的完整性

  数据完整性用于确保数据库数据遵从一定的商业规则和逻辑规则。在Oracle中,数据完整性可以使用约束触发器应用程序(过程和函数)三种方法来实现。在这三种实现方法中约束最易于维护,且性能最好,所以一般使用约束来作为数据维护的是首选。下面内容也主要是对约束的讲解。

  1、约束(Constraint)

  约束用于确保数据库满足特定的商业规则。Oracle中约束包括五种:not null(非空)、unique(唯一)、primary key(主键)、foreign key(外键)、check(检查)。

not null:非空约束,当该列定义了not null约束是,那么该列数据不允许为空。

unique:数据唯一约束,当定义了unique约束,该列值不能重复,但允许为空。

primary key:主键约束,用于唯一标识表行的数据,该列值不能为空且不能重复。ps:一张表只能有一个主键。

foreign key:外键约束,用于定义主表和从表字啊进的关系,外键约束要定义在从表上,而主表必须具有主键约束或unique约束。要求外键列数据必须存在于主表主键列或unique列或为null。

check :用于强制行数据必须满足的条件。比如sal列定义了check约束,并要求sal列在1000~2000之间,如果插入数据时不满足会报错。

  2、商店销售系统表设计案例

  现有一个商店的数据库,记录客户机器购物情况,由三个表组成:

商品表goods(商品号goodsId,商品名 goodsName,单价 unitprice,商品类别category,供应商provider);

客户表customer(客户号customerId,姓名name,住在address,电邮email,性别sex,身份证cardId);

购买表purchase(客户号customerId,商品号goodsId,购买数量nums);

   请用sql语句完成下列需求:

建表,在定义中要求声明: (1)每个表的主外键; (2) 客户的姓名不能为空值; (3) 单价必须大于0,购买数量必须在1到30之间; (4) 电邮不能够重复; (5).客户的性别必须是男或者女,默认是男。

--商品表 create table goods(goodsId char(8) primary key ,--商品号,主键 goodsName varchar2(30) ,--商品名 unitprice number(8,2) check(unitprice > 0),--单价(0,999999.99] categry varchar2(10) ,--商品类别 provider varchar2(30) --供应商 ); --客户表 create table customer(customerId char(8) primary key ,--客户号,主键 name varchar2(20) not null,--姓名(非空) adress varchar(50),--住址 email varchar(20) unique,--邮箱(唯一) sex char(2) default '' check(sex in('','')) ,--性别(默认男) cardId char(18)--身份证 ); --购买表 create table purchase( customerId char(8) references customer(customerId),--客户号,外键 goodsId char(8) references goods(goodsId),--商品号,外键 nums number(2) check(nums between 1 and 30)--购买数量,[1,30] );

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdwzg.html