mysql_数据完整性
来源:互联网 发布:python高级编程 编辑:程序博客网 时间:2024/06/01 08:02
数据完整性。(数据完整性指的是存储在数据库中的数据的一致性和准确性)
数据完整性分类: 1、实体完整性 PRIMARY KEY约束 UNIQUE约束 (唯一值) 自增特性 auto_increment 2、域完整性 数据类型 非空约束 not null CHECK约束 MySQL不支持 DEFAULT约束 3、参照完整性 FOREIGN KEY约束 4、用户自定义完整性 存储过程和触发器
约束。
1、NOT NULL约束 功能:限制用户向表中插入数据时,某列必须插入值,不允许为空 添加约束的方法:在列的定义后面直接添加关键字NOT NULL。(不写默认为NULL) 示例: CREATE TABLE student ( stuID CHAR(5) NOT NULL, stuName VARCHAR(10) NOT NULL, stuSex ENUM('男', '女') #此列允许不插入值 ) 验证NOT NULL约束的功能 另一种添加非空约束的方法:、 create table t1(tid NUMBER); alter table t11 modify tid char(5) not null; (可以既改变类型,又添加约束)2、DEFAULT约束 当INSERT语句没有指定值时,DEFAULT约束会在列中输入一个默认值。 定义DEFAULT约束的语法 : DEFAULT constraint_expression MySQL中的默认值约束有一个限制,即:默认值只能是一个常量,不能象Oracle那样允许函数。 只有一个例外:CURRENT_TIMESTAMP 下面这些语句是等效的: CREATE TABLE t (ts TIMESTAMP); CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);3、PRIMARY KEY约束 PRIMARY KEY约束用来实现实体完整性 确保特定的列中不允许重复,且不许为NULL PRIMARY KEY约束定义了表的主键,它可以唯一地标识一行。 每个表只能定义一个PRIMARY KEY约束 可以定义在一列或多列上 定义PRIMARY KEY约束的语法 : [CONSTRAINT constraint_name] PRIMARY KEY {(column_name [,…])} 示例: DROP TABLE t_doctor; CREATE TABLE t_doctor ( doc_id CHAR(5) PRIMARY KEY, doc_name CHAR(8) NOT NULL, sex CHAR(2), phone VARCHAR(20) ); * *创建病人表,注意:不支持注释符-- */ CREATE TABLE t_patient ( pat_id CHAR(5), pat_name CHAR(8) NOT NULL, sex CHAR(2), PID CHAR(18), phone VARCHAR(20), CONSTRAINT pk_patient_id PRIMARY KEY(pat_id) CONSTRAINT pk_patient_id 也可以省略4、UNIQUE约束 UNIQUE约束也用来实现实体实整性 UNIQUE约束表明同一列的任意两行都不能具有相同值。 可以插入多个NULL(与其他的DBMS不一样) 若表中已有一主键,但又想保证其他的列也是唯一的,可以定义UNIQUE约束。 一个表中可以有多个UNIQUE约束 定义UNIQUE约束的语法 : [CONSTRAINT constraint_name] UNIQUE {(column_name [,…])} 在创建表时添加UNIQUE约束 DROP TABLE t_patient; CREATE TABLE t_patient ( pat_id CHAR(5) PRIMARY KEY, pat_name CHAR(8) NOT NULL, PID CHAR(18) UNIQUE, /* CONSTRAINT un_PID UNIQUE(PID) */ );5、CHECK约束 CHECK约束通过对输入到特定列的值设置检查条件,将输入数据限制为指定的值 可以在单列或多列上创建CHECK约束 定义CHECK约束的语法 : 在创建表时,也可以为表添加CHECK约束 CREATE TABLE t_patient ( pat_id CHAR(5) PRIMARY KEY, pat_name CHAR(8) NOT NULL, sex CHAR(2) CHECK(sex='男' OR sex='女'), PID CHAR(18), phone VARCHAR(20), CONSTRAINT ck_patient_PID CHECK(length(PID)=18 OR length(PID)=15) ); 6、FOREIGN KEY约束 FOREIGN KEY约束定义了表之间的一致性关系,用于强制参照完整性。 FOREIGN KEY约束定义了对同一个表或其他表的列的引用,这些列具有PRIMARY KEY或者UNIQUE约束。 定义FOREIGN KEY约束的语法 : [CONSTRAINT constraint_name] [FOREIGN KEY(column_name [,…])] REFERENCES ref_table[(ref_column_name [,…])] [ON DELETE {CASCADE | SET NULL|NO ACTION}] [ON UPDATE {CASCADE | SET NULL|NO ACTION}] DROP TABLE t_record; CREATE TABLE t_record ( pat_id CHAR(5) REFERENCES t_patient(pat_id), #MySQL中这样写创建不上约束 admission_date DATE, doc_id CHAR(5), diagnosis NVARCHAR(500), FOREIGN KEY(pat_id) REFERENCES t_patient(pat_id), FOREIGN KEY(doc_id) REFERENCES t_doctor(doc_id) 7、级联引用完整性 [ON DELETE {CASCADE | SET NULL|NO ACTION}] [ON UPDATE {CASCADE | SET NULL|NO ACTION}] CASCADE使用级联,删除或更新主表数据时,同时删除从表中的数据或将从表中的数据自动更新。 SET NULL选项则在删除或更改主表数据时,自动将从表中相应数据设置为空。 NO ACTION不使用级联 ALTER TABLE t_record ADD CONSTRAINT fk_record_docid FOREIGN KEY(doc_id) REFERENCES t_doctor(doc_id) ON DELETE CASCADE; ALTER TABLE t_record ADD CONSTRAINT fk_record_patid FOREIGN KEY(pat_id) REFERENCES t_patient(pat_id) ON DELETE SET NULL; 8、删除约束 ALTER TABLE table_name DROP PRIMARY KEY #删除主键约束 | DROP INDEX index_name #可用此句删除唯一约束 | DROP FOREIGN KEY fk_symbol #删除外键约束 NOT NULL与DEFAULT约束以修改列的方式实现 CHECK约束根本就没有保存 ALTER TABLE t_record DROP foreign key fk_record_docid; ALTER TABLE t_record DROP foreign key fk_record_patid; 9、查看表中的约束 Show create table t_record;
阅读全文
0 0
- MySql_保证数据完整性
- mysql_数据完整性
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性以及保证数据完整性
- 确保数据完整性
- 数据完整性与约束
- 数据完整性 Data Integrity
- 数据完整性保护
- 数据完整性概述
- 数据库理论-数据完整性
- 维护数据完整性
- SQL Server数据完整性
- 浅析数据完整性问题
- 设计数据完整性
- hdu 4398 X mod f(x)(数位DP)
- 把一个对象的属性值拷贝到另一个对象上去
- setup time的一些思考点
- HDU1013
- 例题6-16 单词(Play On Words, UVa 10129)
- mysql_数据完整性
- 卡尔曼滤波算法分析
- HDU 4821 字符串哈希
- JavaScript的数组,函数,对象
- Elasticsearch之分析(analysis)和分析器(analyzer)。
- HDU1014
- 信息熵计算(自己编写的python代码,垃圾,高手绕道)
- OAuth2.0第三方授权
- 知道~ 做到