高级查询

> 其他+V:w891123884

MySQL提供了几种高级查询语句,用于复杂场所下进行多表一起查询,这样就会用到内连接查询、外连接查询、自然连接查询、交叉连接查询和联合查询,以满足日常业务查询的需求,从而更能体会MySQL强大的功能。

1、内连接查询

SELECT*FROM 左表 [INNER] JOIN 右表 ON 左表.字段=右表.字段;

mysql> select*from user;
+----+-------+------+------+----------+---------+-----------+
| id | name  | sex  | age  | password | phone   | loginname |
+----+-------+------+------+----------+---------+-----------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |
+----+-------+------+------+----------+---------+-----------+
5 rows in set (0.00 sec)mysql> use shop;
Database changed
mysql> create table score(-> id int not null,-> score nvarchar(233),-> grage nvarchar(233),-> primary key(id));
Query OK, 0 rows affected (0.07 sec)mysql> insert into score values(1,'88','优秀');
Query OK, 1 row affected (0.02 sec)mysql> insert into score values(2,'70','中等');
Query OK, 1 row affected (0.02 sec)mysql> insert into score values(3,'60','不优秀');
Query OK, 1 row affected (0.02 sec)mysql> select*from score;
+----+-------+--------+
| id | score | grage  |
+----+-------+--------+
|  1 | 88    | 优秀   |
|  2 | 70    | 中等   |
|  3 | 60    | 不优秀 |
+----+-------+--------+
3 rows in set (0.02 sec)mysql> select*from user u inner join score s on u.id=s.id;
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
3 rows in set (0.02 sec)mysql> select*from user u join score s on u.id=s.id;
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
3 rows in set (0.00 sec)mysql> select u.id uid,u.name,u.sex,u.age,s.score,s.grage from user u join score s on u.id=s.id;
+-----+-------+------+------+-------+--------+
| uid | name  | sex  | age  | score | grage  |
+-----+-------+------+------+-------+--------+
|   1 | david | 男   | 19   | 88    | 优秀   |
|   2 | 小明  | 男   | 22   | 70    | 中等   |
|   3 | 小花  | 女   | 21   | 60    | 不优秀 |
+-----+-------+------+------+-------+--------+
3 rows in set (0.00 sec)mysql> select u.id uid,u.name,u.sex,u.age,s.score,s.grage from user u join score s u.id=s.id;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'u.id=s.id' at line 1
mysql> select*from user u join score s;
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  2 | 70    | 中等   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  3 | 60    | 不优秀 |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  3 | 60    | 不优秀 |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  1 | 88    | 优秀   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  1 | 88    | 优秀   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  2 | 70    | 中等   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  3 | 60    | 不优秀 |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  1 | 88    | 优秀   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  2 | 70    | 中等   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
15 rows in set (0.00 sec)mysql> select*from user u inner join score s on u.id=s.id;
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
3 rows in set (0.00 sec)mysql>  select*from user u inner join score s on u.id>s.id;
+----+------+------+------+----------+---------+-----------+----+-------+--------+
| id | name | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+------+------+------+----------+---------+-----------+----+-------+--------+
|  2 | 小明 | 男   | 22   | 123456   | 444444  | hfhhj     |  1 | 88    | 优秀   |
|  3 | 小花 | 女   | 21   | 123456   | 6666666 | hfhhkj    |  1 | 88    | 优秀   |
|  3 | 小花 | 女   | 21   | 123456   | 6666666 | hfhhkj    |  2 | 70    | 中等   |
|  4 | 小敏 | 女   | 25   | 123456   | 8888888 | hfhhj     |  1 | 88    | 优秀   |
|  4 | 小敏 | 女   | 25   | 123456   | 8888888 | hfhhj     |  2 | 70    | 中等   |
|  4 | 小敏 | 女   | 25   | 123456   | 8888888 | hfhhj     |  3 | 60    | 不优秀 |
|  5 | 小华 | 男   | 26   | 123456   | 999999  | hfhhj     |  1 | 88    | 优秀   |
|  5 | 小华 | 男   | 26   | 123456   | 999999  | hfhhj     |  2 | 70    | 中等   |
|  5 | 小华 | 男   | 26   | 123456   | 999999  | hfhhj     |  3 | 60    | 不优秀 |
+----+------+------+------+----------+---------+-----------+----+-------+--------+
9 rows in set (0.00 sec)

2、外连接查询

SELECT * FROM 左表 LEFT/RIGHT JOIN 右表 ON 左表.字段=右表.字段;

mysql> select*from user u left join score s on u.id=s.id;左
+----+-------+------+------+----------+---------+-----------+------+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id   | score | grage  |
+----+-------+------+------+----------+---------+-----------+------+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |    1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |    2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |    3 | 60    | 不优秀 |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     | NULL | NULL  | NULL   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     | NULL | NULL  | NULL   |
+----+-------+------+------+----------+---------+-----------+------+-------+--------+
5 rows in set (0.02 sec)mysql> select*from user u right join score s on u.id=s.id;右
+------+-------+------+------+----------+---------+-----------+----+-------+--------+
| id   | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+------+-------+------+------+----------+---------+-----------+----+-------+--------+
|    1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|    2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|    3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
+------+-------+------+------+----------+---------+-----------+----+-------+--------+
3 rows in set (0.00 sec)

3、交叉连接查询

SELECT *左表 CROSS JOIN 右表 或 FROM 左表,右表;

mysql> select*from user cross join score;交叉连接
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  2 | 70    | 中等   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  3 | 60    | 不优秀 |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  3 | 60    | 不优秀 |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  1 | 88    | 优秀   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 666。6666 | hfhhkj    |  3 | 60    | 不优秀 |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  1 | 88    | 优秀   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  2 | 70    | 中等   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  3 | 60    | 不优秀 |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  1 | 88    | 优秀   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  2 | 70    | 中等   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
15 rows in set (0.00 sec)mysql> select*from user,score;from两个表
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
| id | name  | sex  | age  | password | phone   | loginname | id | score | grage  |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  1 | 88    | 优秀   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  2 | 70    | 中等   |
|  1 | david | 男   | 19   | 123456   | 5555555 | hfhhj     |  3 | 60    | 不优秀 |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  1 | 88    | 优秀   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  2 | 70    | 中等   |
|  2 | 小明  | 男   | 22   | 123456   | 444444  | hfhhj     |  3 | 60    | 不优秀 |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  1 | 88    | 优秀   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  2 | 70    | 中等   |
|  3 | 小花  | 女   | 21   | 123456   | 6666666 | hfhhkj    |  3 | 60    | 不优秀 |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  1 | 88    | 优秀   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  2 | 70    | 中等   |
|  4 | 小敏  | 女   | 25   | 123456   | 8888888 | hfhhj     |  3 | 60    | 不优秀 |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  1 | 88    | 优秀   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  2 | 70    | 中等   |
|  5 | 小华  | 男   | 26   | 123456   | 999999  | hfhhj     |  3 | 60    | 不优秀 |
+----+-------+------+------+----------+---------+-----------+----+-------+--------+
15 rows in set (0.00 sec)

4、联合查询

SELECT column_name FROM table1
UNION (all)
SELECT column_name FROM table2;

mysql> select id from user;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.00 sec)mysql> select id from user       集合-> union-> select id from score;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.02 sec)mysql> select id,name from user-> union-> select id,score from score;
+----+-------+
| id | name  |
+----+-------+
|  1 | david |
|  2 | 小明  |
|  3 | 小花  |
|  4 | 小敏  |
|  5 | 小华  |
|  1 | 88    |
|  2 | 70    |
|  3 | 60    |
+----+-------+
8 rows in set (0.00 sec)

高级查询(mysql)相关推荐

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

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

  2. mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询

    最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...

  3. mysql数据库高级查询笔记_MySQL数据库基础——高级查询

    MySQL数据库入门--day08 高级查询 一.聚合函数: 在实际开发过程中经常需要对数据进行统计,为此MySQL中提供了一些函数来实现某些功能如下表所示: 聚合函数 1.COUNT()函数: CO ...

  4. mysql 最值复杂查询_MySQL高级查询

    我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先 ...

  5. MySQL高级 —— 查询性能优化

    引言 承接<MySQL高级 -- 高性能索引>,本篇博客将围绕<高性能MySQL(第三版)>第六章内容进行总结和概括. 与索引的部分一样,SQL优化也是广大程序员深入MySQL ...

  6. mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询

    复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...

  7. MySQL高级查询语句——超详细,一篇就够了

    MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...

  8. 【MySQL】数据库的高级查询

    前言 上次我们讲了数据库的基本查询,这次继续接上来数据库的高级查询.高级查询是建立在基础查询的基础上面的,如果你还没有看过建议你先去学习数据库的基础查询. 传送门:MySQL数据库的基本查询 数据库的 ...

  9. MySQL 03 高级查询(一)

    MySQL 03 高级查询(一) 文章目录 MySQL 03 高级查询(一) 一.学习目标 二.调整数据库的表结构 三.修改表 四.设置主外键约束 五.添加约束 (练习) 六.数据操纵语言 6.1.D ...

最新文章

  1. 机器学习(15)精确率召回率F1-score(查看癌症预测结果的精确率、召回率)
  2. 数学仍然是人类的“火炬”
  3. “三次握手,四次挥手”你真的懂吗?
  4. 机器学习中的MLE、MAP和贝叶斯估计
  5. suse系统关闭防火墙
  6. jquery in action 学习笔记
  7. hs控什么意思_凡尔赛文学 到底是什么?
  8. Spark Structured : KuduException$OriginalException: Originalasynchronous stack trace
  9. Linux(1) 目录结构
  10. AIR文件上传与文件断点续传方式下载
  11. php workerman定时任务
  12. HDU 2676 Matrix
  13. Monkey测试------报错日志分析参考
  14. ngx_http_core_module模块提供的变量
  15. 三星手机大量死机!我反编译折腾半天后,发现竟然一个汉字引发的....
  16. JavaWeb开发技术笔记(配置篇)
  17. dubbo 服务调用源码分析
  18. 【收藏】详解FIR滤波器和IIR滤波器的区别
  19. 利用坐标数据求解七参数
  20. file文件转blob格式后下载 ,file文件下载

热门文章

  1. 从0开始学AI-DAY1
  2. Latex中BibTex编辑参考文献
  3. android圆环头像,Android实现带圆环的圆形头像
  4. FAST-LIO2.0代码解析(二)preprocess.cpp
  5. html5 css3 树形菜单,HTML5/CSS3卷边菜单效果
  6. 基于产生式表示的动物识别系统
  7. 【区块链108将】数据盾:顶级白客们对于网络安全的美好憧憬
  8. 超实用!轻松几步修复灰蒙蒙的情侣合照!
  9. 计算机的cpu不能用,CPU故障该怎么确定?解决办法?
  10. 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!