龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

Mysql外键用法分析

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
Mysql外键用法是Mysql数据库中的基础知识,下面就为您详细将介绍 Mysql 外键用法,如果您对此方面有兴趣的话,不妨一看。 昨晚用Mysql建外键约束,始终没有成功,今天找到这个,原来

Mysql外键用法是Mysql数据库中的基础知识,下面就为您详细将介绍Mysql外键用法,如果您对此方面有兴趣的话,不妨一看。

昨晚用Mysql建外键约束,始终没有成功,今天找到这个,原来只有InnoDB类型的表才可以使用Mysql外键.

只有InnoDB类型的表才可以使用外键

  1. CREATE TABLE person (   
  2. id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,   
  3. name CHAR(60) NOT NULL,   
  4. PRIMARY KEY (id)   
  5. )type=innoDB;   
  6.  
  7. CREATE TABLE shirt (   
  8. id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,   
  9. style ENUM('t-shirt', 'polo', 'dress') NOT NULL,   
  10. color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,   
  11. owner SMALLINT UNSIGNED NOT NULL,   
  12. FOREIGN KEY (owner) REFERENCES PERSON(id)   
  13. ON DELETE CASCADE   
  14. ON UPDATE CASCADE,   
  15. PRIMARY KEY (id)   
  16. )type=innoDB;   
  17.  

然后打开MySQL Administrator终于看到 FOREIGN KEY有东西了,尝试手工删除后再用MySQL Administrator建立,成功。

  1. INSERT INTO person VALUES (NULL, 'Antonio Paz');   
  2.  
  3. SELECT @last :LAST_INSERT_ID();   
  4.  
  5. INSERT INTO shirt VALUES   
  6. (NULL, 'polo', 'blue', @last),   
  7. (NULL, 'dress', 'white', @last),   
  8. (NULL, 't-shirt', 'blue', @last);   
  9.  
  10. INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');   
  11.  
  12. SELECT @last :LAST_INSERT_ID();   
  13.  
  14. INSERT INTO shirt VALUES   
  15. (NULL, 'dress', 'orange', @last),   
  16. (NULL, 'polo', 'red', @last),   
  17. (NULL, 'dress', 'blue', @last),   
  18. (NULL, 't-shirt', 'white', @last);   
  19.  
  20. SELECT * FROM person;   
  21.  
  22. SELECT * FROM shirt;   
  23.  

测试UPDATE关联

  1. UPDATE PERSON SET id=3 WHERE id=1;   
  2. SELECT * FROM shirt;   

测试DELETE关键

  1. DELETE FROM PERSON WHERE id=3;   
  2. SELECT * FROM shirt;  

解读MySQL数据库产品定价新策略

带您学习DB2字符集和MySql字符集

查看MySQL数据库表的命令介绍

基于Hash算法的Mysql分表处理

MySQL定义外键的方法


精彩图集

赞助商链接