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练习题四

mysql练习题
  • bbb695480667
  • bbb695480667
  • 2017年02月22日 20:26
  • 259

mysql中一条sql语句中使用多个count关联查询多张表

在给公司写代码的过程中忽然发现在sql语句中碰到一些小问题,虽然最终自己解决了,但是不得不说好不容易啊,故写此博客提醒自己,以免日后再在此处浪费时间。 需求: 有两张表,分别是marketChan...
  • gwd1154978352
  • gwd1154978352
  • 2017年11月22日 19:09
  • 255

【引用】四元组与旋转矩阵

【引用】四元组与旋转矩阵    2011-09-22 17:13:39|  分类: DirectX资料|举报|字号 订阅      ...
  • linuxheik
  • linuxheik
  • 2015年10月14日 19:44
  • 897

四元素(Quaternion)与旋转

四元素性质及其与欧拉角、旋转矩阵的转换关系
  • u010297353
  • u010297353
  • 2015年10月11日 18:22
  • 1665

四叉树空间索引原理及其实现

四叉树索引的基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。四叉树的结构比较简单,并且当空间...
  • zhouxuguang236
  • zhouxuguang236
  • 2013年10月05日 15:59
  • 56190

四轴飞行器之电调篇

电调是驱动电机用的调速器。电调对应使用的电机不同,分为有刷电调和无刷电调。目前我使用的四轴的电机为有刷直流电机,无 刷电机的操作相对来说比较麻烦,有刷电机就是四驱车上的那种。有刷电机一般需要一个功率器...
  • qq_27312943
  • qq_27312943
  • 2016年12月10日 08:52
  • 1647

3D数学之四元组应用及实现

第一次接触四元组是在使用OGRE引擎的时候,那个时候非常好奇,为什么4个数字就能表示一个旋转,另外为什么要用四元组来表示旋转,用旋转矩阵不是挺好的吗?经过一段的时间的学习,算是对四元组有了基础的认识,...
  • seamanj
  • seamanj
  • 2013年03月05日 09:42
  • 3722

四叉树编码实现

关于四叉树的原理我想应该不需要多说啦,大家都懂得,实在不晓得的话,百度吧~ 由于四叉树索引效率还可以并且非常简单,因此在Gis中广泛的应用也是毋庸置疑的。   本次就自己实现一个地图四叉树索引,...
  • devCopper
  • devCopper
  • 2013年09月16日 11:48
  • 6875

四叉树管理场景

原文地址:http://www.cppblog.com/liangairan/articles/48705.html 自从我发布作品3D地形渲染以来,有很多朋友表示了对我所使用的地形LOD算...
  • donglei2007
  • donglei2007
  • 2013年05月22日 13:21
  • 3808

【原创】【程序小游戏】平面四子棋 C++

平面四子棋事先声明:代码是我自个儿写的,规则不是我发明的~~~~。 我觉得我真是太不务正业了!规则在一个7*12的棋盘里,下四子棋。只不过,这个棋盘是竖立着的,它的棋子是从上往下掉的。 比如说: ...
  • c20182030
  • c20182030
  • 2017年05月20日 22:30
  • 593
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql学习笔记四
举报原因:
原因补充:

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