首页 > 数据库 >数据库练习

数据库练习

时间:2024-09-24 17:24:10浏览次数:9  
标签:语句 info 班级 数据库 练习 查询 YEAR SELECT

1、查询所有学生信息,显示的内容包含:编号,姓名,班级,性别,出生日期,年龄,成绩

SELECT id,NAME,clazz,gender,score,bir,TIMESTAMPDIFF(YEAR,bir,NOW()) age FROM info;

2、查询每个班的学生人数各有几人

SELECT class, COUNT(*) AS student_number

FROM info

GROUP BY class;

3、查询每个班考试合格的人数

SELECT class, COUNT(*) as num_pass

FROM info

WHERE score >= 60

GROUP BY class;

///

这个查询语句假设了一个名为"student"的表,其中包含了学生的班级名称(class_name)和考试分数(score)两个字段。查询将会统计每个班级中考试分数大于等于60的学生人数,并将结果按班级名称分组显示。

4、查询每个班考试合格的人数,并且按照每个班考试合格人数升序排列

SELECT class, COUNT(*) as num_pass

FROM info

WHERE score >= 60

GROUP BY class

ORDER BY num_pass ASC;

/

这个查询语句与之前的查询语句类似,但是在最后添加了ORDER BY子句,用于按照每个班级的及格人数(num_pass)进行升序排序。通过执行这个查询语句,你将会获得每个班考试合格的人数,并且按照每个班考试合格人数升序排列的结果。

5、查询平均分在75分以上的班级信息,并且升序排序

SELECT class, AVG(score) as avg_score

FROM info

GROUP BY class

HAVING avg_score >= 75

ORDER BY class ASC;

/

这个查询语句首先使用GROUP BY子句按照班级名称对学生进行分组,并使用AVG函数计算每个班级的平均分。然后使用HAVING子句筛选出平均分大于等于75的班级。最后使用ORDER BY子句按照班级名称进行升序排序。通过执行这个查询语句,你将会获得满足条件的班级信息,并且按照班级名称升序排列的结果。

6、查询1994,1997,1986这几个年份中出生的学生信息

SELECT *

FROM info

WHERE YEAR (bir) IN (1986, 1994, 1997);

//

这个查询语句使用YEAR函数从sbirthday字段中提取出生年份,并使用IN操作符筛选出符合指定年份(1986、1994和1997)的学生信息。执行这个查询语句后,将会返回符合条件的学生信息的列表。

7、查询22岁---25岁区间的学生信息

SELECT *

FROM info

WHERE YEAR(CURDATE()) - YEAR(bir) BETWEEN 22 AND 25

//(这个查询语句使用CURDATE()函数获取当前日期,并使用YEAR函数从出生日期中提取年份。然后通过计算当前年份与出生年份的差值,得到学生的年龄。最后使用BETWEEN操作符筛选出年龄在22至25岁之间的学生信息。执行这个查询语句后,将会返回符合条件的学生信息。请注意,这个查询语句假设student表中的出生日期字段名为sbirthday。)

8、查询不在22-25这个区间的数据

SELECT *

FROM info

WHERE YEAR(CURDATE()) - YEAR(bir) NOT BETWEEN 22 AND 25

//

这个查询语句使用CURDATE()函数获取当前日期,并使用YEAR函数从出生日期中提取年份。然后通过计算当前年份与出生年份的差值,得到学生的年龄。最后使用BETWEEN操作符筛选出年龄在22至25岁之间的学生信息。执行这个查询语句后,将会返回符合条件的学生信息。请注意,这个查询语句假设student表中的出生日期字段名为sbirthday。

9、查询姓名三个字的,并且考试合格20岁以上的男生信息

SELECT *

FROM info

WHERE NAME LIKE '___' AND gender = '男' AND score >= 60 AND YEAR(CURDATE()) - YEAR(bir) > 20;

/

这个查询语句假设students表包含学生的信息,其中包含字段name(姓名)、gender(性别)、score(考试成绩)和birthdate(出生日期)。

查询语句中的LIKE '____'用于匹配任意三个字的姓名。gender = '男'用于筛选出男生。score >= 60用于筛选出考试成绩大于等于60分的学生。YEAR(CURDATE()) - YEAR(birthdate) > 20用于计算学生的年龄是否大于20岁。执行这个查询语句后,将会返回符合条件的学生信息。

10、查询不是1994,1997,1986这几个年份出生的学生信息

SELECT *

FROM info

WHERE YEAR (bir) NOT IN (1986, 1994, 1997);

11、查询20岁上的学生,每个班级考试合格的男女生人数各有多少人

SELECT class,

COUNT(CASE WHEN gender = '男' AND score >= 60 THEN 1 END) AS boy_num,

COUNT(CASE WHEN gender = '女' AND score >= 60 THEN 1 END) AS girl_num

FROM info

WHERE YEAR(CURDATE()) - YEAR(bir) > 20

GROUP BY class;

//查询语句使用了WHERE子句来筛选出20岁以上的学生。然后使用CASE语句在计数时根据性别和成绩条件进行条件判断,并使用COUNT函数进行计数。最后使用GROUP BY子句按班级名称进行分组,以便统计每个班级考试合格的男女生人数。执行这个查询语句后,将会返回每个班级考试合格的男女生人数。

12、查询年龄最大的前5名学员信息

SELECT *

FROM info

ORDER BY YEAR(CURDATE()) - YEAR(bir) DESC

LIMIT 5;

//上述查询语句中,使用了YEAR(CURDATE()) - YEAR(birthdate)来计算学员的年龄,然后按照年龄降序排序(从大到小),并使用LIMIT 5限制结果集为前5条记录。

请注意,这种计算年龄的方式假设出生日期是准确的,并且没有考虑闰年和日期格式的问题。如果需要更精确的计算方式,你可能需要根据你的实际情况进行修改。

13、查询生日为每一个月最后一天出生的人员信息,并且按年龄从大到小排列

SELECT *

FROM your_table

WHERE DATE_FORMAT(birthdate, '%m-%d') = DATE_FORMAT(LAST_DAY(birthdate), '%m-%d')

ORDER BY YEAR(CURDATE()) - YEAR(birthdate) DESC;

///

在上述查询语句中,假设你的表名为"your_table",并且包含一个名为"birthdate"的字段表示出生日期。DATE_FORMAT(birthdate, '%m-%d')将出生日期转换为月-日的格式,然后与DATE_FORMAT(LAST_DAY(birthdate), '%m-%d')进行比较,以确定是否是每一个月的最后一天。如果匹配,将返回符合条件的记录。

最后的ORDER BY子句使用计算年龄的公式YEAR(CURDATE()) - YEAR(birthdate)来按年龄从大到小进行排序。

请注意,上述查询语句假设你的表结构和日期格式与示例相匹配。如果实际情况不同,请相应地调整查询语句以适应你的数据结构和日期格式。

标签:语句,info,班级,数据库,练习,查询,YEAR,SELECT
From: https://blog.csdn.net/Excellent_tian/article/details/142495429

相关文章

  • redis数据库通过dump.rdb文件恢复数据库或者数据库迁移
     环境:centos7.2软件:redis-3.2.10(yum安装)情景一:公司之前的redis没有开启aof模式,一直是rdb模式,但是数据又非常重要,数据一点也不能丢失,所以需要开启aof,但是redis默认是从appendonly.aof加载数据,systemctlstartredis的时候,数据库是空的,因为我们并没有appendonly.aof文件,而且关......
  • Apache Doris单节点安装并运行:创建数据库、数据表、导入数据及查询等
    这个简短的指南将告诉你如何下载ApacheDoris最新稳定版本,在单节点上安装并运行它,包括创建数据库、数据表、导入数据及查询等。环境准备选择一个x86-64上的主流Linux环境,推荐CentOS7.1或者Ubuntu16.04以上版本。更多运行环境请参考安装部署部分。Java8运......
  • 《中国数据库前世今生》纪录片观感:从古至今数据库的演变与未来
    我的数据库之路:从新手到稳步前行三年数据库开发的经历,让我从一名菜鸟程序员逐步成长为能够独立解决问题的开发者。这段时间里,我经历过迷茫、困惑,也感受过技术攻关后的成就感。最近看了腾讯云推出的《中国数据库前世今生》纪录片,这让我回忆起自己在这条技术路上的点滴,也对中国数据库......
  • MySQL深度探索:掌握触发器自动化与精细用户权限管理,提升数据库效能与安全
     作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客目录前言:触发器(Triggers):用户权限(UserPermissions):一.触发器1.MySQL触发器简介2.引发触发器执行的事件,......
  • pbootcms网站是使用sqlite数据库好还是使用mysql数据库好
    选择在PbootCMS网站上使用SQLite数据库还是MySQL数据库取决于几个因素,包括但不限于网站规模、预期的访问量、并发需求以及维护成本等。以下是两者的对比:SQLite架构:SQLite是一种嵌入式的关系型数据库管理系统,它不需要单独的服务器进程或系统。适用场景:适用于小型应用程序,访问量......
  • Pbootcms数据库转换教程(sqlite转mysql详细教程)
    一、准备工作下载转换所需工具:确保你有SQLiteStudio和phpMyAdmin等工具。备份现有数据:在进行任何操作之前,请确保备份现有的SQLite数据库文件。二、教程1.导出SQLite数据库打开SQLiteStudio:启动SQLiteStudio软件。定位数据库文件:找到PbootCMS的data文件夹下的.db文件。......
  • pbootcms如何将默认的sqlite转换成mysql数据库
    将PbootCMS使用的SQLite数据库转换为MySQL数据库可以通过以下几个步骤实现:准备工作备份当前SQLite数据库:在开始转换前,确保你有一个完整的SQLite数据库备份,以防转换过程中出现任何问题。准备MySQL环境:确保你的服务器上已经安装并配置好了MySQL服务,并且创建了一个新的数据库供Pb......
  • 2024年数据库系统工程师考试大纲
    一、数据库系统工程师数据库系统工程师,属于计算机技术与软件(中级)专业技术资格。二、考试说明(一)考试目标通过本考试的合格人员能参与信息系统的规划、设计、构建、运行和管理,能按照用户需求,设计、建立、运行、维护数据库系统;能管理信息系统中的数据资源,建立和维护核心数据库,承担数......
  • 人工智能AI数据库,太酷了吧!(附医疗/金融/零售行业方案)
    人工智能AI数据库,太酷了吧!(附医疗/金融/零售行业方案)前言人工智能AI数据库前言AI数据库就像是一座桥梁,连接着数据和智能应用。不仅能够让我们更轻松地访问和管理数据,还能为我们提供强大的分析和决策支持。想象一下,当你拥有一个强大的AI数据库时,你可以快速地从海量......
  • E33.【C语言】数据在内存中的存储练习集(未完)
    1.求下列代码的打印结果#include<stdio.h>intmain(){ chara=-1; signedcharb=-1; unsignedcharc=-1; printf("a=%d,b=%d,c=%d",a,b,c); return0;}答案速查分析之前讲过,char在VS中默认为signedchar,则a和b的打印结果应该是一样的存储范围:si......