猿创征文|MySQL基本查询语句的应用(有实例与代码)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 猿创征文|MySQL基本查询语句的应用(有实例与代码)

知识储备


基本查询语句:

       select <要列出的属性> from <表名> where <条件>;

查询语句,涉及关联表:

       select <要列出的属性> from <表名1> join <表名2> on <连接条件> where <条件>;

查询为空或为空字符串的条件:

       is null        //表示为空

       = ''        //表示为空字符串

获取当前时间:

       SELECT NOW()        //输出:年-月-日 时:分:秒

       SELECT CURRENT_DATE();        //输出:年-月-日

       select time(now());        // 时:分:秒

       year(now());month(now());day(now());        //单独获取年,月,日的日期

属性取别名:

       <旧属性名> as <新属性名>

函数允许您对表中符合特定条件的所有行进行计数

       count()

排序

       升序:asc  降序:desc

限制输出

       limit n;        //只选择前n行

数据处理

       最大:max,最小:min,平均:avg,求和:sum

分组使用或查询:

       group by

模糊查找表达式:

       %:任意多个任意字符

       _:一个任意字符

判断字符长度

       select length('王小二');        //utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。

去重:

       distinct:在对字段进行去重的时候,要保证distinct在所有字段的最前面。如果distinct关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

索引(创建,查找,删除)

       创建索引:alter table <表名> add index <索引名>(属性);

       查看索引:show index from <表名>;

       删除索引:drop index <索引名>on <表名>;


正文


数据库内容


表名


mysql> show tables;
+----------------+
| Tables_in_csdb |
+----------------+
| course         |
| open_course    |
| school         |
| select_course  |
| student        |
| teacher        |
+----------------+



数据表内容


22.png


实例与解析


实验原理及知识点:


(1)掌握MySQL数据库中创建数据库和表的方法


(2)掌握基本查询语句的应用


1、在student表中查询出生日期在2003年以前的学生的学号、姓名和年龄


源代码:select sno,sname,year(now())-year(sbirthday) as age from student where year(sbirthday)<2003;

21.png

2、查询student表中女生的人数,以别名“女生人数”命名


源代码:select count(distinct(sno)) as '女生人数' from student where ssex='女';

23.png

3、查询teacher表中每一位教授的教师号,姓名和学历


源代码:select tno,tname,academic from teacher;

24.png

4、查询teacher表中没有职称的教师的教工号,姓名


源代码:select tno,tname from teacher where professional='' or professional is null;

25.png

5、查询选修课程号为C603的学生的学号和期末成绩,并要求平时成绩在85到100分之间

27.png

源代码:select cno,final_grade from select_course where daily_grade>=85 and daily_grade<=100;


6、按性别统计student表中学生的平均年龄,并输出各性别下学生的平均年龄的值(注意以平均年龄来命名)

26.png

源代码:select ssex,avg(year(now()) - year(sbirthday)) as '平均年龄' from student group by ssex;

28.png


7、统计选课门数超过3门以上的学生的学号及其选课门数


源代码:select sno,count(cno) from select_course group by sno having count(cno) >= 3;

29.png

8、统计学号是’B20190303’(或每个学生)所选课程总评成绩的平均分,


其中总评成绩=daily*0.3+final*0.7(平均分保留小数位1位)


源代码:SELECT sno, round(avg(daily_grade*0.3 + final_grade*0.7), 1)'总评平均成绩' from select_course group by sno;

30.png

9、输出student表中年龄最大的男生的所有信息


源代码:select * from student where sbirthday = (select min(sbirthday) from student where ssex = '男') and ssex = '男';

31.png

10、显示所有姓王学生的姓名、出生日期、TEL


     源代码:select sname,sbirthday,tel from student where sname like '王%';

32.png

11、查询总评成绩大于85分的学生的学号、课程号和总评成绩,并按照课程号的升序,再按照总评成绩的降序排列


        源代码:SELECT sno, cno, (daily_grade*0.3 + final_grade*0.7) AS '总评成绩' FROM select_course where (daily_grade*0.3 + final_grade*0.7) > 85 order by cno asc, '总评成绩' desc;

33.png


12、查询选课在2门以上且各门课程期末成绩均高于85分的学生的学号及其总成绩,查询结果按照总成绩降序列出


源代码:select sno,sum(daily_grade*0.3 + final_grade*0.7) as '总成绩' from select_course


   -> where final_grade >= 85


   -> group by sno having count(sno) >= 2


   -> order by '总成绩' desc;

34.png

13、查询所选课程期末平均成绩最高的前三个学生的学号,并按期末平均成绩降序输出


     源代码:select sno from select_course group by sno order by avg(final_grade) desc limit 3;

35.png

14、查询学生的期末总成绩大于250分的学生的学号、期末总成绩和期末平均成绩


     源代码:select sno,sum(final_grade) as '期末总成绩',avg(final_grade) as '期末平均成绩' from select_course group by sno having sum(final_grade) > 250;

36.png

15、查询选修课程号为C601的学生的期末最高分、最低分及之间相差的分数


     源代码:select max(final_grade)as '期末最高分',min(final_grade) as '期末最低分',max(final_grade)-min(final_grade) as '期末最高分与最低分之差' from select_course where cno = 'C601';

19.png

16、查询以"数据"开头,且倒数第3个字符为"统"的课程的详细情况。


     源代码:select cname from course where cname like '数据%统__';

18.png

17、统计姓名中含有三个汉字的学生的数量


     源代码:select sname,count(*) from student where length(sname) >= 9 group by sname;

17.png

18、查询选修了课程的学生的学号


     源代码:select distinct(sno) from select_course;

16.png

19、查询参加学习的学生所学的课程号和总分


       源代码:select sno,cno,sum(daily_grade*0.3 + final_grade*0.7) as '总分' from select_course group by sno;

15.png

20、查询参加学习的学生学号,姓名与所学课程每门课的总成绩


     源代码:select distinct student.sno,student.sname,select_course.cno,select_course.daily_grade*0.3 + select_course.final_grade*0.7as '总成绩' from student join select_course on student.sno=select_course.sno;

14.png

21、在Student表中依据学生电话创建普通索引(或唯一索引)tel_index,查询后删除该索引


源代码:


       创建索引:alter table student add index tel_index(tel);

11.png

       查看索引:show index from student;

10.png

       删除索引:drop index tel_index on student;

9.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
存储 关系型数据库 MySQL
MySQL在企业内部应用场景有哪些
【10月更文挑战第17天】MySQL在企业内部应用场景有哪些
24 0
|
13天前
|
存储 关系型数据库 MySQL
介绍一下MySQL的一些应用场景
【10月更文挑战第17天】介绍一下MySQL的一些应用场景
54 0
|
5天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
9天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
6天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
17 1
|
3天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
17 0
|
4天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
22 0
|
6天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
14 0
|
20天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
55 3
Mysql(4)—数据库索引
|
5天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
36 2