mysql建立外键的一个demo
2013-11-21 11:31
471 查看
想要创建一个用户表,表中需要用户名、密码、签名、邮箱和图片,带有一个主键id
另外一个表是用户权利表,是描述用户的使用权利的,主键是用户个数计数器user_conut,还有救是txt新闻的查看次数(txtnewbrowsecount)、pic新闻的查看次数(picnewbrowsecount)、video新闻的查看次数(videonewbrowsecount),带有一个外键,是用户表表中的id
这两个表通过id来联系起来;
说一下主键:
就是区分一个表中的每一个数据项的,每一个数据项的主键都不一样,也就是用户表中不能出现相同id值得数据项
说一下外键:
不在本表中出现的,但是是本表中的约束; 打个比方,我在“用户表”中有一个id,值为2,那样我便可以在“用户权利表”中插入;但是在“用户表”并没有一个id值为99的,我要往“用户权利表”中插入数据,那么将会出现像下面的提示:
当我要删除“用户表”中id值为2的数据项的时候,“用户权利表”中的数据将会一并删除,修改的是也是同样的;因为我使用的外键描述是:
下面是demo中使用到的sql语句(包含测试数据、建数据库和查询语句):
另外一个表是用户权利表,是描述用户的使用权利的,主键是用户个数计数器user_conut,还有救是txt新闻的查看次数(txtnewbrowsecount)、pic新闻的查看次数(picnewbrowsecount)、video新闻的查看次数(videonewbrowsecount),带有一个外键,是用户表表中的id
这两个表通过id来联系起来;
说一下主键:
就是区分一个表中的每一个数据项的,每一个数据项的主键都不一样,也就是用户表中不能出现相同id值得数据项
说一下外键:
不在本表中出现的,但是是本表中的约束; 打个比方,我在“用户表”中有一个id,值为2,那样我便可以在“用户权利表”中插入;但是在“用户表”并没有一个id值为99的,我要往“用户权利表”中插入数据,那么将会出现像下面的提示:
错误代码: 1452 Cannot add or update a child row: a foreign key constraint fails (`demo`.`user_limits`, CONSTRAINT `user_limits_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE)
当我要删除“用户表”中id值为2的数据项的时候,“用户权利表”中的数据将会一并删除,修改的是也是同样的;因为我使用的外键描述是:
FOREIGN KEY(user_id) REFERENCES user_info(user_id) ON DELETE CASCADE ON UPDATE CASCADE
下面是demo中使用到的sql语句(包含测试数据、建数据库和查询语句):
DROP DATABASE IF EXISTS `demo`; CREATE DATABASE demo USE demo DROP TABLE IF EXISTS `user`; /* 新建一个user_info表 */ CREATE TABLE user_info ( `user_id` INTEGER(11) NOT NULL AUTO_INCREMENT, `username` NVARCHAR(64) COLLATE utf8_general_ci DEFAULT NULL, `password` NVARCHAR(64) COLLATE utf8_general_ci DEFAULT NULL, `qianming` TEXT COLLATE utf8_general_ci, `email` NVARCHAR(64) COLLATE utf8_general_ci DEFAULT NULL, `pic` VARCHAR(64) COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`user_id`) ); ENGINE=MYISAM AUTO_INCREMENT=237 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; /* 新建一个user_limits表 */ DROP TABLE IF EXISTS `user_limits`; CREATE TABLE user_limits( user_conut INTEGER(11) AUTO_INCREMENT PRIMARY KEY, txtnewbrowsecount INT, picnewbrowsecount INT, videonewbrowsecount INT, user_id INT,#外键user_info FOREIGN KEY(user_id) REFERENCES user_info(user_id) ON DELETE CASCADE ON UPDATE CASCADE ##创建外键关系语句 )TYPE=INNODB AUTO_INCREMENT=237; /* 往user_info表中插入测试数据 */ INSERT INTO `user_info` (`username`, `password`, `qianming`, `email`, `pic`) VALUES ('zengraoli1', '123456', 'my name is zengraoli1', 'test@111.com', ''), ('zengraoli2', '123456', 'my name is zengraoli2', 'test@112.com', ''), ('zengraoli3', '123456', 'my name is zengraoli3', 'test@113.com', ''), ('zengraoli4', '123456', 'my name is zengraoli4', 'test@114.com', ''), ('zengraoli5', '123456', 'my name is zengraoli5', 'test@115.com', ''), ('zengraoli6', '123456', 'my name is zengraoli6', 'test@116.com', '');COMMIT; /* 往user_limits表中插入测试数据 */ INSERT INTO `user_limits` VALUES (NULL, 10, 10, 10, 1), (NULL, 10, 8, 10, 2), (NULL, 10, 10, 10, 3), (NULL, 10, 10, 10, 4), (NULL, 10, 0, 10, 5), (NULL, 10, 2, 10, 69);COMMIT; SELECT * FROM `user_info` WHERE user_info.user_id = 2; SELECT * FROM `user_limits`; SELECT * FROM `user_limits` WHERE user_limits.user_id = 2; SELECT * FROM `user_info`,`user_limits` WHERE user_info.user_id = user_limits.user_id AND user_info.user_id = 2
相关文章推荐
- 在cmd的命令下 用Mysql中建立一个表
- MySQL 外键建立错误
- 【起航计划 022】2015 起航计划 Android APIDemo的魔鬼步伐 21 App->Launcher Shortcuts 为某个非主Activity在Home Screen上建立一个快捷方式
- [Mysql]---Navicat --外键建立与cannot add foreign key constraint分析
- SpringMVC+Hibernate+Maven+MySQL实现增删改查的一个小Demo
- 由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint
- mysql学习笔记--插入日期--case--ifnull--if--lower、upper--concat--建立外键关联表
- MYSQL建立外键失败几种情况记录Can't create table不能创建表
- MySQL建立外键(Foreign Key)
- mysql建立外键
- 一个ajax实现根据积分查询mysql获取用户等级的小demo
- mysql数据表建立从表,使用外键时.删除从表数据,设置外键属性方能删除
- mysql建立外键
- mysql 1215错误——外键建立失败
- mysql重命名表,建立外键,增、删、改列名实例
- 使用Spring boot,Kotlin,Mysql建立外键,关联表
- mysql建立不上外键,sql语句一运行完就会生成一条索引,但是外键却建不上
- [No000084]C# 使用Log4Net(1)-快速建立一个demo
- 用mysql编写在BORROW表上建立一个触发器,完成将该读者的借阅记录保存在BORROW_SAVE表中。。
- mysql外键的建立与类型