MySQL数据库高级SQL语句(二)

MySQL数据库高级SQL语句


在这里插入图片描述

| | 连接符

如果sql_mode开启开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的

在这里插入图片描述

 select Region || ' ' || Name from city where Region = 'north';

在这里插入图片描述

GROUP BY

对GROUP BY后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GEOUP EY后面。
语法:SELECT “栏位1”,SUM(“栏位2”) FROM “表名” GROUP BY “栏位1”;

select Store_Name,sum(Sales) from tickets group by Store_Name;
select Store_Name,sum(Sales) from tickets group by Store_Name order by Sales desc;

在这里插入图片描述

HAVING

用来过滤由GROUP BY语句返回的记录集,通常与GROUP BY语句联合使用
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。如果被SELECT的只有函数栏,那就不需要GROUP BY子句。
语法:SELECT “栏位1”,SUM(“栏位2”) FROM “表格名” GROUP BY “栏位1” HAVING(函数条件);

select Store_Name,sum(Sales) from tickets group by Store_Name having sum(Sales) >1000;

在这里插入图片描述

别名

栏位别名 表格别名
语法:SELECT “表格别名”.“栏位1” [AS] “栏位别名” FROM “表格名” [AS] “表格别名”;

select T.Store_Name as N,Date as D from tickets as T group by N;
select T.Store_Name as N,sum(Sales),Date as D from tickets as T group by N;

在这里插入图片描述

子查询

连接表格,在 WHERE 子句或 HAVING 子句中插入另一个SQL语句
语法: SELECT “栏位1” FROM “表格1” WHERE “栏位2” [ 比较运算符]——外查询
(SELECT “栏位1” FROM" 表格2" WHERE “条件”);——内查询
可以是符号的运算符,例如 =、>、<、>=、<=
也可以是文字的运算符,例如LIKE、IN、BETWEEN

select sum(Sales) from tickets where Store_Name in ('shanghai','tianjin');
select sum(Sales) from tickets where Store_Name in (select Name from city where Region = 'south');

在这里插入图片描述
在这里插入图片描述

EXISTS

用来测试内查询有没有产生任何结果,类似布尔值是否为真
如果有的话,系统就会执行外查询中的SQL语句。若是没有的话,那整个SQL语句就不会产生任何结果。
语法: SELECT “栏位1” FROM “表格1” WHERE EXISTS (SELECT * FROM “表格2” WHERE “条件”);

select * from tickets where Sales=750;
select Region from city where exists(select * from tickets where Sales='750');
select Region from city where exists(select * from tickets where Sales='1000');

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51613313/article/details/113862426