[数据库原理与应用]educoder-MySQL 单表查询(一)

目录

第1关:用like匹配字符串

第2关:用BETWEEN AND表达查询范围

第3关:空值的判断 

第4关:集合运算符IN的应用 

第5关:消除重复结果 

第6关:聚合函数应用

第7关:分组查询

第8关:对分组结果进行筛选 


相关数据库介绍

图书借阅数据库books中现有图书表,该数据库及表的创建语句如下:

#创建数据库 CREATE DATABASE books CHARACTER SET gbk COLLATE gbk_bin;

#创建图书表 CREATE TABLE book(

bookno VARCHAR(10) NOT NULL COMMENT '书号',

bookname VARCHAR(30) COMMENT '书名',

author VARCHAR(20) COMMENT '作者',

publisher VARCHAR(10) COMMENT '出版社',

publishyear YEAR COMMENT '出版年',

price DECIMAL(5,1) COMMENT '定价',

state CHAR(2) DEFAULT '可借' COMMENT '状态',

PRIMARY KEY (bookno) /* 书号是主键*/ )COMMENT='图书表'; #图书表现有数据如下图所示:

 

#说明:books数据库是对实际图书借阅信息的简化和模拟,图书表中假定所有图书都只有一本,书号是指条码号,是图书的唯一标识。

第1关:用like匹配字符串

本关任务

查询图书名中含有“数据”两个字的图书的书号、书名、作者、出版年。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########

select bookno,bookname,author,publishyear from book
where bookname like '%数据%';



########## End ##########

第2关:用BETWEEN AND表达查询范围

本关任务

查询价格介于20元至40元的图书的书号、书名、价格,要求查询结果按价格降序排序。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select bookno,bookname,price from book
where price between 20 and 40
order by price desc;




########## End ########## 

 

第3关:空值的判断 

本关任务

查询出版年信息未录入的图书的书号、书名、出版社。

 USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select bookno,bookname,publisher from book
where publishyear is null;




########## End ########## 

第4关:集合运算符IN的应用 

本关任务

查询出版年为2015、2005、1995、1985的图书的全部信息,并按出版年升序排序。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########

SELECT  bookno,bookname,author,publisher,publishyear,price,state
FROM book
WHERE publishyear IN (2015,2005,1995,1985)
ORDER BY publishyear         ;



########## End ##########

第5关:消除重复结果 

本关任务

从现有图书数据中查询出版社列表,要求查询结果中出版社(名)不重复,并按出版社(名)升序排序。

 USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select distinct publisher
from book
order by publisher




########## End ########## 

第6关:聚合函数应用

本关任务

查询表中已有的图书数、图书的最高价格和最低价格,要求查询结果的列标题依次为图书数、最高价格、最低价格。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select count(bookno) as '图书数' , max(price) as '最高价格' , min(price) as '最低价格'
from book;



########## End ########## 

 第7关:分组查询

本关任务

查询现有图书中各个出版社出版的图书各有多少,要求查询结果中的列标题分别为出版社、图书数量,并按图书数量降序排序。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select publisher as '出版社', count(publisher) as '图书数量'
from book
group by publisher
order by count(publisher) desc;




########## End ##########

第8关:对分组结果进行筛选 

本关任务

对现有图书数据进行查询,查询出版图书数量3种及以上的出版社及其出版图书数量,要求查询结果中的列标题分别为出版社、图书数量。

USE books;

#请在Begin-End之间填写查询语句
#注意:评测环境下,数据库名、表名、字段名区分大小写

########## Begin ##########
select publisher as '出版社', count(publisher) as '图书数量'
from book
group by publisher
having count(publisher) > 2; 




########## End ########## 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值