SQL基本使用-查询表中的记录

查询表中的记录

1.语法

Select 字段列表
From 表名列表
Where 条件列表
Group by 分组字段
Having 分组之后的条件限定
Order by 排序
Limit 分页限定

2.基础查询

1.多个字段的查询

SELECT 字段名1,字段名2, FROM 表名;

2.查询所有

SELECT * FROM 表名;

3.去重复查询

SELECT DISTINCT 字段名1,字段名2 FROM 表名;

4.计算列

SELECT 字段名1,字段名2,字段名3+字段名4 FROM 表名;

5.计算列重命名

SELECT 字段名1,字段名2,字段名3+字段名4 AS 新的列名 FROM 表名;

3.条件查询

  1. WHERE 子句后跟条件
  2. 运算符

    < >= <= != <> …
    between…and 在…之间
    in (集合)
    like _单个任意字符 %多个任意字符

判断年龄 大于等于20

SELECT * FROM student WHERE age>=20;

判断年龄等于20

SELECT * FROM student WHERE age=20;

年龄不等与20的

SELECT * FROM student WHERE age!=20;
SELECT * FROM student WHERE age<>20;

年龄在20-30之间的

SELECT * FROM student WHERE age>=20 && age<=30;
SELECT * FROM student WHERE age>=20 AND age<=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

年龄包含(22,19,24)

SELECT * FROM student WHERE age = 22 OR age =19 OR age = 24;
SELECT * FROM student WHERE age IN(22,19,24);

null不能使用= (!=)判断

SELECT * FROM student WHERE math = NULL; 

判断数学成绩为null的

SELECT * FROM student WHERE math IS NULL; 

判断数学成绩不为null的

SELECT * FROM student WHERE math IS NOT NULL; 

查询张开头的名字

SELECT * FROM student WHERE `name` LIKE '张%';

查询第二位是三的人

SELECT * FROM student WHERE `name` LIKE '_三';

查询两个字的名字

SELECT * FROM student WHERE `name` LIKE '__';

查询姓名中包含某个字符

SELECT * FROM student WHERE `name` LIKE '%三%';

4.排序语法

  1. 语法
    ORDER BY 排序字段1 排序方式1,排序字段2 排序方式2;
  2. 排序方式
    ASC 升序 默认方式
    DESC 降序
    查询后按降序排列
SELECT * FROM 表名 ORDER BY 列名 DESC;

查询后按降序排列,如果列名1有相等的,按列名2的降序排列

SELECT * FROM 表名 ORDER BY 列名1 DESC, 列名2 DESC;

5.聚合函数

解释:将一列数据作为一个整体,进行纵向计算(聚合计算会 排除 null );

不排除null解决方案

  1. 选择非空列
  2. IFNULL

聚合函数,表的数据的总数

SELECT COUNT(列名) FROM student;

如果是null 让他为0

SELECT COUNT(IFNULL(列名,0)) FROM student; 

聚合函数 最大值

SELECT MAX(列名) FROM student;

聚合函数 最小值

SELECT MIN(列名) FROM student;

聚合函数 求和

SELECT SUM(列名) FROM student;

聚合函数 平均值

SELECT AVG(列名) FROM student;

6.分组查询

语法

GROUP BY

WHERE 和 HAVING的区别
  1. 在分组之前限定,如果不满足条件,则不参与分组,having 在分组之后限定,如果不满足条件,则不回被查出
  2. where后不能跟聚合函数 having 可以跟聚合函数

分组查询 按列名1分组 查询列名2平均值,和总数

SELECT 列名1,AVG(列名2),COUNT(列名3) FROM 表名 GROUP BY 列名1;

分组查询 按列名1分组 查询列名2平均值,和总数 排除 列名2大于80的

SELECT 列名1,AVG(列名2),COUNT(列名3) FROM  表名 WHERE 列名2>80 GROUP BY 列名1;

分组查询 按列名1分组 查询列名2平均值,和总数 排除 列名2大于80的 并且 总数大2的

SELECT 列名1,AVG(列名2),COUNT(列名3) FROM 表名 WHERE 列名2>80 GROUP BY 列名1 HAVING COUNT(id)>2;
// '人数' 是 AS 的新名字 聚合函数可以 AS 名字 并且在别的地方调用
SELECT 列名1,AVG(列名2),COUNT(列名3) 人数 FROM 表名 WHERE 列名2>80 GROUP BY 列名1 HAVING 人数>2;

7.分页查询

语法

LIMIT 开始的索引,每页查询的条数;

公式

开始的索引 = (当前的页码-1) * 每页显示的条数;

分页查询

SELECT * FROM student LIMIT 0,3;
  • 11
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值