一、外键约束

  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数据库中表的外键约束的更多相关文章

  1. mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)

    在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot delete or update a parent row: a foreign key constraint f ...

  2. 总结mysql的三种外键约束方式

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...

  3. mysql 启动和关闭外键约束

    在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot delete or update a parent row: a foreign key constraint f ...

  4. MySQL 如何删除有外键约束的表数据

    今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. SET FOREIGN_KEY_CHECKS=0; 删除 ...

  5. EntityFramework Code First 构建外键关系,数据库不生成外键约束

    创建 ExtendedSqlGenerator类 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator { #regio ...

  6. 一键删除数据库所有的外键约束-FOREIGN_KEYS

    DECLARE @ESQL VARCHAR(1000);DECLARE FCursor CURSOR --定义游标FOR (SELECT  'ALTER TABLE '+O.name+' DROP  ...

  7. MySQL删除所有表的外键约束、禁用外键约束

    转: MySQL删除所有表的外键约束.禁用外键约束 2017年10月27日 00:11:34 李阿飞 阅读数:4512   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  8. (转载)MySQL删除所有表的外键约束、禁用外键约束

    其实如果想删除所有表可以直接如下操作: 在navicat中直接选中所有表,然后右键删除表即可,会有提示,一路确定,就会先删掉没有外键的表和字表,只要一路确定,删几批就把表都删完了,并不算太麻烦. 转: ...

  9. 如果你发现mysql的外键约束不管用了

    不知为何我机子上的mysql竟然默认关闭外键约束,导致我试了好多遍都可以插入非法值,以下语句可以开启约束 SET foreign_key_checks = 1; (0则关闭) 备忘

随机推荐

  1. Pmon (LS1B)start.s

    loongson ls1b FPGA验证 只有DDR flash UART pmon移植 和原版本相比,DDR controller和ls1b不一致. /* $Id: start.S,v 1.1.1. ...

  2. sapjco3 开发与部署环境设置

    windows 环境设置 1.sapjco3.dll 需要与 sapjco3.jar 在同一目录 2.设置系统环境变量,将sapjco3所在目录加入系统环境变量 3.根据自己的操作系统版本选择对应的s ...

  3. centos7下安装mysql5.7和jdk 1.8

    安装mysql5.7 具体安装过程可参见官网:A Quick Guide to Using the MySQL Yum Repository 进入/usr/local/src文件夹. cd /usr/ ...

  4. go语言获取字符串元素的个数

    1:获取字符串字节的个数,并按字节挨个输出 package main import ( "fmt" ) func main() { var str string = "a ...

  5. ASP.NET MVC 使用dataTable(3)--更多选项参考

    ASP.NET MVC 使用dataTable(3)--更多选项参考 jQuery  dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器 ...

  6. Python 使用MySQL

    在导入MySQLdb之前,需要安装MySQLdb模块.使用pip安装,命令如下: pip install MySQL-python 安装成功后,导入MySQLdb模块 import MySQLdb 连 ...

  7. 1、AEC-实用口语寒暄Greetings

    (2) 想不到在这见到你世界真小啊.Fancy meeting you here .What a small world !It's a small world, isn't it ? (3) 好久不 ...

  8. 1307 绳子与重物(DFS)

    1307 绳子与重物 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量 ...

  9. JS复制粘贴解决方案

    var clipboardData = window.clipboardData; //for IE if (!clipboardData) { // for chrome window.prompt ...

  10. 巨蟒python全栈开发flask1

    1.整体把握 (1)路飞学城 - RestAPI 前后端分离开发 Django Vue.js - DRF DjangoRestFromwork - 线上商城的经验 (2)智能玩具 - RestAPI ...