做自己的ORMapping Framework ---- 第四讲 关于SQL脚本的书写

说到这里,对于初学者可能会有点难度,你要对SQL脚本有一定的了解。现在我会介绍一些关于SQL脚本的基本格式的书写,当然也是节后后面需要所讲,我就尽量将简单点,高手可以绕过,给小伙伴让条路啊0.0

我现在就以学校来建一个数据库,名称就叫School

 

1关于怎样建数据库,现在建一个School数据库

    create database School;就这么简单

  

2关于怎样建表 先建一个Student 和一个Class表

CREATE TABLE [dbo].[Student](
[SId] [varchar(50)] NOT NULL, 学生ID/主键
[Name] [NVARCHAR[20]] NOT NULL, 学生姓名
[ClassId] [uniqueidentifier] NULL, 年级ID
CONSTRAINT [PK_dbo.Student] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

 

CREATE TABLE [dbo].[Class](
[ClassId] [uniqueidentifier] NOT NULL, 年级ID/主键
[Name] [bit] NOT NULL, 年级名称
CONSTRAINT [PK_dbo.Class PRIMARY KEY CLUSTERED
(
[ClassId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

 

3关于怎样建外键关系 

    

ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [FK_dbo.Student_dbo.Class_CLassID] 先检查下外键在不在

ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [FK_dbo.IndexedFeature_dbo.Class_CLassID] FOREIGN KEY([SId])
REFERENCES [dbo].[Class] ([ClassId])

4关于怎样写存储过程

这就一一个过程语言,后面再讲解的列子中会用到很多,这里就简单写一个样子,现在给一个id参数,从学生的表中选出名称    

CREATE Procedure GetStudentName
(

       @SID varchar(50), --默认输入参数           这边定义参数
     @name Nvarchar(20) out --输出参数

)
AS
BEGIN

      select @name = name  from student where SID= @SID ;这边是主体执行逻辑

END
END

    

5关于怎样写触发器

    这个看起来和存储过程长的有点像, 下面是在删除年级信息之前去调用触发器把相关的学生信息给删除了。

    

CREATE TRIGGER dbo.OnDeleteClass ON dbo.[Class]     定义触发器
BEFORE DELETE
AS
BEGIN
  delete from [Student] where [student].ClassId in (select ClassId from deleted)   做删除动作
END
GO

先简单了解这么多,后面我会慢慢给大家讲解怎么去使用这些,怎么在系统里调用这些脚本,怎么管理和维护这些看起来很乱的脚本

原文地址:https://www.cnblogs.com/hwy425/p/4978791.html