一.CREATE语句(创建)

金沙国际官网 1

约束

  1、建立数据库的SQL语句:
use master
go
use master
go
if exists(select * from sys.databases where [name]=’edu’)
–判断该数据是否存在
   print ‘该数据库已经存在’
else

打开SQL Server
2005的管理工具,选中需要创建存储过程的数据库,找到“可编程性”,展开后可以看到“存储过程”。右键点击它,选择“新建存储过程”,右侧的编辑窗口打开了,里面装着微软自动生成的SQL
Server创建存储过程的语句。

1.创建DataBase

金沙国际官网 2

金沙国际官网 3

非空约束 –NN,ont null constraint

create database edu   –创建数据库名为:edu
on
primary
(name=’edu_data’,
filename=’F:\edu\data\edudataa.mdf’,
size=20,
maxsize=40,
filegrowth=10%
),                 –创建主文件组,只有一个主数据文件edudataa.mdf
filegroup FG1
(name =’edu_datab’,
filename=’F:\edu\data\edudatab.ndf’,
size=20,
maxsize=40,
filegrowth=10%
)                  –创建一文件组FG1,包含有一个次数据文件edudatab.ndf
log on
(name=’edulog’,
filename=’F:\edu\data\edudatalog.ldf’,
size=20,
maxsize=40,
filegrowth=10%
)                  –创建日志文件
金沙国际官网 ,  2、修改数据库:
  a、添加一个文件组,该文件组包含一个次数据文件
use master
go
alter database edu
add filegroup FG2
go
alter database edu
add file
(name=’edudatac’,
filename=’F:\edu\data\edudatac.ndf’,
size=20,
maxsize=40,
filegrowth=10%
)
to filegroup FG2

将存储过程的名字,参数,操作语句写好后,点击语法分析,没有错误就直接“F5”运行就好了,存储过程创建完毕,以下是一个基本的存储过程的代码:

1.CONTAINMENT

  SQL Server 2012 新功能 , 默认值是OFF 。(太高级
书上也没有详细介绍)。

金沙国际官网 4

必须填写数据不能为空

1 CREATE PROCEDURE Get_Data    
2    (    
3        @Dealer_ID VARCHAR(50)   
4     )    
5     AS    
6 SELECT * FROM myData WHERE Dealer_ID = @Dealer_ID

2.ON

  ON用于两个地方,第一个是存储数据的文件的位置,第二个是存储日志的文件的位置。
ON 后面的 PRIMARY的概念:希望将所有的内容存放在一个文件里。

–指定表 Student
添加名为NN_Student_sClassId非空约束(指定列名sClassId),括号输入表达式

点击查看实际例子

3.NAME

  一个逻辑名称,即SQL
Server在内部使用该名称引用该文件。当需要修改数据库大小时,需要使用这个名称

alter table Student add constraint NN_Student_sClassId check(sClassId
is not null)

既然创建存储过程已经会了,那么修改还会难吗?显然不会。修改存储过程也是相当的容易。首先,刷新当前数据库的存储过程列表,这时就能看到你刚创建的存储过程的名字了,右键点击它,选择修改,右侧又打开了一个编辑窗口,装着的就是修改存储过程的代码(如下)

4.FILENAME

  实际的操作系统文件在磁盘的名字,如果不写默认放在安装SQL
Server的文件夹中,默认的数据库文件是.mdf后缀,日志是.ldf文件。

 

1 ALTER PROCEDURE [dbo].[Get_Data]    
2    (    
3        @Dealer_ID VARCHAR(50)   
4     )    
5     AS    
6 SELECT * FROM myData WHERE Dealer_ID = @Dealer_ID

5.SIZE

  数据库大小,如果没写,默认与用图形创建的大小相同。

主键约束 –PK,primary key
constraint

简单的修改下吧,代码如下

6.MAXSIZE  

  允许数据库的最大大小。

唯一且不为空

1  ALTER PROCEDURE [dbo].[Get_Data]    
2    (    
3        @Dealer_ID VARCHAR(50),
4        @Period VARCHAR(20)
5     )    
6     AS    
7     SELECT * FROM myData WHERE Dealer_ID = @Dealer_ID AND Period = @Period

7.FILEGROWTH

  提供一个值来说明文件每次增大多少字节或者多少百分比。

–指定表 Student 添加名为PK_Student_sId主键约束(指定列名sId)

F5 成功执行,修改存储过程完成。

开始写了一个存储过程,用来实现数据的插入操作,说白了就是添加数据。这个存储过程的代码如下:

8.LOG ON   

  LOG ON 选项允许指定哪些文件需要日志,以及这些日志位于什么位置。

alter table Student add constraint PK_Student_sId primary key(sId)

 1 CREATE PROCEDURE PROC_INSERT_DATA_ID
 2   @DealerID varchar(50)
 3 AS
 4 BEGIN
 5         DECLARE @COUNT  INT    
 6         
 7         SET @COUNT = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)
 8         IF (@COUNT>0)    
 9             BEGIN    
10                 DELETE FROM myDATA_Details WHERE DealerID = @DealerID    
11                 INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)    
12             END    
13         ELSE    
14             BEGIN    
15                 INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)    
16             END    
17     END
18 --实际例子:http://hovertree.com/hovertreescj/sql/p_hovertreescj_urls_add.htm

9.COLLATE

  该选项处理排序,字母大小,以及是否对重音敏感的问题。

 

 

金沙国际官网 5金沙国际官网 6

 

 

F5一下,创建成功,调用它插入数据,OK,没问题插入成功,达到了预期的目的
用于更新数据,代码如下:

2.创建表

金沙国际官网 7

 

唯一约束 –UQ,unique constraint

 1 CREATE PROCEDURE PROC_INSERT_DATA_DETAIL
 2         @DealerID varchar(50), 
 3         @FieldName varchar(2000),
 4         @FieldValue varchar(2000)
 5     AS
 6     BEGIN
 7         DECLARE @Count INT
 8         SET @Count = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)
 9 
10         IF (@COUNT>0)
11             BEGIN
12                 UPDATE myDATA_Details SET DealValue = @FieldValue WHERE DealerID = @DealerID
13             END
14         ELSE
15             BEGIN
16                 INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)
17              END
18     END

 IDENTITY

  设定一个列为标识列,开始计数的数字称为种子值,每行增加或减少的数量称为增量。

  标识列必须是数值类型。

 金沙国际官网 8

唯一,允许为空,但是同样的数据只能出现一次

或者:
修改后的代码

二.ALTER语句(修改)

   ALTER语句可以修改数据库和表大小,文件位置或其他特性。

  修改数据库的大小:

  金沙国际官网 9

  修改表(增加一列)

  金沙国际官网 10

–指定表 Student 添加名为UQ_Student_sName唯一约束(指定列名sName)

 1 ALTER PROCEDURE PROC_INSERT_DATA_DETAIL
 2         @DealerID varchar(50), 
 3         @FieldName varchar(2000),
 4         @FieldValue varchar(2000)
 5     AS
 6     BEGIN
 7         DECLARE @Count INT
 8         DECLARE @StrSQL VARCHAR(2000)
 9         SET @Count = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)
10 
11         IF (@COUNT>0)
12             BEGIN
13                 SET @StrSQL = 'UPDATE myDATA_Details SET '+ @FieldName + ' = ''' +@FieldValue + ''' WHERE DealerID = '+ @DealerID
14                 EXEC(@StrSQL)
15             END
16         ELSE
17             BEGIN
18                 INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)
19                 SET @StrSQL = 'UPDATE myDATA_Details SET '+ @FieldName + ' = ''' +@FieldValue + ''' WHERE DealerID = '+ @DealerID
20                 EXEC(@StrSQL)
21             END
22     END

三.DROP语句(删除)

金沙国际官网 11

金沙国际官网 12

 

alter table Student add constraint UQ_Student_sName unique(sName)

C#调用存储过程例子: 

四.使用管理界面来创建(推荐)

 

    

开发技术文章收集 

默认约束 –DF,default
constraint

设置默认值

–指定表 Student
添加名为DF_Student_sName默认约束(指定列名sBirthday),获取当前日期

alter table Student add constraint DF_Student_sName default(getdate())
for sBirthday

 

–指定表 Student
添加名为DF_Student_sName默认约束(指定列名sBirthday),指定日期  

alter table Student add constraint DF_Student_sName
default(‘1995-12-12’) for sBirthday  

–指定表 Student
添加名为DF_Student_sName默认约束(指定列名sSex),指定性别

alter table Student add constraint DF_Student_sSex default(‘男’) for
sSex     

 

检查约束 –CK,check constraint

设置范围以及格式限制

–指定表 Student 添加名为
CK_Student_sSex检查约束(指定列名sSex),限制为’男’或者’女’

alter table Student add constraint CK_Student_sSex check(sSex=’男’ or
sSex=’女’)   

–指定表 Student 添加名为
CK_Student_sSex检查约束(指定列名sAge),限制为0-100之间的数字

alter table Student add constraint CK_Student_sAge check(sAge>=0
and sAge<=100)   

 

外键约束  –FK,foreign key
constraint

表关系

alter table Student add constraint Fk_Student_sClassId foreign
key(sClassId) references Class(cId)

–指定表Student添加sClassId外键为Class的主键cId

on delete cascade on update  cascade –级联删除 –级联更新

 

删除约束

alter table Student drop Constraint NN_Student_sClassId   
–删除指定表中的约束

 

创建表时设置列的约束

create table Users

(

     uId int identity(1,1) primary key,–创建了一个列名为
uId的列,并设置了主键约束

     uName nvarchar(8) not null
unique,创建了一个列名为uName的列,并设置了唯一约束

     uSex nchar(1) not null check(uSex=’男’ or uSex=’女’)
default(‘男’),–设置了非空和默认约束

     uBirthday datetime,–创建了一个列名为uBirhday的列,并没有设置约束

     uAge int not null check(uAge>0 and uAge<100)
default(18),–设置了非空、检查、默认约束

 )

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图