数据库我的租房网.docx
- 文档编号:30575244
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:14
- 大小:265.33KB
数据库我的租房网.docx
《数据库我的租房网.docx》由会员分享,可在线阅读,更多相关《数据库我的租房网.docx(14页珍藏版)》请在冰豆网上搜索。
数据库我的租房网
《数据库技术与开发》
项目名称:
我的租房网
姓名:
谭海兵
学号:
**********
专业:
软件工程
项目实训内容
1、实训一:
建立数据库结构
(1)创建数据库House
使用SSMS向导创建数据库House,如下图所示:
图1.创建数据库House
扩展内容:
要求用T-SQL语句建立house1数据库。
CREATEDATABASEHouseONPRIMARY
(NAME=N'House',FILENAME=N'd:
\sql\House.mdf',SIZE=5MB,MAXSIZE=UNLIMITED,
FILEGROWTH=1MB)
LOGON
(NAME=N'House_log',FILENAME=N'd:
\sql\House_log.ldf',SIZE=1MB,MAXSIZE=20MB,
FILEGROWTH=10%)
(2)建立5张数据表
USEHouse
CREATETABLEsys_user
(
UserIdINTIDENTITY(1,1)PRIMARYKEY,
UserNamevarchar(50)NOTNULL,
UserPwdVARCHAR(50),
CONSTRAINTck_userpwdCHECK(LEN(UserPwd)>=6)
)
USEHouse
CREATETABLEhos_district
(
DIdINTIDENTITY(1,1)PRIMARYKEY,
DNameVARCHAR(50)NOTnull
)
USEHouse
CREATETABLEhos_street
(
StreetIdINTIDENTITY(1,1)PRIMARYKEY,
SNameVARCHAR(50)NOTNULL,
SDIdINTCONSTRAINTfk_id_1FOREIGNKEY(SDId)REFERENCEShos_district(DId)
)
USEHouse
CREATETABLEhos_type
(
HTIdINTIDENTITY(1,1)PRIMARYKEY,
HTNameVARCHAR(50)NOTNULL,
)
USEHouse
CREATETABLEhos_house
(
HMIdINTIDENTITYPRIMARYKEY,
UserIdINTNOTNULL,
StreetIdINTNOTNULL,
HTIdINTNOTNULL,
PriceDECIMAL(8,2)CONSTRAINTck_priceCHECK(Price>=0)DEFAULT(0),
Topicvarchar(50)NOTNULL,
ContentsVARCHAR(50)NOTNULL,
HTimeDATETIMENOTNULLCONSTRAINTck_htimeCHECK(HTime<=GETDATE())DEFAULT(GETDATE()),
CopyVARCHAR(50)
)
(3)添加外键约束
USEHouse
ALTERTABLEhos_house
ADDCONSTRAINTFK_UserIdFOREIGNKEY(UserId)REFERENCESsys_user(UserId)
ALTERTABLEhos_house
ADDCONSTRAINTFK_StreetIdFOREIGNKEY(StreetId)REFERENCEShos_street(StreetId)
ALTERTABLEhos_house
ADDCONSTRAINTFK_HTIdFOREIGNKEY(HTId)REFERENCEShos_type(HTId)
2、实训二:
添加测试数据
(1)主表添加测试数据
USEHouse
INSERTINTOsys_user(UserName,UserPwd)VALUES('张三','000000'),('李四','000000')
INSERTINTOhos_district(DName)VALUES('海淀区'),('朝阳区')
INSERTINTOhos_street(SName,SDId)VALUES('万寿路',1),('中关村',1),('陶然亭',2),('大栅栏',2)INSERTINTOhos_type(HTName)VALUES('两室一厅'),('两室两厅')
(2)添加批量数据
创建3个临时表
USEHouse
CREATETABLE#Topic
(
idINTIDENTITY(1,1),
topicVARCHAR(50)
)
CREATETABLE#content
(
idINTIDENTITY(1,1),
contentVARCHAR(50)
)
CREATETABLE#copy
(
idINTIDENTITY(1,1),
copyVARCHAR(50)
)
INSERTINTO#Topic(topic)VALUES('中关村')
INSERTINTO#Topic(topic)VALUES('万泉新新家园')
INSERTINTO#Topic(topic)values('望园小区')
INSERTINTO#Topic(topic)VALUES('福盈家园')
INSERTINTO#Topic(topic)VALUES('百子湾号院')
INSERTINTO#Topic(topic)VALUES('中关村软件园')
INSERTINTO#content(content)VALUES('经典装修,拎包入住')
INSERTINTO#content(content)VALUES('超值公寓火爆出租')
INSERTINTO#content(content)VALUES('望京朝阳东北区')
INSERTINTO#content(content)VALUES('低价个人入住')
INSERTINTO#content(content)VALUES('昌平区回龙观')
INSERTINTO#content(content)VALUES('精装修,首出租')
INSERTINTO#copy(copy)VALUES('交通便利,配套完善')
INSERTINTO#copy(copy)VALUES('环境优雅,学区房')
INSERTINTO#copy(copy)VALUES('紧挨号地铁')
INSERTINTO#copy(copy)VALUES('购物方便')
INSERTINTO#copy(copy)VALUES('紧邻亚运村')
INSERTINTO#copy(copy)VALUES('山水一体')
DECLARE@useridINT
DECLARE@streetidINT
DECLARE@htidINT
DECLARE@priceDECIMAL
DECLARE@htimeDATETIME
DECLARE@topicVARCHAR(50)
DECLARE@contentsVARCHAR(50)
DECLARE@copyVARCHAR(50)
DECLARE@numINT
BEGINTRANSACTION
SET@num=0
WHILE@num<30
BEGIN
SET@userid=(SELECTTOP1UserIdFROMsys_userORDERBYNEWID())
SET@streetid=(SELECTTOP1streetidFROMhos_streetORDERBYNEWID())
SET@htid=(SELECTTOP1htidFROMhos_typeORDERBYNEWID())
--租金在-4000之间随机产生
SET@price=1000+CAST(3000*RAND()ASINT)
--发布时间@htime,要求小于当前系统时间,发布时间在当前系统时间一年内
SET@htime=CAST(DATEADD(DAY,-CAST(RAND()*DATEPART(DAYOFYEAR,GETDATE())ASINT),GETDATE())ASDATE)
SET@topic=(SELECTTOP1topicFROM#topicORDERBYNEWID())
PRINT@topic
SET@contents=(SELECTTOP1contentFROM#contentORDERBYNEWID())
SET@copy=(SELECTTOP1copyFROM#copyORDERBYNEWID())
INSERTINTOhos_house(UserId,StreetId,HTId,Price,Topic,Contents,HTime,Copy)
VALUES(@userid,@streetid,@htid,@price,@topic,@contents,@htime,@copy)
SET@num=@num+1
END
COMMITTRANSACTION
3、实训三:
综合查询
(1)分页显示查询出租房屋信息
查询输出第6-10条出租房屋信息:
Ø使用Top关键字实现查询分页显示,用临时表先取出前10条记录,然后再在临时表里取出第6-第10条记录。
SELECTTOP10*INTO#hos_house_top10FROMhos_house
SELECT*FROM#hos_house_top10WHEREHMIdNOTIN(SELECTTOP5HMIdFROM#hos_house_top10)
Ø使用RowNumber函数,要求所有的列标题使用中文,查询结果如下图所示:
SELECTTOP10ROW_NUMBER()OVER(ORDERBYHMId)ASrowid,*INTO#tempFROMhos_house
SELECTHMIdAS房源编号,UserIdAS用户编号,StreetIDAS街道编号,TopicAS标题,ContentsAS房源描述,PriceAS月租,HTimeAS发布时间,CopyAS备注FROM#tempWHERErowidBETWEEN6AND10
(2)查询指定客户发布的出租房屋信息
查询张三发布的所有出租房屋信息,并显示房屋分布的街道和区县,要求分别按下述2种方法实现图7的查询结果:
Ø使用内联接innerjoin查询和子查询实现。
SELECThd.DName'区县',hs.SName'街道',ht.HTName'房屋类型',hh.Topic'标题',
hh.Price'价格',hh.Contents'房源描述',hh.HTime'时间',hh.Copy'备注'
FROMhos_househh
INNERJOINhos_streethsONhh.StreetId=hs.StreetId
INNERJOINhos_districthdONhs.SDId=hd.DId
INNERJOINsys_usersuONsu.UserId=hh.UserId
INNERJOINhos_typehtONht.HTId=hh.HTId
WHEREsu.UserName='张三'
Ø使用where子句和内查询实现。
SELECThd.DName'区县',hs.SName'街道',ht.HTName'房屋类型',hh.Topic'标题',
hh.Price'价格',hh.Contents'房源描述',hh.HTime'时间',hh.Copy'备注'
FROMhos_househh,hos_streeths,hos_districthd,sys_usersu,hos_typeht
WHEREhh.StreetId=hs.StreetIdANDhs.SDId=hd.DIdANDsu.UserId=hh.UserIdANDht.HTId=hh.HTIdANDsu.UserName='张三'
(3)按区县制作房屋出租清单
SELECTht.HTName'户型',su.UserName'姓名',hd.DName'区县',hs.SName'街道'
FROMhos_househh
INNERJOINhos_streethsONhh.StreetId=hs.StreetId
INNERJOINhos_districthdONhs.SDId=hd.DId
INNERJOINsys_usersuONsu.UserId=hh.UserId
INNERJOINhos_typehtONht.HTId=hh.HTId
WHEREhd.DIdIN(SELECThd.DIdFROMhos_househh
INNERJOINhos_streethsONhh.StreetId=hs.StreetId
INNERJOINhos_districthdONhs.SDId=hd.DId
GROUPBYhd.DIdHAVINGCOUNT(*)>1)
ORDERBYhs.StreetId
4、实训四:
业务统计
(1)按季度统计本年度发布的房屋出租数量
CREATEVIEWView_QTDstAS
SELECTDATEPART(QUARTER,hh.HTime)'季度',hd.DName'区县',hs.SName'街道',ht.HTName'户型',COUNT(hh.HMId)'数量'FROMhos_househh
INNERJOINhos_streethsONhh.StreetId=hs.StreetId
INNERJOINhos_districthdONhs.SDId=hd.DId
INNERJOINsys_usersuONsu.UserId=hh.UserId
INNERJOINhos_typehtONht.HTId=hh.HTId
GROUPBYDATEPART(QUARTER,hh.HTime),hd.DName,hs.SName,ht.HTName
(2)统计出各个季度各个区县出租房屋的数量
SELECT季度,区县,SUM(数量)房屋数量FROMView_QTDst
GROUPBY季度,区县
(3)统计出各个季度各个区县出租房屋的数量总和及街道户型明细
SELECT季度,区县,街道,户型,SUM(数量)房屋数量FROMView_QTDst
GROUPBY季度,区县,街道,户型
UNION
SELECT季度,区县,'小计','',SUM(数量)房屋数量FROMView_QTDst
GROUPBY季度,区县
UNION
SELECT季度,'合计','','',SUM(数量)房屋数量FROMView_QTDst
GROUPBY季度
5、心得体会
写这个作业过程中.让我对临时表有了新的认识.临时表在导航窗口中看不到.只能在当天查询窗口中再次使用.关闭后,临时表便消失了.写随机插入函数时.对自动插入数据有了了解.写3-3按区县显示出租情况时.数据少时,按照正常显示.数据一多.排序就不对了.在数据的多少上费了不少时间,考虑错方向了.原来在后面加上orderby就会解决排序问题.但是数据少和数据多默认显示排列不同.还是不太清楚.写4-3时合计在下面.列子是在上面.弄了半天也没弄明白.后来问了别人.才发现合计前面加上空格.排序就到上面了.真是要注意细节啊.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 租房