MySQL语句---查询篇

发布于:2022-12-14 ⋅ 阅读:(734) ⋅ 点赞:(0)

目录

1:查询基本

2:起别名

3:条件查询

4:排序数据

5:单行处理函数

6:多行处理函数

7:分组查询


MySQL查询语句我们用到的主要是select。

假设我们这里有个表格名叫stu:

 这个列的名字的名称就叫字段,如name,score,age,sex。

(1)查询基本

select *from stu;//列出所有的字段
select name from stu;//列出的是name的字段
select 字段名 from  表格;
select 字段1,字段2,字段3 from stu;//列出多个字段

(2)起别名

就是将列出的字段换个名称而已,但注意只是换个名字,并没有修改表内容。(记住这句话:select永远不会修改表格内容)

select 字段1 as 牛逼 from stu;//字段1名字修改成牛逼.(嘿嘿嘿)

 如果起的别名里面有个空格的话,一定要加个单引号哦!!!

多个字段逗号隔开就行。

(3)条件查询

顾名思义,条件查询不再只是单纯地查询了,而是带有条件的查询。

这时候就需要where语句了。固定格式:

select 字段 from 表格名 where 条件 ;
运算符如下:
>                    大于
<                    小于
>=                   大于等于
<=                   小于等于
!=                   不等于
between...and...     在两个值之间,等同于大于等于...小于等于
and                  和运算
or                   或运算
not                  取非运算(注意用在is和in)
is null              为空
is not null          非空
in                   包含
like                 模糊查询,%匹配任意字符,_匹配一个字符
                                         

比如:找出女性同学:

select name as '名字',sex as '性别' from stu where sex='女';

 

要说in的用法,那我在创建个表格woker

 

 假如,筛选job是wr或者是op的

select name,job from woker where job='op' or job='wr';//用or写的


select name,job from woker where job in('op','wr');//用in写的

 但是注意in不是个区间,它是具体的值。

如:查找sal=1990和1890的name

select name,sal from woker where sal in(1990,1890);

 相反not  in就是不在那几个值之间了,就是不是那几个值的意思了

好,接下来是模糊查询,就要用到like了。

select 字段名 from 表名 where 字段 like 条件;

如查询woker表格中sal中有2的name。

select name,sal from woker where sal like '%2%';

如查询woker表格中sal第三位数字是9的name

select name,sal from woker where sal like '__9%';

 

 (4)排序数据

还是使用woker表格,如果我们想把sal字段从小到大升序排好,该怎么做呢

select name,sal from woker order by sal;//默认是升序的
select name,sal from woker order by sal desc;//这个是降序
select name,sal from woker order by sal asc;//这个是升序

 

 

 这只是单个字段的排序,那多个字段呢?

如:查找sal升序,如果sal相等,按照名字升序来,既然这样子,之前的woker表我有改了一下,如下图:

     

select name,sal from woker order by sal asc,name asc;

 

 (5)单行处理函数

单行处理函数:一个输入一

lower          转换成小写
upper          转换成大写
substr         取子串,格式:substr(被截取的字符串名,起点位置,截取的长度),
               注意,起始位置是1!!!!!!!!!
length         求长度
trim           去除空格
str_to_data    将字符串转换成日期
date_format    格式化日期
round          四舍五入,格式:round(数,保留几位)
rand           生成随机数
ifnull         将null具体转换成一个值
concat         将字符串进行拼接

个输出,一行一行地处理,一行处理完了,再继续处理下一行。

还是使用woker表格

如:查找name并全部大写

select upper(name) from woker;

 

如:查找name第二位是i

select name from woker where substr(name,2,1)='i';

 

 如:将name首字母大写(用到了concat)

select concat(upper(substr(name,1,1)),substr(name,2,3)) from woker;

 如:查询name中的长度(length)

select length(name) from woker;

举个trim的例子,查询name= ui

 有空格差不多,用trim去除了空格,可查到。

ifnull处理空,为什么有这个函数呢,因为在数学运算中null参与的数学运算结果就是null

格式就是:

ifnull(数据,被当成哪个数);

(6)多行处理函数

特点:输入多行,输出一行

count     取得记录数
sum       求和
avg       求平均
max       取最大值
min       取最小值

多行处理函数又叫分组处理函数,所以在使用前一定要进行分组,分组之后才可以使用,如果没有分组,整张表默认为一组。

分组函数注意点:

1:分组函数,自动忽略null,所以不需要对null进行处理。

2:count(*)和count(字段)的区别。

count(*)统计的是总行数

count(某个字段)统计的是该字段下不为null的个数

3:分组函数不能用在where语句后面。

如查找比最低工资低的员工

不能写成:select name from woker where sal<min(sal);

4:分组可以组合一起使用。

(7)分组查询

在实际应用中可能需要进行分组之后对每一组的数据进行操作,这时候就需要分组了

select 字段
from  表格
grou by
...
;




关键字的顺序

select
....
from
....
where
.....
group by
.....
order by
.....
;

//执行顺序是
1:from
2:where
3:group by
4:select
5:order by

还是使用woker表格

如查询每个job工作岗位上的总薪水

select job,sum(sal) from woker group by job;

 分组查询中查询的字段最好是group by后面的字段以及多行处理函数!!!

having:可以过滤分组过后进行查询,而且having必须与group by一起使用

如:查找每个性别中的最大薪资大于3000的

select sex,max(sal) from woker group by sex having max(sal)>3000;

 

如有错误,还请大佬指正!!!!!!