注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

零售创新,创新那些事儿,SPSS,VBA

零售创新

 
 
 

日志

 
 
关于我

新浪微博,零售创新 研究经理,数据分析师 希望和市场研究和零售业的同事共同进步! 本博客发表的都是免费或试用的资料,如果有版权问题请发邮件wangli12a@163.com联系删除。 spss excel vba blog

网易考拉推荐

【转载】SQL语句示例  

2012-06-29 10:49:11|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自zzz《SQL语句示例》
 

下面的几张表组成了关系数据库管理系统中某个数据库的一部分。

Hotel(hotelNo,hotelName,city)//旅馆的详细信息

Room(roomNo,hotelNo,type,price) //每个旅馆的房间的详细信息

Booking(hotelNo,guestNo,dateFrom,dateTo,RoomNO) //订房的详细信息

Guest(guestNo,GuestName,guestAddress) //旅客的详细信息

根据下列题目要求,用SQL语句完成下列各种操作。

1.创建表并填充表

(1)创建上述各表(需要时,创建主键、外键及相应约束)。

CREAT TABLE Hotel(hotelNo  CHAR(8)  NOT   NULL,

                  HotelName  VARCHAR(30)  NOT  NULL,

                  City  VARCHAR(30)  NOT  NULL,

                  PRIMARY  KEY(hotelNO))

CREATE TABLE ROOM(roomNO CHAR(6)  NOT  NULL ,

                     HotelNO CHAR(8)  NOT  NULL

                     Type CHAR(8)  NOT  NULL,

                     Price  DECIMAl(6,2)

                     PRIMARY  KEY(roomNO,hotelNO)

                     FOREIGN  KEY(hotelNO)  REFERENCES  HOTEL

                     ON  UPDATE  CASCADE

                     ON  DELETE  NO  ACTION )

CREAT TABLE Booking(hotelNO  CHAR(8)  NOT  NULL ,

                     GuestNO  CHAR(8)  NULL,

                     DateFrom  DATE  NOT  NULL,

                     DateTo   DATE   NOT  NULL,

                     RoomNO  CHAR(6) NOT  NULL,

                     PRIMARY  KEY(dateFrom,hotelNO,guestNO)

                     FOREIGN  KEY(hotelNO)  REFERENCES  Hotel,

                     ON  UPDATE CASCADE

                     ON  DELETE  NO  ACTION

                     FOREIGN  KEY(guestNO)  REFERENCES  Guest

                     ON  UPDATE  CASCADE

                     ON  DELETE  NO  ACTION )

 CREAT TABLE Guest(guestNO  CHAR(8)  NOT  NULL,

                     guestName  VARCHAR(30)  NOT  NULL,

                     guestAddress  VARCHAR(60)NOT  NULL,

                     PRIMARY  KEY (guestNO))

(2)向这些表中添加一些记录。

 INSERT  INTO  Hotel  VALUES(                       )

INSERT  INTO  Room  VALUES(                       )

INSERT  INTO  Guest  VALUES(                       )

INSERT  INTO  Booking  VALUES(                     )

 

(3)更新表,使所有房间的价格上涨5%。

UPDATE  Room  SET  Price=Price*1.05

2.简单查询操作

(1)列出所有旅馆的详细信息。

SELECT * FROM  Hotel (或 SELECT  hotelNo,hotelName,city  FROM  Hotel)

(2)列出位于华盛顿的所有旅馆的详细信息。

SELECT * FROM Hotel  WHERE city=’华盛顿’

(3)列出住在华盛顿的所有顾客的姓名和地址,按顾客姓名的字母顺序排列。

SELECT guestName,guestAddress  FROM  Guest

WHERE  guestAddress=’华盛顿’  ORDER  BY  guestName

(4)列出每晚价格低于40.00元的所有双人房间和家庭套间,并按价格升序排列。

SELECT  roomNO,type,price  FROM  Room   

WHERE (TYPE=’双人’  Or  type=’家庭’ )  And  price<40.00  ORDER  BY  Price

(5)列出没有指定截至日期dateTo的所有订单。

SELECT hotelNO,guestNO,dateFrom,roomNo  FROM Booking  WHERE  dateTo  is Null

3.聚合函数

(1)统计总共有多少个旅馆?

SELECT count(hotelNo)  AS ‘旅馆个数’  FROM  Hotel.

(2)所有房间的平均价格是多少?

SELECT  AVG(Price)  AS  ’房间平均价格’  FROM  Room

(3)所有双人房间每晚的费用总和是多少?

SELECT  ‘双人房每晚的费用总和为',SUM(Price)  FROM  Room  WHERE  type=’双人’

(4)有多少不同的顾客在八月份预订了房间?

SELECT count(DISTINCT  guestNO) AS  ’八月份预定房间的顾客’

       FROM  Booking  WHERE  MONTH(dateFrom)=8

4.子查询和连接操作

(1)列出Hilton Hotel的所有房间的价格和类型。

SELECT Price,type  FROM  Room  WHERE

 hotelNo=(select  hotelNo  FROM  Hotel  WHERE  hotelName=’Hilton’)

(2)列出现在住在Hilton Hotel的所有顾客。

SELECT  guestName  FROM  Guest  g ,  Booking  b , Hotel  h

  WHERE  g.guestNo=b.guestNo  And  b.hotelNo=h.hotelNo  And  h.hotelName=’Hilton’

(3)列出Hilton Hotel所有房间的详细信息,包括在该房间入住的顾客的名字(如果该房间已经有人住的话)。

SELECT h.hotelNo , roomNO , type , price , b.guestNo , g.guestName  b.dateFrom 

    FROM  Hotel  h  ,  Room  r ,  Booking  b ,  guest  g

WHERE  h.hotelNO=g.guestNo   and  r.roomNo=b.roomNo

And b.guestNo=g.guestNo  and  h.hotelName=’Hilon’

And (b.datefrom<=date()  and   b.dateto>=date())

(4)今天Hilton Hotel订房的总收入是多少?

SELECT sum(price)  AS  ‘总收入’  FROM  Hotel h , Room  r , Booking  b

WHERE  h.hotelNO=r.hotelNO  and  r.roomNo=b.roomNo

  And h.hotelName=’Hilton’  and  (b.dateFrom<=date() and b.date to>=date())

 

(5)列出Hilton Hotel中今天没有住客的房间。

SELECT  h.HotelNo  ,  r.RoomNO  From  Hotel  h  ,  Room  r

WHERE  r.RoomNO  NOT  IN

( SELECT  r.RoomNo  FROM  Hotel h , Room  r , Booking  b , Guest g

WHERE  h.HotelNO=t.HotelNO  and  r.roomNo=B.roomNO

 And  h.hotelName=’Hilton’  And  (b.datefrom<=date() and b.dateto>=date()) )

(6)Hilton Hotel中由于这些没有入住的房间,会造成多大损失?

SELECT sum(price)  FROM  hotel  h ,  Room  r , Booking  b

WHERE  r.RoomNO  NOT  IN

 ( SELECT  r.RoomNo  FROM  Hotel h , Room  r , Booking  b , Guest g

WHERE  h.HotelNO=t.HotelNO  and  r.roomNo=B.roomNO

 And  h.hotelName=’Hilton’  And  (b.datefrom<=date() and b.dateto>=date()) )

5.分组

(1)列出任一旅馆的房间数量。

SELECT  hotelmane ,'旅馆含有',count(r.roomNo) , '个房间'  FROM  Hotel  h , Room  r

WHERE  h.hotelNO=r.hotelNo  GROUP  BY  h.hotelNo

(2)列出在华盛顿的任一旅馆的房间数量。

SELECT hotelName ,’旅馆含有’, count(r.roomNo) , ’个房间’  FROM  Hotel  h ,  Room  r

  WHERE  h.hotelNo=r.hotelNO  and  h.city=’华盛顿’  GROUP BY  h.hotelName

(3)八月份,每个旅馆的平均订房数为多少?

SELECT  ’八月份’ , h.hotelName , ’旅馆的平均订房数为:’ , Sum(count(b.roomNo))/31

From  hotel  h , Booking  b ,  guest  g

Where  h.hotelNO=b.hotelNo  and  b.guestNo=g.guestNo and month(datefrom)=8

 Group  by  h.hotelNo

(4)华盛顿每个旅馆最常被定的房间的类型是什么?

SELECT  h.hotelName , ’最常被定的房间类型是',TYPE

From  hotel  h , room  r , Booking  b , Guest  g

Where  h.hotelNO=r.hotelNo  and  r.hotelNo=b.hotelNo  And  b.guestNo=g.guestNo

Group  by  b.hotelName  Having count(r.roomno)=max(count(r.roomNo))

(5)今天每家旅馆由于没有入住的房间造成的损失各有多少?

SELECT  h.hotelName, ’旅馆由于没有入住的房间造成的损失为:’ ,  Sum(price)

From  Hotel  h , Booking  b , Room  r

Where  h.hotelNo=r.hotelNo  and  r.hotelNo=b.hotelNo 

And  (not(b.datefrom<=date()   and   b.dateto>=date()))  Group  by  h.hotelName

  评论这张
 
阅读(745)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017