【考】数据库原理与技术 数据查询

1、某网上书店后台数据库的部分关系模式如下:
会员(会员编号,用户名,密码,姓名,地址,邮编,电话,消费额,积分)
图书(图书编号,类型名称,图书名称,作者,出版社,出版日期,ISBN,价格)
订单(订单编号,用户名,销售额,订购日期,出货日期)
订单明细(订单明细编号,订单编号,图书编号,数量)
【考】数据库原理与技术 数据查询_第1张图片

(1)查询所有会员的所有信息。
(2)查询名称中包含“数据库”的图书的图书名称、作者、出版社和出版日期。
(3)查询订单编号为1001的订单中的图书的名称及数量
(4)查询订购了“数据结构”这本书的订单编号及用户名。
(5)查询订购图书总数量大于50的订单编号及其订购总数量。
(6)查询每本图书的编号及其订购数量总和,并按订购数量总和从高到低排序。
(7)查询订购图书数量前3的用户名及其订购数量。
(8)查询提供销售(图书表中有)但没有销售过(没有在订单明细表中出现)的图书名称和出版社。
(9)查询订购图书数量最多的用户名及其订购数量。
(10)创建视图V_ddmx,在视图中反映出用户张三购买的图书的编号、图书类型、图书名称、出版社、数量及订购日期等信息;从视图V_ddmx上查询张三订购的图书类型为“计算机类”的图书的名称及数量。
(11)向图书表中插入一个图书元组,各字段值为:图书编号:100001,类型名称:计算机类,图书名称:算法导论,作者:test,价格:50,写出SQL语句。
(12)将用户名为“张三”的会员的消费额在原基础上加120,积分在原基础上加12。
(13)从图书表中删除作者是“王五”的所有元组,写出SQL语句。

解答:
(1)查询所有会员的所有信息。

SELECT * FROM 会员

(2)查询名称中包含“数据库”的图书的图书名称、作者、出版社和出版日期。

SELECT 图书名称,作者,出版社,出版日期
FROM 图书
WHERE 图书名称 LIKE%数据库%

(3)查询订单编号为1001的订单中的图书的名称及数量

SELECT 图书名称,数量
FROM 订单明细,图书
WHERE 订单明细.图书编号 = 图书.图书编号 AND
      订单编号 =1001
π图书名称,数量(σ订单编号=1001(订单明细∞图书))

(4)查询订购了“数据结构”这本书的订单编号及用户名。

SELECT a.订单编号,a.用户名  
FROM 订单 a,订单明细 b,图书 c
WHERE a.订单编号=b.订单编号 AND b.图书编号=c.图书编号 
AND c.图书名称=’数据结构’
π订单编号,用户名(σ图书名称=’数据结构’(订单∞订单明细∞图书)

(5)查询订购图书总数量大于50的订单编号及其订购总数量。

SELECT 订单编号,SUM(数量)  
FROM 订单明细
GROUP BY 订单编号
HAVING SUM(数量)>50 

【考】数据库原理与技术 数据查询_第2张图片
(6)查询每本图书的编号及其订购数量总和,并按订购数量总和从高到低排序。

SELECT 图书编号,SUM(数量)  
FROM 订单明细
GROUP BY 图书编号
ORDER BY SUM(数量) DESC

(7)查询订购图书数量前3的用户名及其订购数量。

SELECT top 3 用户名,SUM(数量)  
FROM 订单明细,订单
WHERE 订单明细.订单编号 = 订单.订单编号
GROUP BY 用户名
ORDER BY SUM(数量) DESC

(8)查询提供销售(图书表中有)但没有销售过(没有在订单明细表中出现)的图书名称和出版社。

SELECT 图书名称,出版社 FROM 图书
  WHERE NOT EXISTSSELECT * FROM 订单明细
     WHERE 图书.图书编号=订单明细.图书编号)
或:
SELECT 图书名称,出版社 FROM 图书
  WHERE 图书编号 NOT INSELECT DISTINCT 图书编号 FROM 订单明细)
  π图书名称,出版社((π图书编号(图书)-π图书编号(订单明细))∞ 图书)

(9)查询订购图书数量最多的用户名及其订购数量。

SELECT 用户名,SUM(数量) FROM 订单,订单明细
     WHERE 订单.订单编号 = 订单明细.订单编号
     GROUP BY 用户名
     HAVING SUM(数量) >= ALLSELECT SUM(数量) FROM 订单,订单明细 WHERE 订单.订单编号 = 订单明细.订单编号 GROUP BY 用户名)

【考】数据库原理与技术 数据查询_第3张图片
(10)创建视图V_ddmx,在视图中反映出用户张三购买的图书的编号、图书类型、图书名称、出版社、数量及订购日期等信息;从视图V_ddmx上查询张三订购的图书类型为“计算机类”的图书的名称及数量。

CREATE VIEW V_ddmx (图书编号,图书类型,图书名称,出版社,数量,订购日期)AS
      SELECT a.图书编号,a.类型名称,a.图书名称,a.出版社,b.数量,c.订购日期
      FROM 图书 a,订单明细 b,订单 c
      WHERE a.图书编号=b.图书编号 AND  b.订单编号=c.订单编号 AND c.用户名=‘张三’

SELECT 图书名称,数量 FROM V_ddmx WHERE 图书类型=’计算机类’

(11)向图书表中插入一个图书元组,各字段值为:图书编号:100001,类型名称:计算机类,图书名称:算法导论,作者:test,价格:50,写出SQL语句。

INSERT INTO 图书(图书编号,类型名称,图书名称,作者,价格)
     VALUES(‘100001’,‘计算机类’,‘算法导论’,‘test’,50

(12)将用户名为“张三”的会员的消费额在原基础上加120,积分在原基础上加12。

UPDATE 会员 SET 消费额=消费额+120,积分=积分+12
      WHERE 用户名=‘张三’

(13)从图书表中删除作者是“王五”的所有元组,写出SQL语句。

DELETE FROM 图书 
WHERE 作者=‘王五’

你可能感兴趣的:(数据库,database)