今天的主要内容:维护数据的完整性、索引、管理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] );