实战"/>
MySQL建立图书管理系统后续 mysql查询实战
实验内容
1. SELECT语句对表进行查询操作,是最基本的查询语句。
语法格式如下:
Select <目标列组> From <数据源> [Where <元组选择条件>]
[Group by <分组列> [Having <组选择条件>]]
[Order by <排序列1> <排序要求> [, …n]]
2.用SELECT语句对表进行连接查询操作,连接查询涉及被连接和连接两个表,所以数据源一般为多个表。用来连接两个表的条件称为连接条件,一般格式为:
[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
其中比较运算符主要有:=、>、<、>=、<=、!=。
3.用SELECT语句对表进行嵌套查询操作,一个Select…From…Where语句称为一个查询块,将一个查询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询,就是嵌套查询。主要有使用In操作符、使用比较运算符的嵌套查询方式。
4.用SELECT语句对表进行组合查询操作,将SELECT语句的查询结果集,再进行集合运算就构成了SQL的组合查询。组合查询操作符有Union(并操作)、Intersect(交操作)和Minus(差操作)。
5. SQL函数是综合信息的统计函数,包括计数,求最大值、最小值、平均值、和值等。基本的SQL函数如下:
AVG(数值表达式) 功能:求与字段相关的数值表达式的平均值
SUM(数值表达式) 功能:求与字段相关的数值表达式的和值
MIN(字段表达式) 功能:求字段表达式的最小值
MAX(字段表达式) 功能:求字段表达式的最大值
COUNT(*|字段表达式) 功能:求记录行数(*),或求不是NULL的字段的行数
6. 在SQL查询语句中,如果有GROUP BY分组子句,则语句中的函数为分组统计函数;如果没有GROUP BY分组子句,则语句中的函数为全部结果集的统计函数。语法为
Select [统计函数]<目标列组> From <数据源> [Where <元组选择条件>]
[Group by <分组列> [Having <组选择条件>]]
7,having语法
#1.列出自动化类图书的书号,名称,价格。
#提示:列起别名,如 书名 名称 或者 书名 as 名称
SELECT 书号,书名 AS 名称,定价 AS 价格
FROM 图书;
/*2.查询计算机类与电子工业出版社出版的图书
提示:结果应该既包含计算机类的图书又包含电子工业出版社的图书,用UNION 或者OR。*/
SELECT 书名
FROM 图书借阅.图书
WHERE 出版社='电子工业出版社' OR 类别='计算机类';
#3.查询借了书的读者(包含该读者的详细信息)。
SELECT DISTINCT 读者.* ,借阅.`书号`
FROM 读者,借阅
WHERE 读者.`读者编号`=借阅.`读者编号`
GROUP BY 读者.`读者编号`;
/*4.查询读者“张三”所借阅的书的情况,包括书号,书名,书的类别及借阅日期,按借阅日期递减排序*/
SELECT 图书.书号,图书.书名,图书.类别,借阅.借阅日期
FROM 图书,借阅
WHERE 借阅.读者编号=10001 AND 图书.书号=借阅.`书号`
ORDER BY 借阅.借阅日期 DESC
/*5.求阅读了所有自动化类书籍的读者的详细信息。
提示:NOT EXISTS NOT EXISTS*/
SELECT 读者.*
FROM 图书,借阅,读者
WHERE 图书.类别='自动化类' AND 图书.书号=借阅.`书号` AND 读者.读者编号=借阅.`读者编号`
GROUP BY 读者.`读者编号`;
/*求各类图书的总数量,平均定价,总价格,按类别递增排序。
AVG(数值表达式) 功能:求与字段相关的数值表达式的平均值SUM(数值表达式) 功能:求与字段相关的数值表达式的和值MIN(字段表达式) 功能:求字段表达式的最小值MAX(字段表达式) 功能:求字段表达式的最大值
COUNT(*|字段表达式) 功能:求记录行数(*),或求不是NULL*/
SELECT
图书.`类别`,
COUNT(DISTINCT 图书.书号) AS 图书的总数量,
AVG(图书.定价) AS 平均定价,
SUM(图书.定价) AS 总价格
FROM 图书
GROUP BY 图书.`类别`
ORDER BY 图书.`类别`;
#7.统计书名为“数据库技术及应用”的书被各读者借阅的次数,按次数递减排序。
SELECT
读者.读者编号,
读者.姓名,
COUNT(借阅.书号) AS 次数
FROM 读者,借阅,图书
WHERE 借阅.书号=图书.`书号` AND 借阅.`读者编号`=读者.`读者编号` AND 图书.`书名`='数据库技术及应用'
GROUP BY 借阅.读者编号
ORDER BY 次数 ASC
#.查找这样的图书类别:要求该类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍。
SELECT
图书.`类别`
FROM 图书
GROUP BY 图书.`类别`
HAVING MAX(图书.`定价`) >= AVG(图书.`定价`);
更多推荐
MySQL建立图书管理系统后续 mysql查询实战
发布评论