SQL server 数据库创建与存储过程创建

本文详细介绍了在SQL Server中创建数据库、数据表的方法,以及如何通过存储过程进行数据查询、更新和插入操作。提供了丰富的SQL语句示例,包括调试存储过程的步骤。

1.创建数据库与数据表

创建数据库

– 创建数据库
IF DB_ID(‘数据库名称’) IS NULL
CREATE DATABASE 数据库名称
GO

– 创建表
USE LGDB_CLZB6
GO

– 1 创建表1
IF NOT EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘你的表名称1’) AND type IN (N’U’))
CREATE TABLE Board
( --字段
ID INT IDENTITY(1, 1) PRIMARY KEY,
RoomID INT NOT NULL,
SchoolID VARCHAR(50) NOT NULL,
ClassID VARCHAR(50),
)
GO

– 2 创建表2
IF NOT EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘你的表名称2’) AND type IN (N’U’))
CREATE TABLE Board
( --字段
ID INT IDENTITY(1, 1) PRIMARY KEY,
RoomID INT NOT NULL,
SchoolID VARCHAR(50) NOT NULL,
ClassID VARCHAR(50),
)
GO

2.对一个表的存储过程创建

1.如何调试

去sql server management studio 中在数据库的可编程性的存储过程中创建一个存储过程调试文件

2.使用CREATE PROCEDURE创建存储过程

CREATE PROCEDURE 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
模板:

if (exists (select * from sys.objects where name = 'pro_name'))
    drop proc pro_name
go
create proc pro_name
    @param_name param_type [=default_value]
as
begin    
    sql语句
end
3.存储过程例子

查询一条数据:

declare @p_text varchar(max)
IF EXISTS(SELECT * FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID('ecb_proc_TABLE_NAME__get_getAll') AND type IN (N'P'))
DROP PROCEDURE ecb_proc_TABLE_NAME__get_getAll
GO
CREATE PROCEDURE ecb_proc_TABLE_NAME__get_getAll
AS
SELECT  ID, DeviceType,DeviceName
FROM dbo.TABLE_NAME
GO

这里的TABLE_NAME是你要查询的数据表名称,__get表示获取数据
调用时代码如下:

 protected SqlDB db;
  public List<Device> GetAll()
        {
            DataTable dt = db.FromProcedure("ecb_proc_TABLE_NAME__get_getAll").Query();
            if (dt.Rows.Count < 0)
                return null;
            else
                return Get(dt);
        }
        
  protected override Device Get(DataRow row)
        {
            return new Device
            {
                ID = row.Value<int>(0),
                DeviceType = row.Value<int>(1),
                DeviceName = row.Value<String>(2),        
            };
        }
  protected List<T> Get(DataTable dt)
        {
            List<T> list = new List<T>();
            foreach (DataRow row in dt.Rows)
                list.Add(Get(row));
            return list;
        }

更新一条数据:

IF EXISTS(SELECT * FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID('ecb_proc_Device_Setting__update_device') AND type IN (N'P'))
DROP PROCEDURE ecb_proc_Device_Setting__update_device
GO
CREATE PROCEDURE ecb_proc_Device_Setting__update_device
(
    @ID int,
    @LessonSignInEnable BIT,
    @DeviceOperate int,
    @OperateSecCode VARCHAR(30),
    @Extra int
)
AS
UPDATE dbo.Device_Setting
SET LessonSignInEnable=@LessonSignInEnable,DeviceOperate=@DeviceOperate,OperateSecCode=@OperateSecCode,Extra=@Extra
WHERE ID=@ID
GO

插入一条数据:

IF EXISTS(SELECT * FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID('ecb_proc_face_use__add_courseItem') AND type IN (N'P'))
DROP PROCEDURE ecb_proc_face_use__add_courseItem
GO
CREATE PROCEDURE ecb_proc_face_use__add_courseItem
( 
	@StartTime TIME(0),
	@EndTime TIME(0),
	@FaceTime TIME(0)
)
AS
INSERT INTO face_use (StartTime, EndTime,FaceTime)
VALUES
( @StartTime, @EndTime,@FaceTime)
END
GO

没有就插入一条数据,否则就更新:

-- add courseItem
IF EXISTS(SELECT * FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID('ecb_proc_face_use__add_courseItem') AND type IN (N'P'))
DROP PROCEDURE ecb_proc_face_use__add_courseItem
GO
CREATE PROCEDURE ecb_proc_face_use__add_courseItem
(
    @CourseID NVARCHAR(255),
	@ClassroomID NVARCHAR(255),
	@StartTime TIME(0),
	@EndTime TIME(0),
	@FaceTime TIME(0)
)
AS
IF EXISTS(SELECT * FROM face_use WHERE CourseID = @CourseID And ClassroomID=@ClassroomID)
BEGIN
UPDATE face_use SET StartTime=@StartTime, EndTime=@EndTime ,FaceTime=@FaceTime WHERE Id = @id
END
ELSE
BEGIN
INSERT INTO face_use (CourseID, ClassroomID, StartTime, EndTime,FaceTime)
VALUES
(@CourseID,@ClassroomID, @StartTime, @EndTime,@FaceTime)
END
GO

查询数据:


-- [announce room] UPDATE by course id
IF EXISTS(SELECT * FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID('ecb_proc_Face_Use__get_by_c') AND type IN (N'P'))
DROP PROCEDURE ecb_proc_Face_Use__update_by_c
GO
CREATE PROCEDURE ecb_proc_Face_Use__update_by_c
(
    @AddDay INT
)
AS
SELECT AddDay,FaceTime FROM dbo.Face_Use
WHERE AddDay = @AddDay
GO

调试存储过程:
1.找到你要调试的存储过程
在这里插入图片描述
右击选择执行存储过程,出来下面,输入参数点击确定即可:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值