外键:InnoDB支持外键.
若要设置外键,则参照表和被参照表都必须对相应字段设置索引.设置完索引便可
设置外键.可以在定义外键的时候,在最后加入这样的关键字:
ON UPDATE CASCADE; 即在主表更新时,子表(们)产生连锁更新动作,似乎有
些人喜欢把这个叫“级联”操作。:)除了 CASCADE 外,还有 RESTRICT(禁止主
表变更)、SET NULL(子表相应字段设置为空)等操作。
例:需要对表pc的cpumodel字段设置为"外键",这个键来自于表parts
对 Parts表:
  ALTER TABLE parts ADD INDEX idx_model (model);
这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。
对Pc表也类似:
  ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);
设置外键:
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
FOREIGN KEY (cpumodel)
REFERENCES parts(model);
第一行是说要为Pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;第二行是说将本表的 cpumodel字段设置为外键;第三行是说这个外键受到的约束来自于Parts表的model字段。
  这样,我们的外键就可以了。如果我们试着CREATE一台Pc,它所使用的CPU的型号是Parts表中不存在的,那么MySQL会禁止这台PC被CREATE出来。
InnoDB 和MyISAM之前的区别.
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。 
NULL列索引。 
对变长行比ISAM表有更少的碎片。 
支持大文件。 
更好的索引压缩。 
更好的键吗统计分布。 
更好和更快的 auto_increment处理。
1.MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作
2.MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。
以下是一些细节和具体实现的差别:
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在 MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
以暂对存储引擎的认识,觉得 InnoDB 支持外键,在数据量可以用“庞大”来形容时,在有良好的 INDEX 的基础上,InnoDB 的查询速度应该比 MyISAM 要快。
在 Falcon 有稳定版本前,我想 MyISAM 是一个可用的选择方案。
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

转载于:https://www.cnblogs.com/qesystem/archive/2010/05/22/1741636.html

mysql学习笔记 ----外键.myisam和innodb的区别相关推荐

  1. MySQL学习笔记-主键索引和二级索引

    文章目录 MySQL学习笔记-主键索引和二级索引 1.笔记图 2.索引的常见模型 3.InnoDB 的索引模型 4.主键索引和普通索引查询的区别 5.如何选择主键字段 6.笔记图 7.回表过程 8.最 ...

  2. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  3. Mysql学习笔记4-外键约束的要求解析

    有foreign关键词的pid称为外键列和id参照列具有相同/相似的数据类型,在数字的情况下必须相同,字符的情况下可以不同:外键列和参照列必须创建索引,相同长度.有无符号位相同的特征: 有外键的表称为 ...

  4. MySQL学习笔记(二):MyISAM 存储引擎

    MyISAM 存储引擎 MyISAM 基于旧的 (不再可用) ISAM 存储引擎, 但有许多有用的扩展. 每个 MyISAM 表都存储在三个文件中的磁盘上.这些文件具有以表名开头的名称, 并具有用于指 ...

  5. mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 整个数据库数据备份也称为sql数据备份:备份的结果都是sql指令 在mysql中,提供了专门用于备份sql的客户端: ...

  6. mysql innodb 外键_只有innoDB才允许使用外键

    1.只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎. 2.注意: 1.必须使用InnoDB引擎: 2.外键必须建立索引(INDEX): 3.外键绑定关系这里使用了&qu ...

  7. 零基础带你学习MySQL—foreign key 外键(二十六)

    零基础带你学习MySQL-foreign key 外键(二十六) -- 外键演示 -- 创建 主表 my_class CREATE TABLE my_class ( id INT PRIMARY KE ...

  8. Mysql学习总结(19)——Mysql无法创建外键的原因

    在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  9. 小白终是踏上了这条不归路----小文的mysql学习笔记(6)----连接查询-----等值连接、非等值连接、自链接、外连接、交叉连接

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

最新文章

  1. 315MHz 高频射频发射模块
  2. PyCharm+QT Designer整合
  3. Android笔记之模拟器
  4. Matlab矩阵、元胞数组的合并拼接
  5. html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码
  6. 【IDE】JetBrains全家桶教程系列,学生认证 + 汉化
  7. html5用户输入后自动显示用户名已重复_IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素...
  8. C语言:查找数组中最小的元素
  9. macos 设置内外网同时访问
  10. Ubuntu下kdiff3的使用
  11. 富文本编辑器上传图片不显示问题
  12. Word中规范输入大写的中文日期(转)
  13. 电脑使用哪个录制视频软件比较好
  14. 基于微信小程序图书借阅管理系统(微信小程序毕业设计)
  15. apachecn归档下载
  16. CTO成长之路(一):优秀的程序员
  17. cocos Creator打包
  18. Qt学习:QtCharts绘制动态曲线,实时更新数据与坐标轴
  19. 最全的 cadence 元器件库详细说明
  20. 《A Transformer-based joint-encoding for Emotion Recognition andSentiment Analysis》论文翻译

热门文章

  1. 如何产生好的词向量?
  2. linux下目标文件的类型6,Linux下文件类型
  3. python定义二维空数组_带有空第二维的数组/向量的Python / numpy问题
  4. w7设置双显示器_学习工作效率不高?处理事情慢半拍?教你使用双显示器来改善...
  5. Eclipse用法和技巧十九:eclipse修改workspace
  6. if....else的基本用法
  7. 有关c#.net“无法加载 CSOpenGLC.dll:找不到指定的模块”的问题解决办法
  8. springboot shiro ajax,SpringBoot Shiro 登录成功后返回json数据 shiro使用ajax登录
  9. 独家揭秘:微博深度学习平台如何支撑4亿用户愉快吃瓜?
  10. linux环境知识点备忘录