mysql学习笔记四
来源:互联网 发布:java 10 编辑:程序博客网 时间:2024/05/16 01:40
mysql维护数据的完整性
数据的完整性用于确保数据库数据遵从一定的
商业的逻辑规则。在oracle中,数据完整性可
以使用约束、触发器、过程三种方法来实现,
在这三种方法中,因为约束易于维护,并且具
有最好的性能,所以作为维护数据完整性的首选。
维护数据的完整性—约束
约束用于确保数据库数据满足特定的商业规则。
在mysql中,约束包括: not null、unique,
primary key,foreign key,和check 五种.
在mysql中,约束包括: not null、unique,
primary key,foreign key,和check 五种.
(1)not null(非空)
如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
字段名 字段类型 not null
(2)unique(唯一)
当定义了唯一约束后,该列值是不能重复的.但是可以为null。
当定义了唯一约束后,该列值是不能重复的.但是可以为null。
字段名 字段类型 unique
(3)primary key(主键)
用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。
用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。
字段名 字段类型 primary key
注:一张表最多只能有一个主键,但是可以有多个unqiue约束。
(4)foreign key(外键)
用于定义主表和从表之间的关系: 外键约束要定义在从表上,主表则必须具有主键约束或是unique约束.,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null (学生/班级 图示)
FOREIGN KEY (本表字段名) REFERENCES
主键表名(主键名或unique字段名)
主键表名(主键名或unique字段名)
如:
--外键指向的字段类型要一致
create table classes
(id varchar(64) primary key,
name varchar(64)) type=innodb;
insert into classes values('1','aaa');
--创建student表
create table student
(id int primary key,
name varchar(64) not null,
classId varchar(32), --这里如果写成classId int 则不能创建外键成功!
foreign key (classId) references classes(id)
);
create table classes
(id varchar(64) primary key,
name varchar(64)) type=innodb;
insert into classes values('1','aaa');
--创建student表
create table student
(id int primary key,
name varchar(64) not null,
classId varchar(32), --这里如果写成classId int 则不能创建外键成功!
foreign key (classId) references classes(id)
);
注:外键指向的表的字段,必须是primary key 或者是 unique
表的类型是innodb, 这样的表才支持外键
外键字段的类型要和主键字段的类型一致(长度可以不同)
外键字段的值,必须在主键字段中出现过,或者为null
表的类型是innodb, 这样的表才支持外键
外键字段的类型要和主键字段的类型一致(长度可以不同)
外键字段的值,必须在主键字段中出现过,或者为null
(5)check
用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间如果不再1000~2000之间就会提示出错。
☞ oracle 和 sql server 均支持check ,但是mysql目前还不支持check ,只做语法校验,但不会生效。
☞ oracle 和 sql server 均支持check ,但是mysql目前还不支持check ,只做语法校验,但不会生效。
create table user4(id int primary key, name varchar(64) not null,
sex varchar(6) check (sex in('man','woman')),
salary int check (salary>=1000 and salary<=2000));
sex varchar(6) check (sex in('man','woman')),
salary int check (salary>=1000 and salary<=2000));
在mysql中实现check的功能,一般是在程序中控制,或者通过触发器完成。
(6)删除约束
当不再需要某个约束时,可以删除.
alter table 表名 drop {index|key} 约束名称;
在删除主键约束的时候,可能有错误,比如:
alter table 表名 drop {index|key} 约束名称;
在删除主键约束的时候,可能有错误,比如:
alter table 表名 drop primary key
这是因为有另外一张表的外键指向该主键,所以需要先删除指向该主键的外键,然后再删除该主键。
删除外键:
删除外键:
alter table 表名 drop foreign key fk_name
- mysql学习笔记四
- Mysql学习笔记四
- MySQL学习笔记四
- MySQL学习笔记(四)
- Mysql学习笔记之四
- Mysql学习笔记四,字符集
- MySQL学习笔记四:字符集
- MySQL学习笔记(四)
- MySQL必知必会 学习笔记 四
- MySql学习笔记(四)
- [学习笔记]MySql存储过程学习四
- Head First PHP&MySQL学习笔记(四)
- mysql学习笔记之四(视图)
- 一千行MySQL学习笔记(四)
- MySQL学习笔记(四)--常用函数
- mysql学习笔记四(查询数据)
- MySql 学习笔记四:表的拆分
- 《高性能MySQL》学习笔记四
- iPhone开发随想:rand()还是arc4random()
- 作为程序员,怎样写出杀手级简历【转】
- 110704 Factovisors
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
- html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法
- mysql学习笔记四
- 软件注册算法
- 如何积累电子档知识点(编程)
- iOS开发之指定UIView的某几个角为圆角
- ubuntu下wlan固定ip
- .Net Framework 4 0xC8000222
- this引用类的当前实例
- 裸眼3D技术简介
- css3的animation 动画