数据库的单表和多表查询,mysql的多表查询总结

前言:

前面我们了解了多表的设计及其创建,为了不和上一章的数据混合本章还是会建立新的数据库 进行数据的练习。

补充:笛卡尔积(了解)

多张表无条件联合查询,没什么意思。

例如:查询user orders表内所有字段。语法: select user.*,orders.* from user,orders;一 多表查询1 知识架构图:image.png2 详细介绍(假如有a,b表来举例子)内连接格式1:显式内连接(推荐使用)语法:(*代表查所有字段)select a.*,b.* from a[inner] join b on ab链接条件

格式2:隐式内连接

语法:select a.*,b.* from a,b where ab链接条件外链接格式1:左外连接(记住这个就行了)select a.*,b.* from a left [outer] join b on 链接条件意思:先展示join左边表的全部数据,根据条件关联查询join右边的表,符合条件展示出来,不符合 条件以null展示。

格式2:右外连接

select a.*,b.* from b right join orders on user.id=orders.id; 意思:先展示join右面边表的全部数据,根据条件关联查询join左边的表,符合条件展示出来,不符合 条件以null展示。注意:格式1 格式2 可以等价转换 记住一个就行。子查询 当一个查询是另一个查询的条件时,称之为子查询3 准备数据(建库 建表 初始化数据)

首先创建个新数据库(day0602)

image.png

数据表的创建及其初始化(准备好了数据 如下)

初始化数据:-- 用户表(user) create table `user` (`id` int auto_increment primary key,`username` varchar(50)-- 用户姓名);-- 订单表(orders) create table `orders` (`id` intauto_increment primary key,`price` double, `user_id` int );-- 给订单表添加外键约束alter table orders add constraint user_fk foreign key (user_id) references user(id); -- 向user表中添加数据insert into user values(3,'张三');insert into user values(4,'李四');insert into user values(5,'王五');insert into user values(6,'赵六');-- 向orders 表中插入数据insert into orders values(1,1314,3);insert into orders values(2,1314,3);insert into orders values(3,15,4);insert into orders values(4,315,5);insert into orders values(5,1014,null); 这样表我们就建立完成了,也添加号数据了嘿嘿如下表:我们发现用户赵六是没有下订单的(我们观察orders表 发现id 为5 的项是没有user_id的)image.pngimage.png4 练习: 1内连接练习:查询用户的订单,没有订单的用户不显示 分析没有下订单的用户不显示就行了 隐式内连接查询:(此处查询全部字段,当然我们也可以查询一个或者多个字段) select user.*,orders.* from user,orders where user.id=orders.id; 显式内连接查询:select user.*,orders.* from user join orders on user.id=orders.id; 2外链接练习(左外连接)查询所有用户的订单详情select user.*,orders.* from user left join orders on user.id=orders.id; 3 子查询 练习 3.1查看用户为张三的订单详情 分析: 先查询张三的id 再根据他的id 查询订单select idfrom user where username = '张三';select * from orders where user_id = 3;--结果为3 以上执行两部太麻烦,两者和2 为1 select * from orders where user_id = (select idfrom user where username = '张三');3.2 查询出订单的价格大于300的所有用户信息。 分析 订单表中没有用户但是有用户id 先先查出用户id根据用户id用户表中查询用户tip:你查询出来的用户id是一组数正好在结果查询中可以使用in关键字3.3查询订单价格大于300的订单信息及相关用户的信息。内连接方式:分析:先查询所有的订单信息,用户信息我们可以。用笛卡尔积就行。 订单价格大于300我们在笛卡尔积的语句中加where条件就行 还有有关联条件 select user.*,orders.* from user,orders where orders.price>300;子查询方式:(将查询结果作为一张临时表)select user.*,temp.* from user,(select * from orders whereprice>300 )as temp where user.id = temp.user_id;(描述的不够明白这个例子 初学刚总结的 。。。)ps:给表起别名表 [as] 别名 小结 :

刚刚接触查询还是比较迷惑的特别是多表查询不知道该怎么挖掘信息,相信练习多了就熟练了!!!

MySQL单表查询与多表查询 - 简书数据库,单表查询,多表查询,子查询 - 编程猎人MySql数据库单表查询与多表连接查询效率对比_Mysql_脚本之家单表查询和多表连接查询哪个效率更快 - 哔哩哔哩MySQL之单表、多表查询、连接、视图_随風_51CTO博客MySQL 多表关联查询和多次单表查询哪个好? - 掘金数据库设计问题,单表和多表查询执行效率相比有多大区别 ...SQL多表联合查询(Access数据库表) - 爱码网面试官:为什么mysql不建议执行超过3表以上的多表关联查询 ...【gp数据库查询系统看模式下所有的分布键信息(SQL语句)查询数据库所有的字段及其字段数据库连接查询怎么做mysql怎么查询数据库每个有多少条记录Qt数据库查询表的内容,获取查询结果的行数列数数据库实验4:数据库的简单查询和连接查询实验mysql数据库多表关联查询的实例SQL Server 中查询数据库的大小和数据库中各的大小数据库实验3 数据库的简单查询和连接查询实验数据库查询(select语句、子查询、多表查询、分类汇总与排序)达梦数据库查询模式下所有的表和记录PG数据库所占用空间大小查询mysql—查询数据库表的数量sqlserver 多表联合查询查询数据库各个的数据大小及数据量SQL语句多表连接查询语法MySQL之——查询指定的数据库是否存在ER图关系模型到MySQL数据库表关于数据库多表关联查询时出现重复的记录应该怎样合并mysql学习—查询数据库中特定的值对应的数据库空间
英雄无敌3hd秘籍金麟岂是池中物第三章英雄救美0239章换班风波05款飞度几个喇叭033期财叔大乐透预测奖号01倍速播放器0292金冠首页0292哪里下载045初級編幽霊近耳鳴理由06知识记背手册第六单元011干翻那群绿王8010攻略竹马医生H店铺素材是什么他的女人完结0121帝吧出征fb直播022集hamzy吃播资料正文第1175章人情味和枪上海绿中海明苑四期小区房价4594平方千米等于多少亩原创美丽的分形修辞手法有哪些种类修辞手法有哪几种