01.使用T-SQL语句建立一个宾馆数据库,具体文件属性如下表所示。
参数 | 参数值 | 参数 | 参数值 |
数据库名 | Bg | ||
逻辑数据文件名 | Bg_dat | 日志逻辑文件名 | Bg_log |
操作系统数据文件名 | D:\\Bg\\bg_dat.mdf | 操作系统日志文件名 | D:\\Bg\\bg_log.ldf |
数据文件的初始大小 | 5 MB | 日志文件初始大小 | 2 MB |
数据文件的最大大小 | 200 MB | 日志文件增长幅度 | 10 % |
数据文件增长幅度 | 2 MB |
(1)roomtype(客房标准信息表)
列名 | 中文说明 | 数据类型 | 精度 | 允许空值 | 说明 |
typeid | 客房类型编号 | char | 2 | 否 | |
typename | 客房类型 | char | 20 | 否 | |
area | 面积 | numeric | 6,2 | ||
bednum | 床位数量 | tinyint | 否 | 8>Badnum>0 | |
price | 单价 | money | 否 | 默认“100” | |
htelephone | 是否有电话 | char | 2 | 默认“有” |
列名 | 中文说明 | 数据类型 | 精度 | 允许空值 | 说明 |
bookno | 订房编号 | char | 20 | 否 | |
guest_id | 身份证号 | char | 18 | 否 | |
roomno | 客房编号 | char | 4 | 否 | 外键参照rooms表roomno |
staydate | 入住日期 | datetime | 默认为系统日期 | ||
returndate | 结算日期 | datetime | |||
discount | 折扣 | money | |||
ammount | 金额 | money |
列名 | 中文说明 | 数据类型 | 精度 | 允许空值 | 说明 |
roomno | 客房编号 | char | 4 | 否 | 主键 |
typeid | 客房类型 | char | 2 | ||
roomposition | 客房位置 | char | 40 | ||
roomprice | 单价 | money | |||
putup | 是否被预定 | char | 2 | 否 | 默认“否” |
roommemo | 备注 | varchar | 255 |
03.用T---SQL语句插入下列客房信息。
客房编号 | 客房类型 | 客房位置 | 单价 | 是否被预定 | 备注 |
1003 | 3 | 10层朝南 | 100 | 否 | |
04.查询所有客户的身份证号、客房号、入住日期、结算日期等信息。
select guest_id,roomno,staydate,returndate from nookrm
05.查询被预定的“标准房”(客房类型)的客房的客房编号,按客房号的升序排序。
select roomno from rooms where typeid='3' and putup='是' order by roomno
06.查询统计各个客房(编号)的营业总金额。
select SUM(ammount) from nookrm group by roomno
07.查询身份证号为“310222************”的客户最近入住酒店的日期以及客房号,住了几天等信息。(说明:函数datediff(day,参数1,参数2),此函数功能:计算两个日期类型数据间相差的天数,即参数2-参数1的天数。)
select staydate,roomno,datediff(day,returndate,staydate) from nookrm where guest_id='3102221967110400'
08.创建存储过程proc_kroom,实现功能:根据客房类型号,查询是否有该类型的未被预定的房间,如果有,则显示提示信息“此类型的房间有未被预定的客房”;如果没有,则显示提示信息 “此类型的房间已预定满!”。
create proc proc_kroom @typeid char(2)
as
declare @bednumX tinyint
begin
select @bednumX=bednum from roomtype where typeid=@typeid
if @bednumX>0
select '此类型的房间有未被预定的客房'
else
select '类型的房间已预定满!'
end
09.创建触发器,实现如果删除客房标准信息表中某种客房类型记录,相应的客房信息表中所有此类型的客房记录都删除。
这个可能有错误的
Create TRIGGER roomtype_delete ON roomtype
For DELETE
AS
BEGIN
DELETE FROM roomtype
LEFT JOIN rooms
ON roomtype.typeidtypeid = roomtype.typeid
where roomtype.typeid=(select typeid from deleted)
END
delete roomtype where typeid='1'