MySql_多表查询
2021/9/15 2:05:17
本文主要是介绍MySql_多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多表查询
查询多张表是如果出现同名的列,需要将表名标注到列名前面
非同名的列,表名可以不加,推荐加上
可为表添加别名
一般取首字母,特殊下取所代表的含义
表的别名只在本次查询中生效
如果表与表进行关联查询时:不添加关联条件,查询的总记录数是a*b=笛卡尔积
多表查询的时候必须要加条件
等值
非等值
等值关联查询
-- 将user表与class表通过 uid 进行等值关联查询 select user.name, user.uid,class.grade,class.uid from user, class where user.uid=class.uid; -- 添加别名 select u.name,u.uid,c.grade,c.uid from user u, class c where u.uid=c.uid;
非等值关联查询
-- 判断成绩优秀等级 SELECT * FROM classes c, leveled l WHERE c.grade BETWEEN l.low AND l.high;
表的关联条件和业务查询条件混为一起,新版本语法进行优化:
自然连接:
自动选择列名相同并且类型相同的列
-- 92语法 select u.uname,d.dname from uuser u, cclass c where u.uid=c.uid and c.grade > 70 -- 99语法 select u.name,d.dname from uuser u natural join cclass c where c.grade > 70;
using
可以指定等值连接的列
-- 指定uid为等值列,进行表的连接 select u.name,c.name from uuser u join cclass c using(uid) where c.grade > 70;
on
指定两张表关联的条件,可以是非等值的操作,也可以是等值连接
-- 使用on() 进行非等值连接 select * from uuser u join llevel l on(u.uid BETWEEN l.low and l.high);
外连接
两张表进行关联查询时,由于数据的原因,导致其中一张表中的数据无法完全查询出来
外连接可以让没查询出来的数据也显示出来
左外连接:显示左边表所有的数据
右外连接:显示右边表所有的数据
-- 统计每个班级的人数 -- 左连接 select * from uuser u left join cclass c using(uid); -- 右连接 select * from cclass c right join uuser u using(uid);
UNION / 全外连接
1. 将多条查询语句的结果拼接在一起
2. 将去掉重复的查询结果
3. UNION ALL 可以显示重复的查询结果
-- 全连接 select u.name, c.name from uuser u left join cclass c using(uid); union select u.name, c.name from uuser u right join cclass c using(uid);
自连接
查询的两个字段同时处于一张表上,只能将一张表当作含有不同意义的两张表处理
给相同的表取不同的简称
-- 学生,老师都在一张表中 -- 查询每个学生的与其老师的名字及ID select u.uid,u.name,uu.uid,uu.name from user u join user uu on(u.teach = uu.uid);
子链接
把一个SQL语句的查询结果,作为另一个SQL语句的查询条件
子链接往往查询结果只为一列,(多列时使用伪表)
ALL:低于查询中的所有数据
SOME/ANY:低于查询中的部分数据
IN:处于查询中的数据
伪表查询
所需要的查询条件 需要别的SQL语句提供
需要多个查询条件,就要将所有的查询结果当作伪表进行管理
需要把一些含有特殊符号的列名设置别名,然后给伪表设置一个别名
这篇关于MySql_多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解