mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...
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外键和高级查询(连接查询、联合查询、子查询、去重查询)...相关推荐
- mysql on delete关键字_MySQL外键约束On Delete、On Update各取值的含义
主键.外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键,外键可以有重复的,可以是空值 主索引(由关键字PRIMARY定义的索引),用于表 ...
- mysql中的外键约束_MySQL外键约束
在本教程中,您将了解MySQL外键(foreign key)以及如何在MySQL中创建,添加和删除外键约束. MySQL外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用.外键对相关表中的 ...
- mysql cluster 外键_Mysql外键约束
Mysql集群创建外键,分为四种约束:no action,restrict,cascade,set null.如果表A的主关键字是表B中的字段,则该字段称为B的外键,表A称为主表,表B称为从表.外键是 ...
- mysql 主外键 策略_mysql外键策略
1.外键 建表时添加外键:constraint 外键名 foreign key 从表字段 references 主表字段 级联操作 create table dage( create table xi ...
- mysql创建表时设置外键_mysql创建表时设置外键约束的方法
mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...
- MySQL数据类型、约束、外键、索引、存储引擎
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MySQL中数据类型 整型 浮点型 字符串类型 枚举和集合 时间类型 timestamp YYYYMMDDHHMMSS(时间 ...
- MySQL之增删改以及外键作用
MySQL02: DML语言 原文链接:公众号狂神说 视频教程:狂神说Java 外键 外键概念 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个 ...
- mysql中为表增加外键_如何在Excel 2013中为符号分配键盘快捷键
mysql中为表增加外键 We've previously shown you how to add keyboard shortcuts to symbols in Word 2013 to mak ...
- 关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存
关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存 其实解决办法十分简单: 首先确保你能够级联保存数据,当然除了关联表的外 ...
最新文章
- CIC滤波器的Matlab仿真与FPGA实现
- js中的window.onload和jquery中的load区别的讲解
- CSS 水平垂直居中
- Spring框架声明式事务管理
- java 4位数,java 找出4位数的所有吸血鬼数字
- mysql 拼接_mysql-gt;redis C++
- 百度分享新浪微博无法分享图片的解决方法
- sql 筛选唯一值_多列数据获取唯一值?你再肉眼筛选的时候,我已经下班了
- 拓端tecdat|R语言互联网金融下的中国保险业数据分析
- Studio 3T for MongoDB 激活破解脚本
- Windows 8设置保护视力的颜色
- win10程序员软件列表(持续更新中...)
- python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕
- 自动化测试处理textarea文本框
- Selenium+Python+Pycharm自动化环境搭建具体步骤
- python输入数据带单位_python – Pandas用单位插入数据
- VMware中的虚拟机设置开启VT虚拟化 虚拟机中创建虚拟机
- 三层架构(我的理解及详细分析)
- 选择灰盒安全测试工具,看准以下几点
- 烟台开发区鸿蒙小饭桌,小学放学时间推迟到下午6点,小饭桌时代要结束了,家长们舒心了...
热门文章
- 小米wifi每天晚上准时断网_小米路由器遭恶意抹黑 官方回应:抵制这种下三滥...
- 基于bert模型的文本分类研究:“Predict the Happiness”挑战
- 获取dbgrid的行索引
- 在C语言中以编程的方式获取函数名
- 在STM32上实现使用DMA+USART3传输数据
- foreach形式的for语句
- 反病毒引擎设计全解(四)
- EasyExcel读取文件异常,报 java.lang.NoClassDefFoundError,/x2006/main/CTTableStyles
- IDEA没有MVC视图
- STM32开发 -- 4G模块开发详解(2)