SQL Server存储过程作业(一)

创建客房类型表RoomType

创建客房状态表RoomState

创建客房信息表Room

创建结账状态表ResideState

创建客人信息表GuestRecord

编写sql语句

USE master
GO
--创建数据库Hotel
IF EXISTS (SELECT name FROM sys.databases WHERE name = ‘Hotel‘)
    DROP DATABASE Hotel
GO

exec sp_configure ‘show advanced options‘,1
reconfigure
go
exec sp_configure ‘xp_cmdshell‘,1
reconfigure
go
use master
go
EXEC xp_cmdshell ‘mkdir E:\DB‘, NO_OUTPUT

CREATE DATABASE [Hotel] ON  PRIMARY
( NAME = ‘Hotel‘, FILENAME = ‘E:\DB\Hotel.mdf‘ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON
( NAME = ‘Hotel_log‘, FILENAME = ‘E:\DB\Hotel_log.ldf‘ , SIZE = 1024KB , MAXSIZE = 20MB , FILEGROWTH = 10%)
GO

--创建表
USE Hotel
GO
--创建结账状态表ResideState
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘ResideState‘)
    DROP TABLE ResideState
GO
CREATE TABLE ResideState(
    ResideId int IDENTITY(1,1) NOT NULL, --结账状态ID
    ResideName varchar(50) NULL          --结账状态名称
)

ALTER TABLE ResideState
  ADD CONSTRAINT PK_ResideState PRIMARY KEY (ResideId)
GO

--创建客房类型表RoomType
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘RoomType‘)
    DROP TABLE RoomType
GO
CREATE TABLE RoomType (
    TypeID int IDENTITY(1,1) NOT NULL,--客房类型id
    TypeName nvarchar(50) NULL,          --客房类型名称
    TypePrice decimal(18, 2) NULL     --客房类型价格
)
GO
ALTER TABLE RoomType
  ADD CONSTRAINT PK_RoomType PRIMARY KEY (TypeID)
GO
ALTER TABLE RoomType
  ADD CONSTRAINT CK_RoomPrice CHECK(TypePrice >= 0)
GO

--创建客房状态表RoomState
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘RoomState‘)
    DROP TABLE RoomState
GO
CREATE TABLE RoomState (
    RoomStateID int IDENTITY(1,1) NOT NULL,--房间状态id
    RoomStateName nvarchar(20) NULL        --房间状态名称
)
GO
ALTER TABLE RoomState
   ADD CONSTRAINT PK_RoomState PRIMARY KEY (RoomStateID)
GO

--创建客房信息表Room
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘Room‘)
    DROP TABLE Room
GO
CREATE TABLE Room (
    RoomID int NOT NULL,                 --房间id
    Description nvarchar(200) NOT NULL,  --房间描述
    BedNum int NULL,                     --床位数
    GuestNum int NULL,                   --房客数目
    RoomStateID int NOT NULL,            --房间状态id
    RoomTypeID int NOT NULL              --客房类型id
)
GO
ALTER TABLE Room
  ADD CONSTRAINT PK_RoomID PRIMARY KEY (RoomID)
GO
ALTER TABLE Room
  ADD CONSTRAINT DF_RoomStateID  DEFAULT (2) FOR RoomStateID,
  CONSTRAINT DF_BedNum  DEFAULT (2) FOR BedNum,
  CONSTRAINT DF_GuestNum DEFAULT (0) FOR GuestNum,
  CONSTRAINT CK_GuestNum CHECK(GuestNum >= 0),
  CONSTRAINT FK_RoomStateID FOREIGN KEY(RoomStateID) REFERENCES RoomState(RoomStateID),
  CONSTRAINT FK_RoomTypeID FOREIGN KEY(RoomTypeID) REFERENCES RoomType(TypeID)
GO

--创建客人信息表GuestRecord
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘GuestRecord‘)
    DROP TABLE GuestRecord
GO
CREATE TABLE GuestRecord (
    GuestID int IDENTITY(1,1) NOT NULL,--入住流水ID
    IdentityID varchar(50) NOT NULL,   --身份证号
    GuestName nvarchar(20) NOT NULL,   --客人姓名
    RoomID int NULL,                   --客房ID
    ResideID int NULL,                 --入住状态ID
    ResideDate datetime NULL,          --入住日期
    LeaveDate datetime NULL,           --结账日期
    Deposit decimal(18, 2) NULL,       --押金
    TotalMoney decimal(18, 2) NULL     --总金额
)
GO
ALTER TABLE GuestRecord
  ADD CONSTRAINT PK_GuestID PRIMARY KEY(GuestID),
  CONSTRAINT DF_ResideID DEFAULT (1) FOR ResideID,
  CONSTRAINT CK_LeaveDate CHECK (LeaveDate>=ResideDate),
  CONSTRAINT FK_RoomID FOREIGN KEY(RoomID) REFERENCES Room(RoomID),
  CONSTRAINT FK_ResideID FOREIGN KEY(ResideID) REFERENCES ResideState(ResideID)
GO

--插入数据
--数据插入结账状态表ResideState
INSERT INTO ResideState (ResideName) VALUES(‘未结帐‘)
INSERT INTO ResideState (ResideName) VALUES(‘结帐‘)
--数据插入客房类型表RoomType
INSERT INTO RoomType (TypeName, TypePrice) VALUES (‘标准间‘,180)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘单人间‘,128)
INSERT INTO RoomType (TypeName, TypePrice) VALUES (‘三人间‘,208)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘单人间‘,99)
INSERT INTO RoomType (TypeName, TypePrice) VALUES (‘总统套房‘,998)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘长包房‘,108)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘豪华标准间‘,268)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘单人套房‘,368)
INSERT INTO RoomType (TypeName, TypePrice)  VALUES (‘双人套房‘,568)

--数据插入客房状态表RoomState
INSERT INTO RoomState (RoomStateName)  VALUES (‘已入住‘)
INSERT INTO RoomState (RoomStateName)  VALUES (‘空闲‘)
INSERT INTO RoomState (RoomStateName)  VALUES (‘维修‘)

--数据插入客房信息表Room
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1008,‘这是双人标准间‘,2,2,1,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1018,‘这是双人标准间‘,2,0,2,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1028,‘这是双人标准间‘,2,1,1,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1038,‘这是双人标准间‘,2,0,3,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1048,‘这是单人间‘,1,1,1,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1058,‘这是单人间‘,1,1,1,1)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1068,‘这是单人套房‘,1,1,1,8)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1078,‘这是单人套房‘,1,0,2,8)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1088,‘这是豪华双人标准间‘,2,1,1,7)
INSERT INTO Room (RoomID,Description,BedNum,GuestNum,RoomStateID,RoomTypeID) VALUES (1098,‘这是豪华双人标准间‘,2,0,2,7)

--数据插入客人信息表GuestRecord
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney,ResideID)
VALUES (‘11010119910101001x‘,‘王笑‘,1008,‘2009-9-9 12:30:00‘,‘2009-9-10 11:30:02‘,1000,180,2)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘110101199110100114‘,‘张淼‘,1008,‘2009-9-9 12:30:00‘,‘2009-9-10 11:30:02‘,1000,180)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘230121197902030121‘,‘刘元元‘,1028,‘2009-9-20 22:23:20‘,null,3000,null)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘321007198606161231‘,‘丁一‘,1048,‘2009-9-29 02:30:40‘,null,1000,null)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘210119760210010083‘,‘赵玲‘,1058,‘2009-9-18 16:33:13‘,null,800,null)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘21201019910710001x‘,‘谭坛‘,1068,‘2009-10-3 6:36:09‘,null,1500,null)
INSERT INTO GuestRecord (IdentityID,GuestName,RoomID,ResideDate,LeaveDate,Deposit,TotalMoney)
VALUES (‘110102197801070121‘,‘周舟‘,1088,‘2009-10-4 7:50:40‘,null,5000,null)
时间: 2024-11-25 11:40:25

SQL Server存储过程作业(一)的相关文章

SQL Server存储过程作业(二)

阶段1:练习——统计某类型客房的入住客人人数 需求说明 使用存储过程统计在指定类型的客房入住客人的总人数 提示: 存储过程的输入参数是指定的客房类型名称 USE Hotel GO --阶段1:查询入住在指定客房类型的客房的顾客数 IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_GetGuestNumByTypeName') DROP PROC usp_GetGuestNumByTypeName GO CREATE PROCEDURE usp_

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.

第七篇 SQL Server代理作业活动监视器

本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这系列的前几篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作业活动监视器.作业活动监视器是系统管理工具来运行工作,查看作业历史记录,并启用/禁用作业.本文同样会回顾一些作业活动监视器调用的存储过程,你可以直接调用过程做你自己的自定义任务监控.SQL Server代理作业活动监视器SQL Server代理作业活动监视器的主要机制是监视作业运行,以及查看代理已运行

SQL Server存储过程的初步认知

什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.实际上存储过程就是能完成一定操作的一组SQL语句. 为什么要用存储过程? 1.  存储过程只在创造时候编译,以后每次执行存储过程都不需要再重新的编译,而一般的SQL语句每执行一次就需要编译一次,所以使用存储过程可提高数据库执行速度. 2.  当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事物处理结合在一起. 3.  存储过程可以重复的使用,降低开发人员的工作量,提高工作效率. 4.  安全

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正常的SQL语句,使用了Union(All)查询: SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --备注信息 , ai

SQL Server 存储过程具体解释

SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理复杂的操作时,程序的可读性更强.网络的负担更小. 使用存储过程封装事务性能更佳. 能有效的放注入,安全性更好. 可维护性高.在一些业务规则发生变化时.有时仅仅需调整存储过程就可以.而不用修改和重编辑程序. 更好的代码重用. ◆ 缺点: 存储过程将给server带来额外的压力. 存储过程多多时维护比較

Sql server存储过程中常见游标循环用法

原文:Sql server存储过程中常见游标循环用法 用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while

SQL Server 存储过程(转载)

SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储

简单的如何创建sql server存储过程

学习sql server数据库,sql server存储过程的建立方法是一定要知道的,下面将教您如何建立sql server存储过程,希望对您有所帮助. 在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例. 展开“数据库”.sql server存储过程所属的数据库以及“可编程性”. 右键单击“存储过程”,再单击“新建存储过程”. 在“查询”菜单上,单击“指定模板参数的值”. 在“指定模板参数的值”对话框中,“值”列包含参数的建议值.接受这些值或将其替换为新值,再单击“确定”. 在查询编辑