day06-JavaWeb

DQL

查询语法

基础查询

1.查询多个字段

-- 查询所有记录,不要使用!
SELECT * FROM users;

-- 查询用户名,性别
SELECT username,sex FROM users;

2.去除重复记录 distinct

SELECT DISTINCT username FROM users;

3.取别名 AS,as也可以省略,有空格隔开就行

SELECT username as 用户名,sex as 性别 FROM users;

条件查询

SELECT username,sex FROM users WHERE 条件列表;

 -- 查询年龄大于20岁的学员信息
SELECT * FROM stu WHERE age > 20;

-- 查询年龄等于18,20,22的学员信息
SELECT * FROM stu WHERE age = 18 OR age = 20 OR age = 22;

SELECT * FROM stu WHERE age in (18,20,22);

-- 查询英语成绩为null的学员信息
-- 错误写法:SELECT * FROM stu WHERE english = NULL;
-- NULL的比较不能使用=,!=,只能使用IS,IS NOT
SELECT * FROM stu WHERE english IS null;

-- 模糊查询 LIKE
/*
通配符
(1)_:代表单个任意字符
(2)%:代表任意个数字符
*/
SELECT * FROM stu WHERE `name` LIKE '柳_';


SELECT * FROM stu WHERE `name` LIKE '马%‘;

 排序查询

-- 按年龄升序排列,ASC表示升序,默认升序,可以省略
SELECT * FROM stu ORDER BY age ASC; 


-- 按数学成绩降序排列,数学成绩相同则按英语成绩升序排列
SELECT * FROM stu ORDER BY math DESC ,english;

分组查询

聚合函数:将一列数据作为整体进行计算

-- 分组查询
-- 统计一个班一共有多少个学生
SELECT count(id) FROM stu;
-- count统计的列中不能有null,故count的取值一般为主键(非空且唯一)或者*
-- 查询数学成绩的最高分
SELECT MAX(math) FROM stu;
-- 查询数学成绩的最低分
SELECT MIN(math) FROM stu;
-- 查询数学成绩的总分
SELECT SUM(math) FROM stu;
-- 查询数学成绩的平均分
SELECT AVG(math) FROM stu;
-- 查询英语成绩最低分

SELECT MIN(english) FROM stu;


-- null值不参与聚合函数计算

 /*
分组查询语法:
        SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] 
GROUP BY 分组字段名 [HAVING 分组后条件过滤];
*/

SELECT * FROM stu;
-- 查询男同学和女同学各自的数学平均分
SELECT sex,AVG(math) FROM stu GROUP BY sex;
-- 分组之后,查询字段应为分组字段和聚合函数,查询其他字段没有意义
-- 例:select name,sex,AVG(math) FROM stu GROUP BY sex;这里面的name字段没有意义
-- 查询男同学和女同学各自的数学平均分,及各自人数
SELECT sex 性别,AVG(math) as 平均分,COUNT(*) as 人数 FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,及各自人数,要求分数低于70不参与分组
SELECT sex 性别,AVG(math) as 平均分,COUNT(*) as 人数 FROM stu WHERE math >=70 GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,及各自人数,要求分数低于70不参与分组,且分组之后人数大于2
-- WHERE 不能对聚合函数进行判断,having可以,因为执行顺序:where>聚合函数>having

分页查询(LIMIT)

/*
分页查询语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
起始索引从0开始,类似数组下标
*/

-- 从0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第一页数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第二页数据
SELECT * FROM stu LIMIT 3,3;
-- 每页显示3条数据,查询第三页数据
SELECT * FROM stu LIMIT 6,3;
-- LIMIT是MySQL专属,oracle使用的是rownumber,SQL server使用的是top

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值