文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql学习笔记二 DQL

2018-07-25 03:25

关注

mysql学习笔记二  DQL

-- 查询编号为1004的学生的姓名和生日  
    select name,birthday from student where id=1004;
-- 查询年龄大于18的学生信息  
    select * from student where age>18;
-- 查询小明的成绩  
	select name,score from student where name="小明";
-- 查询年龄在18到20之间的所有学生  
    select * from student where age>18 and age<20;
    select * from student where age between 18 and 20; 
-- 查询除了1003外的所有学生信息  
    select * from student where id != 1003;
    select * from student where id <> 1003;
-- 查询编号为1005或者年龄为18的学生信息  
    select * from student where id=1005 or age=18;
-- 查询编号为1003和编号为1005的学生信息  
    select * from student where id=1003 and id=1005;
    select * from student where id in(1003,1005);
-- 查询编号不是1003和1005的学生信息  
    select * from student where id not in(1003,1005);
-- 查询所有姓张的学生信息, 可以使用like关键字进行模糊查询  
   --like关键字需要配合通配符使用  
   --通配符有两个: %(任意个任意字符), _(任意一个字符)  
    select * from student where name like "张%";
-- 查询名字中带国的学生信息  
    select * from student where name like "%国%";
-- 查询名字第二个字符为明的学生信息  
    select * from student where name like "_明%";
-- 查询缺考学生的信息, score没有值, 不是为0  
    select * from student where score is null;
-- 查询没有缺考的学生信息  
    select * from student where score is not null;
    select * from student where not score is null;

2.select子句

select子句的作用是选择要查询的列,还包括以下功能:

-- 运算  
-- null不参与运算, 结果都是null  
   select name,score,scoer+10 from student;
-- 可以给列定义别名, 使用as关键字, 可以省略  
-- 别名最好不要出现特殊字符, 中文也不建议使用  
   select name, score, score+10 as new_score from student;  
   select name, score, score+10 new_score from student;  
   select name, score, score+10 "成绩" from student; 
-- ifnull函数,类似于java中的三目运算符,用于处理空值null,如果某个字段为null,则使用给定的值进行替换
   select name, score, IFNULL(score,0)+10 new_score from student;  
-- 查询所有学生的年龄  
   select distinct age from student;

3.排序

使用order by子句可以进行结果的排序,需要配合两个关键字一起使用:

            ASC ,升序 ,ascending ( 默认值 )

            DESC ,降序 , descending 。

--查询所有学生信息,按照id进行升序排序
  select * from student order by id asc;
--查看年龄为20的学生信息,按照id降序排序
  select * from student order by id desc;
--可以按照别名进行排序
--查询所有学生的新成绩,并按照新成绩排名
  select name,score+10 new_score from student order by new_score desc;
--order by 后可以写数字,代表第几列(一般不用) 
  select * from student order by 6;
--rand()函数,生成随机数,范围是[0,1)
--配合rand函数可以进行数据的随机排序,打乱数据,洗牌.
  select * from student order by rand();
--查询所有学生的信息,按照年龄降序排序,如果年龄相同,再按照id降序排序
  select * from student order by age desc,id desc;

4.分组函数

分组函数用于对查询结果进行统计,共有5个,返回结果是一个值。count() ,sum(),max(),min(),avg()。

--分组函数使用时,null值不进行统计
--统计所有学生的人数
  select count(*) from student;
  select count(id) from student;
--查询总分,最低分数和最高分数及平均分数
  select sum(score),min(score),max(score),avg(score) from student;

5.分组查询

分组查询使用group by子句实现,分组查询后需要注意以下几点:

        1.select子句只能查询分组字段和分组函数。

        2.可以使用where在分组前条件过滤。

        3.可以使用having在分组后进行条件过滤。

-- 按照性别进行分组, 分别统计男女同学的人数和平均成绩
   select gender,count(*) cnt,avg(score) avg_score from student group by gender;
-- 按照性别进行分组,分别统计男女同学的人数和平均成绩,排除成绩低于70的学生信息
   select gender,count(*) cnt,avg(score) avg_score from student where score>=70 group by gender; 
-- 按照年龄进行分组,分别统计不同年龄同学的人数和平均成绩,排除人数小于2的分组信息
-- where和having的区别在于where中无法使用分组函数,而having中可以使用
   select age, count(*) cnt, avg(score) avg_score from student group by age having count(*)>=2;
   select age, count(*) cnt, avg(score) avg_score from student group by age having cnt>=2;

6.分页查询

    MySQL中,可以通过limit关键词实现分页查询,limit是MySQL的特有语法,limit后面需要跟两个参数,第一个参数是查询的起始索引(从0开始),第二个参数是查询的记录数,limit必须出现在SQL的末尾。

 

--每页显示两条学生信息,完成分页显示
--page:第几页
--size:每页显示几条数据
  select * from student order by id limit (page-1) * size, size;
--第一页
  select * from student order by id limit 0,2;
--第二页
  select * from student order by id limit 2,2;
--第三页
  select * from student order by id limit 4,2;

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯