select 字段名-------要查询的列名称
from 表名 ---------要查询的表名称
where 字段条件---------要查询的值的条件
group by 字段分组-----------对结果分组
having 字段分组的条件----------分组后的行条件进行过滤
order by 排序字段-----------对结果排序
1,查询student表所有列
select * from student
2,查询指定列
select id,name,age from student;
3.算数运算符
加(+),减(-),乘(*),除(/)(%)
4,比较运算符,用于将一个表达式与另一个表达进行比较
=,!=,<,>,<=,>=
in(多个值),is null(为空),is not null(不为空),between and 在..之间
5,逻辑运算符,用户合并两个条件的结果以产生单个结果。
and/&& (和),or(或),not(非)
6,合并运算符,用户两个独立查询的结果
union,union all
7,连接运算符,用于连个或多个字符串合并在一起
concat
select concat(name,age) from student;
8,模糊查询,用于查询姓名中包含a字母的学生时就需要使用模糊查询了
Like 接通配符
通配符:零或者多个字符,使用%有三种情况
字段like '%关键字%'字段包含'关键字'的记录
字段like '关键字%'字段以'关键字' 开始的记录
字段like'%关键字' 字段以"关键字"结束的记录
Select *from student where job like'_____';(查询job职称为5位)
%表示任意多个字符,_表示任意一个字符
9,去重复记录
distinct
select distinct sal from student;
10,空值之和,假设comm存在空值,则将空值设为0
select sal+ifnull(comm,0) from student;
11,起别名
as 别名
select concat(name,age) as total from student,其中total就是别名
12,排序
order by 字段名; asc升序,desc 降序
select * from student order by sal; 没有按升序排序
select * from student order by sal asc; sal升序
select * from student order by sal desc; sal降序
select * from student order by sal desc,id asc; sal 降序,id 升序
聚合函数
mysq聚合函数同时可以对多行数据进行操作,并返回一个结果,比如经常用来计算数据的总和和平均值,以及最大最小值之类,
简单理解:聚合函数是用来做纵向运算的函数
count:统计指定列不为null的记录行数
max():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
min(): 计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
sum():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
avg() :计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
select count(*) from student; 统计student表中行数
select count(name) from student; 统计student表中name的行数
select count(sal) from student where sal>2500; 统计月薪大于2500的人数
select sum(sal) from student; 统计薪资总和,sum()只能放1个字段名
select avg(sal) from student 统计员工平均工资
select max(sal) from student 统计最高工资
select min(min) from student 统计最低工资
分组查询
group by 当需要分组查询时使用group by字句,列如查询每个部门的工资和,这说明要使用部分来分组,分组的意义是为了统计数据。
根据部门编号分组
select deptno from student group by deptno;
查询每个部门的部门编号并且工资需要大于3800的人数;
select deptno,count(*) from company where sal>3800 group by deptno;
having having字句跟where的使用方法和作用是一样的,唯一区别是为了区别where,where子句只能跟在from后面,having子句只能跟在group by后,对分组后的数据进行过滤
查询员工表职位以及职位的人数,并且人数>2的职位
select job,count(*) from student group by job having count(*)>2;
limit 分页的实现
查看student表中1-3页的内容,0表示从第一行开始,7代表多少条数据
select * from student limit 0,3