高级查询(mysql)
高级查询
> 其他+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)相关推荐
- mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...
MySQL的外键 什么是外键,很简单保持数据一致性的一个约束键.如果你有两张表,第一张是学生表,第二张表是一个成绩表,我们来看看保持数据一致性,其实在Django等框架的模型中中也能做关联获取对象. ...
- mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询
最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...
- mysql数据库高级查询笔记_MySQL数据库基础——高级查询
MySQL数据库入门--day08 高级查询 一.聚合函数: 在实际开发过程中经常需要对数据进行统计,为此MySQL中提供了一些函数来实现某些功能如下表所示: 聚合函数 1.COUNT()函数: CO ...
- mysql 最值复杂查询_MySQL高级查询
我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先 ...
- MySQL高级 —— 查询性能优化
引言 承接<MySQL高级 -- 高性能索引>,本篇博客将围绕<高性能MySQL(第三版)>第六章内容进行总结和概括. 与索引的部分一样,SQL优化也是广大程序员深入MySQL ...
- mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询
复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...
- MySQL高级查询语句——超详细,一篇就够了
MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...
- 【MySQL】数据库的高级查询
前言 上次我们讲了数据库的基本查询,这次继续接上来数据库的高级查询.高级查询是建立在基础查询的基础上面的,如果你还没有看过建议你先去学习数据库的基础查询. 传送门:MySQL数据库的基本查询 数据库的 ...
- MySQL 03 高级查询(一)
MySQL 03 高级查询(一) 文章目录 MySQL 03 高级查询(一) 一.学习目标 二.调整数据库的表结构 三.修改表 四.设置主外键约束 五.添加约束 (练习) 六.数据操纵语言 6.1.D ...
最新文章
- 机器学习(15)精确率召回率F1-score(查看癌症预测结果的精确率、召回率)
- 数学仍然是人类的“火炬”
- “三次握手,四次挥手”你真的懂吗?
- 机器学习中的MLE、MAP和贝叶斯估计
- suse系统关闭防火墙
- jquery in action 学习笔记
- hs控什么意思_凡尔赛文学 到底是什么?
- Spark Structured : KuduException$OriginalException: Originalasynchronous stack trace
- Linux(1) 目录结构
- AIR文件上传与文件断点续传方式下载
- php workerman定时任务
- HDU 2676 Matrix
- Monkey测试------报错日志分析参考
- ngx_http_core_module模块提供的变量
- 三星手机大量死机!我反编译折腾半天后,发现竟然一个汉字引发的....
- JavaWeb开发技术笔记(配置篇)
- dubbo 服务调用源码分析
- 【收藏】详解FIR滤波器和IIR滤波器的区别
- 利用坐标数据求解七参数
- file文件转blob格式后下载 ,file文件下载