我使用的表名是student3
表的内容如下图:
mysql注释有三种
/*mysql */
– mysql
#mysql
字符串:用单引号括起来
多个字段的查询 SELECT NAME, math,englisn FROM student3;
计算列:字段可以进行数学运算
SELECT NAME, math,englisn,englisn+math FROM student3;
SELECT NAME, math,englisn,IFNULL(englisn,0)+math FROM student3;
给列名起别名
SELECT NAME, math,englisn,IFNULL(englisn,0)+math AS '总分' FROM student3;#总分要用单引号引起来。
SELECT NAME, math,englisn,IFNULL(englisn,0)+math '总分' FROM student3;#起别名时as关键字可以空格代替
去除重
SELECT DISTINCT NAME, math,englisn FROM student3;
条件查询
#语法格式:
select
字段,...
from
表明
where
条件
#执行顺序:
from ⇒ where ==> select
=
<> #不等于
!= #不等于
>
>=
<
<=
between A and B 如: select age from student3 between 10and 20; #值的范围:[A,B]
in(a,b,c,...) #取值为集合set中的
NOT IN()
is null 如:select name from student3 where english is null;# 查询结果zl
is not null 如:select name from student3 where english is not null;
and
or
not
() #优先级最高
注意:区分null 0 ‘’ 如果字段是字符串类型,如果没有赋值,字段值其实是’’,而不是null,不能用is null判断
关键字:like
'_':代表一个字符
'%':代表0或者多个字符
格式:select *from 表名 where 列名 like ';
示例:
1、查询名字中第一个字是‘马’的人
select *from student where name like '马%' ;
2、查询姓名中含有‘马’的人
select *from student where name like '%马%';
3、查询姓名是三个字的人
select *from student where name like '___';//引号内是3个英文下划线
4、查询第二个字是‘马’的人
select *from student where name like '_马%';
语法:order by 字句
order by 排序字段1 排序方式1 ,排序字段2 排序方式2, …;
排序方式有两种:
升序:ASC(默认)
降序:DESC
SELECT *FROM student3 ORDER BY math ASC;-- 按照数学成绩升序排列
SELECT *FROM student3 ORDER BY math DESC;-- 按照数学成绩降序排列
SELECT *FROM student3 ORDER BY math;-- 按照数学成绩升序排列
SELECT *FROM student3 ORDER BY math ASC , english ASC;-- 按照数学成绩升序排列,如果数学成绩相同,按照英语成绩升序排列
- count:计算个数,可以是符合某些条件的个数,也可以不加条件
- max
- min
- sum
- avg:平均值
#表示如果是null将null替换成0
select count(IFNULL(english,0)) from student3;
count举例:
select count(name) from student3;
SELECT SUM(id + balance) FROM account;#先计算每一条记录的id+balance,在进行sum运算
SELECT SUM(id )+SUM( balance) FROM account;#先计算id的sum,在计算balance的和,再求和
1、关键字:group by
2、语法:
select 查询内容(分组依据,聚合函数) from 表名 group by 分组字段;
select sex,count(name),avg(math) from student3 group by sex;
-- 对符合条件的进行分组,可以利用这句话记住where 的位置
select 查询内容(分组依据,聚合函数) from 表名 where 条件 group by 分组字段;
SELECT sex,COUNT(NAME),AVG(math) FROM student3 WHERE math>85 GROUP BY sex;-- 对数学成绩>85分的同学就进行分组
-- 对分组后的组进行having后的条件筛选
select 查询内容(分组依据,聚合函数) from 表名 where 条件 group by 分组字段 having 条件;
SELECT sex,COUNT(NAME),AVG(math) FROM student3 WHERE math>85 GROUP BY sex HAVING COUNT(NAME)>2;-- 只显示人数>2的组
where 在group 之前,having 在group 之后
where后不能跟聚合函数
语法:limit 开始的索引,每页查询的条数;
第一个索引为0
开始的索引=(页数-1)*条数
select 查询内容 from 表名 limit 开始的索引,查询的条数;
SELECT *FROM student3 LIMIT 0,3;
执行顺序解读:先确定是哪个表,对表中的数据进行初步筛选。根据having后的条件进行分组。确定最后的数据。然后确定数据的展示顺序,组后确定数据的展示形式。