MySQL-高级语句


一、SQL高级语句

1. select

显示表格中的一个或者多个字段中所有的信息

#格式:

select 字段名  from 表名;


select * from students;

在这里插入图片描述

select name,score from students;

在这里插入图片描述

2. distinct

查询不重复记录

#格式:
select distinct 字段 from 表名﹔

在这里插入图片描述

select distinct age from students;

在这里插入图片描述

select distinct gender from students;

在这里插入图片描述

3. where

where 有条件的查询

#格式:
select '字段' from 表名  where 条件
select name,age from students where age<15;

在这里插入图片描述

4. and,or

and: 且 , or: 或

#格式:
select 字段名  from 表名 where 条件1 (and|or) 条件2 (and|or)条件3;
select name,age from students where age>15 and age<20;

在这里插入图片描述

5. in

显示已知值的资料

#格式:
select 字段名  from 表名 where 字段 in ('值1','值2'....);
select * from students where id in (1,2,3,4);

在这里插入图片描述

select * from students where age in (10,17);

在这里插入图片描述

6. between

显示两个值范围内的资料

#格式:
select 字段名  from 表名 where 字段 between  '值1' and '值2';
包括 and两边的值
select * from students where id  between 1 and 5;

select * from students where id  between 1 and 4;

在这里插入图片描述

select * from students where score  between 10 and 50;

在这里插入图片描述

select * from students where name between 'haijiu' and 'wangwu';

在这里插入图片描述

select * from students where age between 10 and 15;

在这里插入图片描述

7. like 通配符

通配符通常是和 like 一起使用

#格式:
select 字段名  from 表名 where 字段 like 通配符格式
通配符含义
%表示零个,一个或者多个字符
_下划线表示单个字符
A_Z所有以A开头 Z 结尾的字符串 ‘ABZ’ ‘ACZ’ 'ACCCCZ’不在范围内 下划线只表示一个字符 AZ 包含a空格z
ABC%所有以ABC开头的字符串 ABCD ABCABC
%CBA所有以CBA结尾的字符串 WCBA CBACBA
%AN%所有包含AN的字符串 los angeles
_AN%所有 第二个字母为 A 第三个字母 为N 的字符串
select * from students where name like 'h%';

在这里插入图片描述

select * from students where name like '_a%';

在这里插入图片描述

select * from  students where name like '%liu%';

在这里插入图片描述

8. order by

order by 按关键字排序

#语法:
select 字段名  from 表名 where 条件 order by 字段 [asc,desc];
asc :正向排序
desc :反向排序
select id,name from students order by id;

在这里插入图片描述

select id,name from students order by id desc;

在这里插入图片描述

select id,name,age from students where age=17 order by id;

在这里插入图片描述

9. 函数

9.1 数学函数

函数含义
abs(x)返回x 的 绝对值
rand()返回0到1的随机数
mod(x,y)返回x除以y以后的余数
power(x,y)返回x的y次方
round(x)返回离x最近的整数
round(x,y)保留x的y位小数四舍五入后的值
sqrt(x)返回x的平方根
truncate(x,y)返回数字 x 截断为 y 位小数的值
ceil(x)返回大于或等于 x 的最小整数
floor(x)返回小于或等于 x 的最大整数
greatest(x1,x2…)返回返回集合中最大的值
least(x1,x2…)返回返回集合中最小的值
select  abs(-6);

在这里插入图片描述

select  rand(1);

在这里插入图片描述

select * from xues order by rand();

在这里插入图片描述

在这里插入图片描述

select mod(10,3);

在这里插入图片描述

select power(2,10);

在这里插入图片描述

select round(6.5);

select round(6.4);

在这里插入图片描述

select round(3.1415926,2);

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

select truncate(3.1415,3);

select truncate(3.1455,3);

在这里插入图片描述

select ceil(3.1415);

在这里插入图片描述

select floor(3.1415);

在这里插入图片描述

select greatest(12,13,14,15);

在这里插入图片描述

select  least(12,13,14,15);

在这里插入图片描述

9.2 聚合函数

函数含义
avg()返回指定列的平均值
count()返回指定列中非 NULL 值的个数
min()返回指定列的最小值
max()返回指定列的最大值
sum(x)返回指定列的所有值之和

在这里插入图片描述

select  avg(age) from xues;

select  avg(score) from xues;

在这里插入图片描述

select  sum(age) from xues;

在这里插入图片描述

select max(age) from xues;

在这里插入图片描述

select min(age) from xues;

在这里插入图片描述


select  count(classid) from xues;
 
count(明确字段):不会忽略空记录

在这里插入图片描述


 select count(*) from xues;
 
 count(*)包含空字段,会忽略空记录

在这里插入图片描述

查看空格字段是否会被匹配
insert into xues values(16,'',20,82,'ppp',1);

在这里插入图片描述

10. group by

  1. 对group by 后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的

  2. group by 有一个原则,就是select 后面的所有列中,没有使用聚合函数的列必须出现在 group by 的后面。

#格式:
select 字段1,sum(字段2) from 表名 group by 字段1;
select classid,sum(age) from xues group by classid;

在这里插入图片描述

select classid,avg(age) from xues group by classid;

在这里插入图片描述

select classid,count(age) from xues group by classid;

在这里插入图片描述

11. having

  1. having:用来过滤由group by语句返回的记录集,通常与group by语句联合使用

  2. having语句的存在弥补了where关键字不能与聚合函数联合使用的不足。如果被SELECT的只有函数栏,那就不需要GROUP BY子句。

  3. 要根据新表中的字段,来指定条件

#格式:
SELECT 字段1,SUM("字段")FROM 表格名 GROUP BY 字段1 having(函数条件);
select classid,avg(score) from xues group by classid;

select classid,avg(score) from xues group by classid having avg(score)>80;

在这里插入图片描述

12. 别名

栏位別名 表格別名

#格式:
SELECT "表格別名"."栏位1" [AS] "栏位別名" FROM "表格名" [AS] "表格別名";
select f.classid,avg(score) '平均成绩' from xues as f group by f.classid;

在这里插入图片描述

13. 子查询

连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL语句

#格式:
SELECT "栏位1" FROM "表格" WHERE "栏位2"	[比较运算符]			
#子查询
(SELECT "栏位1" FROM "表格" WHERE "条件");	
select sum(score) from xues where id in (select id from students where id=1);

在这里插入图片描述

14. EXISTS

  1. 用来测试内查询有没有产生任何结果类似布尔值是否为真

  2. 如果有的话,系统就会执行外查询中的SQL语句。若是没有的话,那整个 SQL 语句就不会产生任何结果。

 
#格式:
SELECT "栏位1" FROM "表格1" WHERE EXISTS (SELECT * FROM "表格2" WHERE "条件");
先看students表中是否有id为1的学生,如果有则执行将xues表中的score求和

select sum(score) from xues where exists (select * from students where id=1);

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

#示例2:先看students表中是否有id为16的学生,如果有则执行将xues表中的score求和

select sum(score) from xues where exists (select * from students where id=16);

在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值