SQL---实验四

1. 在BookDb数据库中,使用下列SQL语句将输出什么?

(1) SELECT  Count(*)  FROM  读者信息

      输出的是“读者信息”表中的记录的总数:

 

(2) SELECT  Substring(姓名,1,2)  FROM 读者信息

      输出的是“读者信息”表中“姓名”列的第一个字符开始进行字符串截取,截取的字符长度为2

 

   (3) SELECT   Upper('database')

 

   输出的结果是将字段'database'转化成大写’DATABASE’:

 

 

   (4) SELECT  Replicate('database',3)

 

   输出的结果是将字段''里面的字符(包括空格)重复输出三次:

 

   (5) SELECT 2,3,Power(2,3)

   

输出的是2,3,8(power是幂运算,Power(2,3)表示2的3次幂):

 

   (6) SELECT Year(Getdate()),Month(Getdate()),Day(Getdate())

   

输出的是年月日:

 

2. 在BookDb数据库中使用SELECT语句进行基本查询。

   (1) 在读者信息表中,查询每个读者的借书证号、姓名、办卡时间信息。

  语句:

    SELECT 借阅证号 ,姓名,办卡时间 FROM 读者信息

 

   (2) 在图书信息表中,查询所有图书的图书编号、书名、作者和出版单位。

  语句:

      SELECT 图书编号,书名,作者,出版单位 FROM 图书信息

 

   (3) 在借阅信息表中,查询所有借阅信息。

  语句:

    SELECT * FROM 借阅信息

   (4) 在读者信息表中查询各单位的读者人数。

语句:

      select 单位,COUNT(*)人数 from 读者信息,借阅信息

where 读者信息.借阅证号=借阅信息.借阅证号

group by 读者信息.单位

 

   (5) 将借阅信息表的借阅记录按借阅日期降序进行排序。

语句:

      select * from 借阅信息  order by 借阅日期 desc

   (6) 对借阅信息表使用GROUP BY查询子句列出各个读者借书的本数。

语句:

      select 借阅证号,COUNT(*)本数 from 借阅信息 

group by 借阅信息.借阅证号

3. 使用SELECT语句进行条件查询。

   (1) 找出所有信息学院的读者的姓名和联系电话。

select 姓名,联系电话 from 读者信息 

where 单位='信息学院'

   (2) 在借阅信息表中查询借阅了图书编号为“10160003”的图书的借阅证号和归还日期。

select 借阅证号,归还日期  from 借阅信息 

where 图书编号='10160003'

 

   (3) 查询所有书名中有“数据库”的图书的编号、书名、作者和出版单位。

select 图书编号,书名,作者,出版单位 from 图书信息 where 书名 LIKE'%数据库%'

 

   (4) 查询办卡时间在“2010-1-1” 之前的读者的所有信息。

select * from 读者信息 where 办卡时间<'2010-1-1'

 

   (5) 对借阅信息表,查询借阅状态为“1” 的借阅证号和图书编号。

select 借阅证号,图书编号 from 借阅信息 where 借阅状态='1'

 

   (6) 对图书信息表,查询分类号为“15” 的图书信息。

 

select * from 图书信息 where 分类号='15'

 

   (7) 查询“人民邮电出版社”出版的所有图书信息。

select * from 图书信息 where 出版单位 ='人民邮电出版社'

  

   (8) 找出借书超过6本的读者,输出借书证号及所借图书册数。

select 借阅证号,count(*) AS 借书册数 from 借阅信息 group by 借阅证号 having count(*)>6;

  

(9)查询过期未还图书,输出借阅者证号、书号及还书日期

 

4.嵌套查询。

   (1) 在读者信息表中查找与“刘卫华”单位相同的所有读者的姓名、联系电话。

  

select 姓名,联系电话 from 读者信息 where 单位=

(select 单位 from 读者信息 where 姓名='刘卫华')

 

 

   (2) 使用IN子查询查找所借图书编号为“10160001” 和“10160002” 的读者的借阅证号、姓名和单位。

   select 读者信息.借阅证号,姓名,单位 from 读者信息

where 读者信息.借阅证号 in

(select 借阅信息.借阅证号 from 借阅信息 where 图书编号

 in  ('10160001','10160002'))

 

   (3) 查询现有图书中价格最高的图书,输出书名及作者。

    select 书名,作者 from 图书信息 where 单价=

(select Max(单价) from 图书信息)

 

5. 联结查询。

(1) 查询在当天借阅了图书的读者的借阅证号、姓名。

select 读者信息.借阅证号,姓名 from 读者信息,借阅信息

where 读者信息.借阅证号=借阅信息.借阅证号

AND 借阅日期=GETDATE()

 

 

(2) 查询借阅了“数据库技术与应用”图书的读者的借阅证号、姓名和借阅日期。

  select 读者信息.借阅证号,姓名,借阅日期 from 读者信息

INNER JOIN 借阅信息 on 读者信息.借阅证号=借阅信息.借阅证号

INNER JOIN 图书信息 on 图书信息.图书编号=借阅信息.图书编号

where 图书信息.书名='数据库技术与应用'

 

(3) 查询所有研究生的借书情况,要求列出借阅证号、姓名、图书书名。

select 读者信息.借阅证号,姓名,书名 from 读者信息 JOIN 借阅信息 on

读者信息.借阅证号=借阅信息.借阅证号

JOIN 图书信息 on 借阅信息.图书编号=图书信息.图书编号

where 读者信息.借阅证件类型='研究生'

 

(4) 查询所有读者的借阅信息,要求列出借阅证号、姓名、借阅书的本数,没有借阅图书的读者的借阅本数为空。

       提示:使用左外联结。

select  读者信息.借阅证号 ,读者信息.姓名, count(借阅信息.图书编号) AS 借书数目 from 读者信息

left outer JOIN  借阅信息 on 读者信息.借阅证号=借阅信息.借阅证号

group by 读者信息.借阅证号,读者信息.姓名

 

 

 

 

(5) 查询所有图书的借阅情况,要求列出借书证号、书名、借阅日期,没有被借阅的图书的借阅证号值为空。

      提示:使用右外联结。

   select  借阅信息.借阅证号 ,图书信息.书名 ,借阅日期 from 借阅信息

right outer JOIN  图书信息 on 图书信息.图书编号 =借阅信息.图书编号

group by 借阅信息.借阅证号,图书信息.书名,借阅日期

(6) 查询当前借了“计算方法”但没有借“计算方法习题集”的读者,输出其借书证号,并按证号降序排序输出。

select a.借阅证号 from 借阅信息 a,图书信息 b

where a.图书编号=b.图书编号

 AND 书名='计算方法'

 AND  NOT EXISTS(select * from 借阅信息 c,图书信息 d

 where c.图书编号=d.图书编号

 AND 书名='计算方法习题集'

 AND c.借阅证号=a.借阅证号)   order by  a.借阅证号 DESC

不经一番彻骨寒,哪有梅花扑鼻香?
原文地址:https://www.cnblogs.com/zongyao/p/13831204.html