mysql高阶语句(二)

本文介绍了SQL中的IN和between操作,NULL值处理,子查询的使用(包括EXISTS),以及内连接、左连接、右连接和全表连接的概念。通过实例展示了如何利用这些方法进行数据筛选和合并,以达到查询目标。
摘要由CSDN通过智能技术生成

目录

IN的用法

between的用法 (跟and语法差不多)between是包含两边的值​编辑

函数

NULL

子查询 

EXISTS

 表连接查询


IN的用法

not in 取反的意思

 

between的用法 (跟and语法差不多)between是包含两边的值

 同时,可以根据时间来设定:

 

函数

 

 

 greatest:返回最大值(这个是横向比较) 是比较这一行  而max是这一列是纵向

 

 

 

NULL

子查询 

 子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。
PS: 子语句可以与主语句所查询的表相同,也可以是不同表
 

 select name,score from info where id in (select name from info where score >80);
以上同表示例:
主语句:select name,score from info where id
子语句(集合): select id from info where score >80
PS:子语句中的sql语句是为了,最后过滤出一个结果集,用于主语句的判断条件
⭐⭐ in: 将主表和子表关联/连接的语法

 

 想查询ky01中 成绩大于19的数目

 

 复杂的格式:

通过相同的字段去提取

  

第二种举例:先执行内查询,内查询的结果作为条件返回给外查询,然后再去执行

 

 同时可以结合as语句

 

EXISTS

这个关键字在子查询时,主要用于判断子查

询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回 FALSE,监测子查询的结果

 

 

 表连接查询

MySQL 的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的 共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择 性的连接到选定的主表结果集上。使用较多的连接查询包括:内连接、左连接和右连接

 

1、内连接

MySQL 中的内连接就是两张或多张表中同时符合某种条件的数据记录的组合。通常在 FROM 子句中使用关键字 INNER JOIN 来连接多张表,并使用 ON 子句设置连接条件,内连接是系统默认的表连接,所以在 FROM 子句后可以省略 INNER 关键字,只使用 关键字 JOIN。同时有多个表时,也可以连续使用 INNER JOIN 来实现多表的内连接,不过为了更好的性能,建议最好不要超过三个表

(1)语法
SELECT column_name(s)FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
举例说明:

通过内连接 inner join找出左表右表相同的部分

 

可以根据左连接,来表示两表之间相同的数据

 

可以通过右表连接,来表示两表之间相同的数据

 

 

 

多表连接:

 不仅仅可以通过内连接找到两表之间相同的数据,也可以通过多表连接找到相同的数据

 

 

2.左连接  

 左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。

语法:mysql>  select * from info left join infos on info.name=infos.name;

左连接中左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL。
 

 

右连接

右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配

 语法:mysql> select * from info right join infos on info.name=infos.name;

补充:两表全部查询

 

union all   将ky01的名字和ky02的名字都表示出来, 可以看出有重复的  如想驱虫,则删除all

 

 

 查看左表没有相同的数据

 

 

 ky02右表中没有相同的数据,所以反馈的是null

 

查看右表没有相同的数据 

 

 

 查看两个表没有交集的数据

 

 简要的表明 就是将右表中没有的数据+左表中没有的数据 就等于没有交集的数据

总结:

 

 

MySQL 提供了一些高阶的查询语句用法,可以帮助我们更灵活、高效地进行数据查询。以下是一些常用的高阶用法: 1. 子查询: 子查询是将一个查询嵌套在另一个查询中的查询结构。它可以用作 `SELECT` 语句中的列、`FROM` 子句中的表、`WHERE` 子句中的条件等。 示例: ```sql SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition); ``` 2. 联合查询: 联合查询用于将两个或多个查询的结果合并成一个结果集。可以使用 `UNION` 或 `UNION ALL` 运算符来执行联合查询。 示例: ```sql SELECT column_name FROM table1 UNION SELECT column_name FROM table2; ``` 3. 分页查询: 分页查询用于在结果集中进行分页显示数据。可以使用 `LIMIT` 子句指定要返回的记录数量,并使用 `OFFSET` 子句指定要跳过的记录数量。 示例: ```sql SELECT column_name FROM table_name LIMIT number_of_rows OFFSET offset_value; ``` 4. 排序: 可以使用 `ORDER BY` 子句对查询结果进行排序。可以按照一个或多个列进行升序或降序排序。 示例: ```sql SELECT column_name FROM table_name ORDER BY column_name ASC; ``` 5. 聚合函数和分组: 使用聚合函数(如 `SUM`、`AVG`、`COUNT` 等)可以对数据进行聚合计算。可以结合 `GROUP BY` 子句将结果集按照一个或多个列进行分组。 示例: ```sql SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 这些是一些常用的 MySQL 查询语句高阶用法,可以根据具体需求进行学习和使用。此外,MySQL 还提供了其他高级特性,如窗口函数、子查询优化、索引优化等,可以进一步提升查询性能和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值