数据库约束
来源:互联网 发布:ios短信群发软件 编辑:程序博客网 时间:2024/04/29 14:36
什么是数据库约束? 数据库约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具。 一般来说有以下几种实现方式: 1、检查约束: 通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求。 比如以下的表定义: CRATE TABLE student( id serial, name varchar(10), scrore integer CHECK (scrore > 0)); 定义分数不能小于0。 也可以在表级定义: CHECK (字段1 秘字段2之间的关系) 2、非空约束: 这个大家应该很熟悉了。直接在字段后面加上:NOT NULL。 3、唯一约束: 定义一个唯一约束但是它并不包括NULL值。直接在字段定义后加入UNIQUE即可定义一个唯一约束。 4、主键约束: SQL 92建议在建立一个表时定义一个主键:它其实就是:唯一约束+非空约束。 5、外键: 所有约束里数这个约束最有意思了:比如说有这样一件事,你需要做一个学生查询的网页。那么为了方便,你将建立三个数据表: 一个是学生情况表: CREATE TABLE student( id serial primary ke, name varchar(10), ....... ); 一个表是记录所开的课程 CREATE TABLE class( class_id varchar(5) primary key, describe varchar(20) ..... ); 一个表是记录学生成绩的表: CREATE TABLE score( id integer references student, class_id varchar(5) references class, score integer CHECK (score > 0) ); 这个时候你会发现以下几件事: 如果你在成绩表里输入不存在的学生和课程,数据系统将拒绝。如果你要删除一个学生,但是他已经在成绩表里有记录,数据库将拒绝删除这个学生的记录。 那么我们现在来看,前面一个对我们是有利的,因为谁都不想一个学生无缘无故的有了一个成绩的记录,但是在删除的时候就会比较麻烦了,有时候我的确是想删除 这个学生。那么我总不能在应用程序里照顾得那么周到吧。不要紧我们在定义数据表的时候只在外键那一样加入以下控制就OK了,我们来重新定义数据表 score CREATE TABLE score( id integer references student ON UPDATE CASCADE ON DELETE CASCADE, //我们希望在学生记录改变时自动改变分数记录,在删除学生级联删除分数记录 class_id varchar(5) references class ON UPDATE CASCADE ON DELETE RESTRICT, //我们希望在改变课程时自动改变分数记录表里关于课程的引用,但是不希望删除课程时级联删除分数。 ..... ); 这样我们就可以很好做到数据完整了。
- 数据库约束
- 数据库约束
- 数据库约束
- 数据库约束
- 数据库约束
- 数据库约束
- 数据库约束
- 数据库--约束
- 数据库约束
- 数据库约束
- 数据库-约束
- Oracle数据库完整性约束
- 数据库定义-约束
- 数据库完整性约束
- 数据库的约束简介
- 数据库之约束关系
- oracle数据库约束
- 数据库增加删除约束
- 解决struts validator未义的问题
- 随笔
- Chicken & Pigs
- Skype录音答录机 编程思路阐述和源代码下载
- ASCII码
- 数据库约束
- 踏上跳槽之路
- 设置tomcat 5.5版本的Log4j日志功能
- C复习笔记(6)-6.24
- 设计方案被否决
- My Money ,My life,My god!I hate!
- 另一个,Ubuntu英文状态下安装scim输入法的方法
- 在曲折中学习C#
- 在曲折中学习C#