数据库的查询操作

1. 基础查询

1.语法:

  • select
    字段列表.
  • from
    表名列表.
  • where
    条件列表
  • group by
    分组字段
  • having
    分组之后的条件
  • order by
    排序
  • limit
    分页限定
  1. 基础查询
  • 多个字段的查询
    select字段名1,字段名2… from表名;
    注意: 如果查询所有字段,则可以使用*来替代字段列表。

  • 去除重复:
    distinct

  • 计算列
    一般可以使用四则运算计算一些列的值。 ( 一般只会进行数值型的计算)
    ifnull(表达式1 ,表达式2) : null参与的运算,计算结果都为null
    表达式1 :哪个字段需要判断是否为null,如果该字段为null后的替换值。

  • 起别名:
    as : as也可以省略

在这里插入图片描述
在这里插入图片描述

2. 条件查询
  1. where子句后跟条件
  2. 运算符
    *>、<、<=、>=、=、<>
  3. BETWEEN. . . AND
-- 查询年龄大于20岁
SELECT * FROM student2 WHERE age > 20;
SELECT * FROM student2 WHERE age >= 20;
-- 查询年龄等于20岁
SELECT * FROM student2 WHERE age = 20;

-- 查询年龄不等于20岁
SELECT * FROM student2 WHERE age != 20;
SELECT * FROM student2 WHERE age <> 20;

-- 查询年龄大于等于20岁小于等于30
SELECT * FROM student2 WHERE age >= 20 && age <=30;
SELECT * FROM student2 WHERE age >= 20 AND age <=30;
SELECT * FROM student2 WHERE age BETWEEN 20 AND 30;
  1. IN(集合)
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student2 WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student2 WHERE age IN(22,18,25);
  1. LIKE:模糊查询
-- 查询姓马的有哪些? LIKE
SELECT * FROM student2 WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student2 WHERE NAME LIKE '_化%';
-- 查询姓名是三个字的人
SELECT * FROM student2 WHERE NAME LIKE '___';
-- 查询姓名中包含德的人
SELECT * FROM student2 WHERE NAME LIKE '%德%';
  1. IS NULL
-- 查询英语成绩为NULL
SELECT * FROM student2 WHERE english IS NULL;
-- 查询英语成绩为不为NULL
SELECT * FROM student2 WHERE english IS NOT NULL;
  1. and或&&.
  2. or或||
  3. not或!
3. DQL
  1. 排序查询.
  • 语法: order by子句
    • order by排序字段1排序方式1,排序字段2排序方式2…
  • 排序方式:
    • ASC:升序,默认的。
    • DESC :降序。
  • 注意:
    • 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
-- 数学成绩排序
SELECT * FROM student2 ORDER BY math ASC; -- 升序
SELECT * FROM student2 ORDER BY math DESC; -- 降序

-- 按照数学成绩排序,如果数学成绩一样,则按照英语成绩排名
SELECT * FROM student2 ORDER BY math ASC, english ASC;
  1. 聚合函数

    • count :计算个数
    • 一般选择非空的列:主键
  2. count(* )

SELECT COUNT(IFNULL(english,0)) FROM student2;
SELECT COUNT(id) FROM student2;

SELECT MAX(math) FROM student2;
SELECT MIN(math) FROM student2;
SELECT SUM(math) FROM student2;
SELECT AVG(math) FROM student2;
  1. 分组查询
    • 语法: group by分组字段;
    • 注意:
      • 分组之后查询的字段:分组字段、聚合函数
    • where 和having 的区别?
    • where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
    • where后不可以跟聚合函数,having可以进行聚合函数的判断。
-- 按照性别分组,分别查询男、女同学的平均分
SELECT sex, AVG(math),COUNT(id) FROM student2 GROUP BY sex;
-- 按照性别分组,分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后,人数要大于2
SELECT sex, AVG(math),COUNT(id) FROM student2 WHERE math > 70 GROUP BY sex;
  1. 分页查询
  • 语法:limit开始的索引,每页查询的条数
  • 分页操作是一个“方言”

注意:聚合函数的计算,排除nul1值。
解决方案:

  • 选择不包含非空的列进行计算
  • IFNUL L函数
-- 每页显示3条记录
SELECT * FROM student2 LIMIT 0,3; -- 第一页
SELECT * FROM student2 LIMIT 3,3; -- 第二页
SELECT * FROM student2 LIMIT 6,3; -- 第三页
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值