MySQL的外键

什么是外键,很简单保持数据一致性的一个约束键。如果你有两张表,第一张是学生表,第二张表是一个成绩表,我们来看看保持数据一致性,其实在Django等框架的模型中中也能做关联获取对象。

第一张表 成绩表

第二张表 学生表

保持数据一致性

我们来看看,当键不一致的时候,数据是插不进去的哦,保证了数据一致性。

mysql> insert into student(sid,name) values("A0004","Tom");

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`school`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`sid`) REFERENCES `score` (`sid`))

mysql> insert into student(sid,name) values("A0001","Tom");

Query OK, 1 row affected (0.00 sec)

mysql> insert into student(sid,name) values("A0002","Bill");

Query OK, 1 row affected (0.01 sec)

mysql> insert into student(sid,name) values("A0003","Jill");

Query OK, 1 row affected (0.00 sec)

高级查询

还是用上面两张表做例子

连接查询

内连接

没有on条件的时候就是笛卡尔积,有条件的时候按照条件执行,条件关键字on,使用where也可以,但是效率会低很多;

select * from student join score on student.sid=score.sid;

外链接

与内连接相似,但是条件不匹配的项会保留,不匹配字段填写NULL,左和右指得的是以谁为主表 我们做个测试,为了体现不匹配的样子,先向score插入一条数据

insert into score(sid,value) values("A0004",90);

内连接的状态的

左连接

左表为主

select * from score left join student on student.sid=score.sid;

右连接

右表为主

select * from student right join score on student.sid=score.sid;

交叉连接

循环去每一条数据进行匹配,结果是笛卡尔积

select * from student cross join score;

#或者

select * from student,score;

自然连接

联合查询

将多次查询(多条select语句), 在记录上进行拼接(字段不会增加),就是这么简单,但是注意,字段数量要一致,字段数量要一致,字段数量要一致,重要的事情说三遍。一般用于相同结构的多表查询。

select id,name from student union select * from score;

子查询

一般的from where exists后面都是子查询 重点是from 后面可以接select语句、where后面也可以跟select语句,举几个例子

select * from (select sid from score) as a;

select * from score where sid in (select sid from student);

exists可以理解为一个函数,里面是一个条件,如果存在就是返回1,否则是0,exists放在where后面

去重查询

SELECT DISTINCT column1,column2,... FROM table-name;

mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...相关推荐

  1. mysql on delete关键字_MySQL外键约束On Delete、On Update各取值的含义

    主键.外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键,外键可以有重复的,可以是空值 主索引(由关键字PRIMARY定义的索引),用于表 ...

  2. mysql中的外键约束_MySQL外键约束

    在本教程中,您将了解MySQL外键(foreign key)以及如何在MySQL中创建,添加和删除外键约束. MySQL外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用.外键对相关表中的 ...

  3. mysql cluster 外键_Mysql外键约束

    Mysql集群创建外键,分为四种约束:no action,restrict,cascade,set null.如果表A的主关键字是表B中的字段,则该字段称为B的外键,表A称为主表,表B称为从表.外键是 ...

  4. mysql 主外键 策略_mysql外键策略

    1.外键 建表时添加外键:constraint 外键名 foreign key 从表字段 references 主表字段 级联操作 create table dage( create table xi ...

  5. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

  6. MySQL数据类型、约束、外键、索引、存储引擎

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MySQL中数据类型 整型 浮点型 字符串类型 枚举和集合 时间类型 timestamp YYYYMMDDHHMMSS(时间 ...

  7. MySQL之增删改以及外键作用

    MySQL02: DML语言 原文链接:公众号狂神说 视频教程:狂神说Java 外键 外键概念 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个 ...

  8. mysql中为表增加外键_如何在Excel 2013中为符号分配键盘快捷键

    mysql中为表增加外键 We've previously shown you how to add keyboard shortcuts to symbols in Word 2013 to mak ...

  9. 关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存

    关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存 其实解决办法十分简单: 首先确保你能够级联保存数据,当然除了关联表的外 ...

最新文章

  1. CIC滤波器的Matlab仿真与FPGA实现
  2. js中的window.onload和jquery中的load区别的讲解
  3. CSS 水平垂直居中
  4. Spring框架声明式事务管理
  5. java 4位数,java 找出4位数的所有吸血鬼数字
  6. mysql 拼接_mysql-gt;redis C++
  7. 百度分享新浪微博无法分享图片的解决方法
  8. sql 筛选唯一值_多列数据获取唯一值?你再肉眼筛选的时候,我已经下班了
  9. 拓端tecdat|R语言互联网金融下的中国保险业数据分析
  10. Studio 3T for MongoDB 激活破解脚本
  11. Windows 8设置保护视力的颜色
  12. win10程序员软件列表(持续更新中...)
  13. python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕
  14. 自动化测试处理textarea文本框
  15. Selenium+Python+Pycharm自动化环境搭建具体步骤
  16. python输入数据带单位_python – Pandas用单位插入数据
  17. VMware中的虚拟机设置开启VT虚拟化 虚拟机中创建虚拟机
  18. 三层架构(我的理解及详细分析)
  19. 选择灰盒安全测试工具,看准以下几点
  20. 烟台开发区鸿蒙小饭桌,小学放学时间推迟到下午6点,小饭桌时代要结束了,家长们舒心了...

热门文章

  1. 小米wifi每天晚上准时断网_小米路由器遭恶意抹黑 官方回应:抵制这种下三滥...
  2. 基于bert模型的文本分类研究:“Predict the Happiness”挑战
  3. 获取dbgrid的行索引
  4. 在C语言中以编程的方式获取函数名
  5. 在STM32上实现使用DMA+USART3传输数据
  6. foreach形式的for语句
  7. 反病毒引擎设计全解(四)
  8. EasyExcel读取文件异常,报 java.lang.NoClassDefFoundError,/x2006/main/CTTableStyles
  9. IDEA没有MVC视图
  10. STM32开发 -- 4G模块开发详解(2)