Mysql外键约束--转载
链接:http://www.cnblogs.com/xuanan/p/7240923.html#undefined
一、外键约束
1、什么是外键?
外键指的是其他表中的主键,当做该表的外键。
2、创建外键。
2.1 可在创建表的时候直接创建外键,如图所示:
create table table_name (字段名 字段属性,[add constraint 外键name] foreign key (字段名) references 主表(主表主键名));
2.2 创建完表后再添加外键
alter table table_name add constraint 外键name foreign key (字段名) references 主表(主表主键名);
2.3删除外键
alter table table_name drop 外键name
2.4注意事项:
所创建的外键属性要和主表中的主键属性相同。
当创建了外键之后,子表中想要删除某条记录可直接删除,但是主表中想要删除某条记录要先把主表和子表对应的外键给删除后才 能删除主表的某条记录,但是这样做子表就没有外键了,所以建议只是修改子表外键所对应主表主键其他的值,这样就可以删除了。
3、外键约束的含义:
3.1外键约束对子表的含义:当在子表中insert或update一条数据时,如果在主表中找不到候选键,那么就不允许该操作。
3.2外键约束对主表的含义:当在主表中insert或update数据时,如果主表的候选键对应的有子表的外键值,那么就不允许该操作。
4、innodb支持on语句的高级用法,略过。
二、多表查询
1、什么是多表查询?
前提是两张表之前没有什么联系,但是至少有一个共同点是至少有一个相同属性的字段。
2、多表查询之连接查询
select * from table_name1,table_name2........ where table_name1.相同属性的字段=table_name2.相同属性的字段 [and able_name1.相同属性的字段=table_name2.相同属性的字段 ];
3、多表查询之内连接查询
select * from table_name1 inner join table_name2 [table_name2.....] on table_name1.相同属性的字段=table_name2.相同属性的字段
[and table_name1.相同属性的字段=table_name2.相同属性的字段];
4、多表查询之外连接查询
4.1左边连接: 在内连接的基础上增加左边有右边没有
select * from table_name1 left join table_name2 [table_name2.....] on table_name1.相同属性的字段=table_name2.相同属性的字 段[and table_name1.相同属性的字段=table_name2.相同属性的字段];
4.2右边连接:在内连接的基础上增加右边有左边没有
select * from table_name1 right join table_name2 [table_name2.....] on table_name1.相同属性的字段=table_name2.相同属性的 字段[and table_name1.相同属性的字段=table_name2.相同属性的字段];
4.3全外连接:在内连接的基础上增加右边有左边没有和左边有右边没有的全部结果
select * from table_name1 left join table_name2 [table_name2.....] on table_name1.相同属性的字段=table_name2.相同属性的字 段[and table_name1.相同属性的字段=table_name2.相同属性的字段] union select * from table_name1 right join table_name2 [table_name2.....] on table_name1.相同属性的字段=table_name2.相同属性的字段 [and table_name1.相同属性的字段=tabel_na
me2.相同属性的字段.....];
4.4 注意:union会去掉相同的记录,但是union all不会。
5、多表查询之复合条件连接查询
5.1 和内外连接的查询方式相同,只不过是在此基础上添加上了别的查询条件。(可以吧内外连接查询出的表看成是一个表)
5.2格式:
select *|表.字段名 [as] [别名].... from 表1,表2.... where 限制条件 group by 条件 havin 条件 order by 条件 limit 条件;
6、多表查询之子查询
6.1什么是子查询?
子查询是将一条查询语句嵌套在另一条查询语句当中,也可以是将一条语句的查询结果当做另一条语句的查询条件,其中子查询中 可以包含 in, not in,any,all,exists,not exists,比较运算符等操作。
6.2exists关键字表示存在,带有exists关键字的子查询返回的结果要么是真要么是假,当子查询返回为true时外界查询继续,当子查询 返回为Flase时外界查询终止。
Mysql外键约束--转载的更多相关文章
- mysql 外键约束备注
梳理mysql外键约束的知识点. 1.mysql外键约束只对InnoDb引擎有效: 2.创建外键约束如下: DROP TABLE IF EXISTS t_demo_product; CREATE TA ...
- MySQL外键约束On Delete、On Update各取值的含义
主键.外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...
- mysql外键约束总结
总结三种MySQL外键约束方式 如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是 ...
- MYSQL外键约束的参照操作
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...
- Mysql外键约束之CASCADE、SET NULL、RESTRICT、NO ACTION
Mysql中有目前只有InnoDB引擎支持外键约束,InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN ...
- MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CON ...
- Mysql外键约束设置使用方法
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...
- mysql 外键约束
外键的定义语法:[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col ...
- 1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
随机推荐
- 【朝花夕拾】四大组件之(二)Service篇
一.Service是什么 对于这个问题,想必大家都能说出一二,如“它是四大组件之一”.“在后台处理一些操作”等.咱们这里看看官方文档中的描述,官方语言一般都是准确且言简意赅的,这里可以体验一下其风格. ...
- docker-compose-volumes的说明
docker-compose里两种设置方式都是可以持久化的 绝对路径的 ghost: image: ghost volumes: - ./ghost/config.js:/var/lib/ghost/ ...
- Java进阶篇设计模式之二 ----- 工厂模式
前言 在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法.本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式.工厂方法和抽象工厂模式. 简单工厂模式 简单工厂模式是属于创建型模 ...
- javascript 作用域链及闭包,AO,VO,执行环境
下面的文章内容会根据理解程度不断修正. js变量作用域: 定义:变量在它申明的函数体以及函数体内嵌套的任意函数体内有定义. function AA(){ var bb='我是AA内部变量'; func ...
- PHP制作个人博客-广告位添加与调用 推荐文章数据调取
上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告.博客推荐文章的数据调用. 首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf ...
- Spring MVC(一)五大核心组件和配置
一,五大核心组件 1.DispatcherServlet 请求入口 2.HandlerMapping 请求派发,负责请求和控制器建立一一对应的关系 3.Controller 处理器 4.Mod ...
- c#调用word文件
大家好!我叫蓝颜,我是一名大专生.这是我第一次接触博客园,以后也会一直在. 在学校期间,参加技能大赛(物联网),接触到的C#.之后学校教务处要一个调课软件, 于是我就小试牛刀试了试.当然了,这也是我第 ...
- mac webstorm无法打开 如何使webstorm不卡
场景:在应用程序里删除了原先的webstorm,然后从官网下载了新的安装包,进行安装.安装后,webstorm就再也打不开了. 解决方案:执行以下命令,清楚webstorm所有缓存,然后重新安装 $ ...
- Basic Linux Privilege Escalation
(Linux) privilege escalation is all about: Collect - Enumeration, more enumeration and some more enu ...
- arcgis api 4.x for js之基础地图篇
arcgis api3.x for js转向arcgis api4.x,我也是最近的3-4个月时间的事情,刚好公司有个webgis项目需要展示三维场景,项目选择arcgis api4.x.我纯碎记录一 ...