韩顺平oracle视频笔记七

原创 2013年12月04日 09:55:46

Oracle数据的完整性
用于确保数据遵从一定的商业和逻辑规则,在Oracle中数据的完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现。

Oracle中约束有如下五种:
not null插入的时候不能为空
unique不能重复,但是可以为空
primary key不能重复,而且不能为null
(一个表最多只能有一个主键,但是可以有多个unique)
foreign key外键
check用于强制数据必须满足的条件,假定sal列值在1000-2000之间如果不在就会出错

商店售货系统表设计案例

create table goods(
goodsId char(36) primary key,
goodsName varchar2(36),
unitprice number(10,2) check (unitprice>0),
category varchar2(36),
provider varchar2(36)
);

create table customer(
customerId char(36) primary key,
name varchar2(36) not null,
address varchar2(100),
email varchar2(50) unique,
sex char(2) default '男' check (sex in('男','女')),
cardId char(18)
);

create table purchase(
customerId char(36) references customer(customerId),
goodsId char(36) references goods(goodsId),
nums number(5) check(nums between 1 and 30)
);

 备注:在使用外键的时候,一定要保证外键一定是另外一张表的主键,如果另外一张表没有声明为主键则创建表会报错的

商品名称不能为空
alter table goods modify goodsName not null;
增加身份证不能重复
alter table customer add constraint cardunique unique(cardId)
增加客户的住址只能是"海淀","朝阳","东城","西城","通州"等
alter table customer add constraint addresscheck check(address in('东城','西城'))

删除约束
alter table customer drop constraint addresscheck;

alter table 表明 drop primary key cascade;

列级定义(在定义列的同时定义约束)
create table department(
dept_id number(2) constraint pk_department primary key,
name varchar2(12),
loc varchar2(12)
);
表级定义(定义了所有列后再定义约束,not null只能在列级定义)
create table employee(
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 department(dept_id)
);

 

韩顺平oracle视频笔记一

使用@或者Start运行脚本sql>@ c:\insert.sqlsql>start c:\delete.sql 只能由dba角色才能创建用户create user huangbiao identi...
  • hbiao68
  • hbiao68
  • 2013年12月04日 09:55
  • 337

韩顺平oracle视频笔记二

char 定长  最大2000字符varchar2 变长 最大字符4000clob  字符型大对象 位4G number -10的38次方到10的38次方,可以表示整数和小数表示一个小数(数字为5位...
  • hbiao68
  • hbiao68
  • 2013年12月04日 09:55
  • 275

韩顺平oracle视频笔记三

查看一个表的结构desc scott.dept; 打开显示操作的开关,即相关操作显示多长时间set timing on; 指定查询列比查询所有列要快 create tables users(us...
  • hbiao68
  • hbiao68
  • 2013年12月04日 09:55
  • 267

【自学oracle】韩顺平oracle视频教程学习笔记

第一讲 oracle的数据对象(表,视图,序列,函数,包,过程,触发器) 不同的数据库 数据对象未必是完全相同的 例如sqlserver2000里面就没有包 多少人用(并发问题) 第二讲 1.9i...

韩顺平玩转oracle视频教程笔记

  • 2011年11月08日 22:11
  • 1.08MB
  • 下载

天易05----韩顺平oracle视频讲解部分总结(01)

desc 表名;(可查看该表的详细信息) showuser;(查看当前所使用的用户) 修改字段名:alter table [表名] rename column 旧的字段名 to 新的字段名; 1...

韩顺平玩转oracle视频教程笔记.doc

  • 2013年07月19日 11:34
  • 994KB
  • 下载

天易11----韩顺平oracle视频讲解部分总结(04)

系统函数:sys_context terminal:当前会话客户所对应的终端的标示符 language:语言 db_name:当前数据库名称 nls_date_formal:当前会话客户所对应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:韩顺平oracle视频笔记七
举报原因:
原因补充:

(最多只允许输入30个字)