mysql学习笔记四

原创 2013年12月04日 15:23:19

mysql维护数据的完整性

数据的完整性用于确保数据库数据遵从一定的
商业的逻辑规则。在oracle中,数据完整性可
以使用约束、触发器、过程三种方法来实现,
在这三种方法中,因为约束易于维护,并且具
有最好的性能,所以作为维护数据完整性的首选。

 维护数据的完整性—约束

约束用于确保数据库数据满足特定的商业规则。
在mysql中,约束包括: not null、unique,
primary key,foreign key,和check 五种.

(1)not null(非空)
如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
字段名 字段类型 not null
(2)unique(唯一)
当定义了唯一约束后,该列值是不能重复的.但是可以为null。
字段名 字段类型 unique
(3)primary key(主键)
用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。
字段名 字段类型 primary key    
注:一张表最多只能有一个主键,但是可以有多个unqiue约束。
(4)foreign key(外键)
   用于定义主表和从表之间的关系: 外键约束要定义在从表上,主表则必须具有主键约束或是unique约束.,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null (学生/班级 图示)
    FOREIGN KEY (本表字段名) REFERENCES 
主键表名(主键名或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)
);
 注:外键指向的表的字段,必须是primary key 或者是 unique
表的类型是innodb, 这样的表才支持外键
外键字段的类型要和主键字段的类型一致(长度可以不同)
外键字段的值,必须在主键字段中出现过,或者为null
(5)check
   用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间如果不再1000~2000之间就会提示出错。
☞ 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));
在mysql中实现check的功能,一般是在程序中控制,或者通过触发器完成。
 (6)删除约束
    当不再需要某个约束时,可以删除.
alter table 表名 drop {index|key} 约束名称;
在删除主键约束的时候,可能有错误,比如:
   alter table 表名 drop primary key
   这是因为有另外一张表的外键指向该主键,所以需要先删除指向该主键的外键,然后再删除该主键。
    删除外键:
   alter table 表名 drop foreign key fk_name

相关文章推荐

mysql 学习笔记

  • 2015年08月08日 15:40
  • 360KB
  • 下载

MySQL学习笔记 ADY

  • 2014年06月26日 11:35
  • 1.32MB
  • 下载

Head First PHP&MySQL学习笔记(四)

五. 使用存储在文件中的数据 1. "@":PHP错误抑制指令,该表达式可能产生的任何错误信息都被忽略掉。 2. $_FILES内置超级全局变量允许访问上传文件的有关信息     $_FILES...

mysql学习笔记

  • 2012年08月02日 17:20
  • 16KB
  • 下载

MySQL学习笔记3

  • 2017年07月13日 01:02
  • 7.21MB
  • 下载

网易MySQL数据库工程师微专业学习笔记(四)

一、事务的基本操作 事务是指一系列有序的数据库操作,这些操作要么全部成功,要么全部失败,其中间的状态对于其他连接是不可见的。在mysql中事务功能的实现主要通过start transaction/be...

MySql学习笔记

  • 2011年12月13日 16:29
  • 46KB
  • 下载

MySQL5.5学习笔记

  • 2015年10月21日 17:33
  • 10KB
  • 下载

MySQL学习笔记(四)性能优化2

MySQL学习笔记(四)性能优化2 1.高效的模型设计 (1)适度冗余,让查询尽量减少Join 将别的表的数据拿出来一部分放在自己表里面,比如:发布信息表里面不仅保存用户ID,同时保存一份nic...

MySql DBA学习笔记

  • 2015年09月02日 09:29
  • 2.6MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql学习笔记四
举报原因:
原因补充:

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