2 - SQL Server 2008 之 使用SQL语句为现有表添加约束条件

上一节讲的是直接在创建表的时候添加条件约束,但是有时候是在表格创建完毕之后,再添加条件约束的,那么这个又该如何实现?

其实,跟上一节所写的SQL代码,很多是相同的,只是使用了修改表的ALTER关键字及添加约束的ADD CONSTRAINT关键字而已,其他大同小异。

代码如下:

USE PersonInfo  --使用PersonInfo数据库
GO

IF EXISTS (SELECT * FROM sys.tables WHERE [name] = 'Employee ')  --如果存在Employee这张表
DROP TABLE Employee  --则删除
GO

IF EXISTS(SELECT * FROM sys.tables WHERE [name] = 'Person')  --如果存在Person这张表
DROP TABLE Person --则删除
GO

CREATE TABLE Person --创建Person(人物)表
(
  --索引
  PersonID int IDENTITY(1,1) NOT NULL,-- 创建一个整型、自增为1、标识种子为1、不允许为空的列PersonID
  --名字
  Name nvarchar(20) NOT NULL, --创建一个Unicode非固定长度(最多存储20个Unicode字符)的列Name
  --年龄
  Age int NOT NULL ,--创建一个整型的列Age
  --性别
  Gender bit NOT NULL, --创建一个类型为bit的列Gender
  --身份信息
  [Identity] nchar(18) NOT NULL--创建一个非Unicode非固定长度(最多存储18个非Unicode字符)的列Identity
)

ALTER TABLE Person
ADD  CONSTRAINT PK_PersonID PRIMARY KEY(PersonID), --为PersonID创建主键约束
     CONSTRAINT CK_Age CHECK(Age >=18 AND Age <=55),--为Age创建检查约束
     CONSTRAINT DF_Gender DEFAULT(1) FOR Gender,--为Gender创建默认约束
     CONSTRAINT CK_Identity CHECK (LEN([Identity])=18),--为Identity创建检查约束
     CONSTRAINT UQ_Identity UNIQUE([Identity]) --为Identity创建唯一约束
GO         

CREATE TABLE Employee --创建Employee(雇员)表
(
    --索引
    EmployeeID int IDENTITY(1,1001) NOT NULL, -- 创建一个整型、自增为1、标识种子为1001、不允许为空的列EmployeeID
    --人物索引 
    PersonID int NOT NULL ,
    --职位 
    Post nvarchar(20) NOT NULL,--创建一个Unicode非固定长度(最多存储20个Unicode字符)的列Post
    --入职时间 
    EntryTime datetime --创建一个类型为datetime的列EntryTime
)
GO

ALTER TABLE Employee
ADD CONSTRAINT PK_EmployeeID PRIMARY KEY(EmployeeID),--为EmlpoyeeID创建主键约束
    CONSTRAINT FK_PersonID FOREIGN KEY(PersonID) REFERENCES Person(PersonID),--为PersonID创建外键约束
    CONSTRAINT DF_EntryTime DEFAULT getdate() FOR EntryTime--为EmlpoyeeID创建默认约束
GO

结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人随笔

MySQL常用函数

聚合函数  统计和分析 数据  使用场景:会和分组结合使用 -- 一旦启用分组,只能获取组的信息,组中成员不能出现在select后 count() 查询某个字...

3407
来自专栏数据之美

图文并茂详解 SQL JOIN

Join是关系型数据库系统的重要操作之一,一般关系型数据库中包含的常用Join:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另...

2528
来自专栏C# 编程

1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表

约束条件分为以下几种: 1)非空约束,使用NOT NULL关键字; 2)默认值约束,使用DEFAULT关键字; 3)检查约束,使用CHECK关键字; 4)唯一约...

1920
来自专栏面朝大海春暖花开

mybatis递归,一对多代码示例

由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合。

1161
来自专栏Java帮帮-微信公众号-技术文章全总结

【数据库】MySQL进阶六、模糊查询用法

【数据库】MySQL进阶六、 模糊查询用法 javahelp mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可...

47213
来自专栏钟绍威的专栏

当子查询碰上NULLUNIONJOIN总结

情景: 现在有如图两个表,boy和girl,对应着Boy和Girl两个bean,有共同字段id、name,另外boy还有个外键grilfriend(指向girl...

1737
来自专栏PHP在线

mysql

cross join :笛卡尔交集。 Inner join :内连接。 left join :只要满足左边表的需求就可以了,右表有无都可以。 right ...

3578
来自专栏LanceToBigData

MySQL(九)之数据表的查询详解(SELECT语法)一

这一篇是MySQL中的重点也是相对于MySQL中比较难得地方,个人觉得要好好的去归类,并多去练一下题目。MySQL的查询也是在笔试中必有的题目。希望我的这篇博客...

25610
来自专栏java达人

有哪些常用的sql语句

首行当然是最基本的增删查改啦,其中最重要的是查。 还有就是一些要注意的地方,就是SQL语句对大小写不敏感,语句中列名对应的值要用单引号''括起来不是双引号。...

18510
来自专栏康怀帅的专栏

MySQL 函数

函数相关内容。 字符函数 字符连接 CONCAT('a','b') 使用指定分隔符进行字符连接 CONCAT_WS('-','a','b') 数字格式化 FOR...

2864

扫码关注云+社区