数据库MYSQL之查询表内的数据select

我使用的表名是student3
表的内容如下图:
在这里插入图片描述
mysql注释有三种
/*mysql */
– mysql
#mysql

一、基础查询

多个字段的查询   SELECT NAME, math,englisn FROM student3;
去除重          SELECT DISTINCT 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;
				SELECT NAME, math,englisn,IFNULL(englisn,0)+math '总分' FROM student3;

条件查询

‘=’
'<>'不等于
'!='不等于
'>'大于
'>='大于等于
‘<’
‘<=’
between A and B :值的范围:[A,B]
in(set) :取值为集合set中的
is null
is not null
and
or
not
注意:如果字段是字符串类型,如果没有赋值,字段值其实是’’,而不是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;-- 按照数学成绩升序排列,如果数学成绩相同,按照英语成绩升序排列

四、聚合函数

  • 将某一列作为整体,进行纵向计算统计
  • 使用方法:select 函数名(列名) from 表名;
  • 常见函数如下:
  1. count:计算个数,可以是符合某些条件的个数,也可以不加条件
  2. max
  3. min
  4. sum
  5. avg:平均值
  • 但是聚合函数的统计排除null值。解决方案:
    1、统计非空的列
    2、使用IFNULL();
#表示如果是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的组

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、having ,where 区别:

where 在group 之前,having 在group 之后
where后不能跟聚合函数

六、分页查询

语法:limit 开始的索引,每页查询的条数;
第一个索引为0
开始的索引=(页数-1)*条数

select 查询内容 from 表名 limit 开始的索引,查询的条数;
SELECT *FROM student3 LIMIT 0,3;

七、执行顺序

在这里插入图片描述
执行顺序解读:先确定是哪个表,对表中的数据进行初步筛选。根据having后的条件进行分组。确定最后的数据。然后确定数据的展示顺序,组后确定数据的展示形式。

扫描二维码关注公众号,回复: 9146799 查看本文章
发布了41 篇原创文章 · 获赞 5 · 访问量 2981

猜你喜欢

转载自blog.csdn.net/qq_43573743/article/details/104121486