mysql学习——mysql查询语句综合练习

练习一:

设有成绩表stu如下:

姓名 科目 成绩
张三 数学 90
张三 语文 50
张三 地理 40
李四 语文 55
李四 政治 45
王五 政治 30
王五 数学 70

试查询两门及两门以上不及格同学的平均分

解答如下

1.创建数据表

create table stu(
id int primary key auto_increment,
name char(3) not null default‘‘,
subject char(3) not null default‘‘,
score decimal(3,1) not null default 0.0
)charset utf8;

2.写入数据

set names gbk;#这样中文汉字才可以正常输入
insert into stu
(name,subject,score)
values
(‘张三‘,‘数学‘,90),
(‘张三‘,‘语文‘,50),
(‘张三‘,‘地理‘,40),
(‘李四‘,‘语文‘,55),
(‘李四‘,‘政治‘,45),
(‘王五‘,‘政治‘,30),
(‘王五‘,‘数学‘,70);

3.查询

#本题的解答——查询存在两门(包含两门)以上课程不及格的学生的平均分
select name,avg(score),sum(score<60) as gk from stu group by name having gk>=2;

#其它相关查询1——查询存在两门(包含两门)以上课程不及格的学生的姓名

select name from stu where score<60 group by name having count(subject)>=2;

#其它相关查询2——对本题的一点解释

mysql学习——mysql查询语句综合练习

时间: 2024-10-03 22:25:23

mysql学习——mysql查询语句综合练习的相关文章

MySQL学习——SQL查询语句(连接查询&amp;子查询)(三)

一:连接查询: 连接查询是将俩个或者俩个以上的表按照某个条件连接起来,从中选择需要的数据,连接查询同时查询俩个或者俩个以上的表时使用,当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表,例如,学生表中有course_id字段来表示所学课程的课程号,课程表中有num字段来表示课程号,那么可以通过学生表中的course_id字段与课程表中的num字段来进行连接查询,连接查询包括内连接查询和外连接查询. 1.1 内连接查询 内连接查询是一种常用的连接查询,内连接查询可以查询俩个或者以上

跟王老师学MySQL: 基本查询语句

跟王老师学MySQL: 基本查询语句 主讲教师:王少华   QQ群号:483773664 学习内容 查询语句的基本语法 查询数据指从数据库中获取所需要的数据.MySQL中是使用SELECT语句来查询数据的 一.select的基本语法形式如下 1 2 3 4 5 SELECT  属性列表  FROM  表名 [ WHERE  条件表达式1 ] [ GROUP BY  属性名1  [ HAVING 条件表达式2 ] ] [ ORDER BY  属性名2  [ ASC | DESC ] ] 属性列表:

MYSQL学习系列--DML语句(二)

引言: 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心,分别代表插入.更新与删除,是开发以数据为中心的应用程序必定会使用到的指令 实践操作 这篇是延续于上一篇更新写的,上一篇的文章:MYSQL学习系列--DML语句(一)我们上一次分别说了插入.更新.删除记录,这篇我们来介绍查询的不同玩法(涉及到一些常用函数)4)查询记录select 字段 from 表

MYSQL学习系列--DML语句(一)

引言: 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心,分别代表插入.更新与删除,是开发以数据为中心的应用程序必定会使用到的指令. 实践操作 在操作之前,一些数据库的创建,表的创建,这里就不在详说了,不懂得可以看我之前写的文章MYSQL学习系列--DDL语句查询使用select * from 表名; 前提是进入数据库我这边因为什么数据都没有插入,所以查

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin

mysql学习--mysql必知必会1

?? 例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式处理. (.)是正則表達式的一个符号,表示匹配随意一个字符: mysql> select prod_name -> from products -> where prod_name regexp '.000' -> order by prod_name; +--------------

mysql学习--mysql必知必会

上图为数据库操作分类: 以下的操作参考(mysql必知必会) 创建数据库 执行脚本建表: mysql> create database mytest; Query OK, 1 row affected (0.07 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mytest | | performan

[学习记录]MySQL之初级查询语句(select,where)

标准的查询语句如下 select 列名1,列名2,列名3 from 表名 该语句将返回该表中对应列的所有行 如果想要检索表中所有列则可以使用* select * from 表名a 由于表中非码属性允许重复,所以发现检索结果中有重复项,可以通过distinct过滤 select distinct 列名 from 表名f 如果只关心检索结果的前若干行,可以使用limit子句 select 列名 from 表名 limit a,b 意思为输出从第a行开始一共b行元素,如果不提供a则从第1行开始 如果需

MySQL学习分享--&gt;查询--&gt;查询的分类

MySQL的查询可以分为交叉联接.内联接.外联接.自然联接.straight_join 下面对于查询的学习,会用到以下四张表: create table t_commodity_type( `id` BIGINT(20) not null auto_increment comment '商品类别ID', `time` TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP comment '入库时间', `name` VARCHAR(32) not null D