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

其实,跟上一节所写的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

结果:

2 - SQL Server 2008 之 使用SQL语句为现有表添加约束条件的更多相关文章

  1. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

  2. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法

    操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...

  3. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  4. 安装sql server 2008 提示错误 SQL Server 2005 Express 工具。 失败

    安装sql server 2008 management,提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 ...

  5. SQL Server 2008 r2 中 SQL语句提示“对象名无效”,但可执行

    [问题描述]在使用 SQL Server 2008 r2 时,有时在完成SQL书写后,会提示“对象名无效”,而SQL语句可正常执行. [原因]缓存相关. [解决方法]ctrl+shift+R 刷新下, ...

  6. SQL Server 2008 r2 输入SQL语句不能自动提示的解决办法

    先利用“配置工具-SQL Server 配置管理器”关闭所有MSSQLSERVER服务,利用SQL Server Installation Center,进入Maintenance,选择Repair, ...

  7. SQL Server 2008|2012 阻止保存要求重新创建表的更改

    不是很理解为什么在SQL Server 2008及以后的版本中会加入阻止保存要求重新创建表的更改这个选项.太麻烦了,每次修改表结构的时候会被"阻止".很不方便. 问题描述: SQL ...

  8. 安装Sql server 2008时出现sql server 2005 express tools failed 怎么办?

    提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 SQL Server 2005 Express 工具.若 ...

  9. SQL Server 2008系统信息查询常用命令 查看表大小、记录数等

    1.返回所有数据库信息(数据库名,创建日期,存储路径等).   use master; GO select * from dbo.sysdatabases 2.返回当前数据库所有对象(可根据type字 ...

随机推荐

  1. 简单学c——前言

      1.学C语言需要什么基础吗? 零基础. 2.什么是C语言? C语言是一种编程语言. 3.什么是编程语言? 编程语言是用来定义计算机程序的形式语言,是一种被标准化的交流技巧,用来向计算机发出指令. ...

  2. python学习随笔

    1 高阶函数的使用: import math def add(x, y, f): return f(x) + f(y) sq = math.sqrt print add(25, 9,sq) 2. ma ...

  3. BZOJ 4013 实验比较

    Description 小D被邀请到实验室,做一个跟图片质量评价相关的主观实验.实验用到的图片集一共有\(N\)张图片,编号为\(1\)到\(N\).实验分若干轮进行,在每轮实验中,小\(D\)会被要 ...

  4. HTTP 状态代码

    转自:https://support.google.com/webmasters/answer/40132 HTTP 状态代码 如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通 ...

  5. 有关AVR的介绍

    Atmel扩展AVR MCU系列 优化内存.连接性.集成性和超低功耗 http://avr.eefocus.com/article/12-03/833141332293957.html   AVR单片 ...

  6. SlimFTPd, LFTP和FileZilla Client/Server

    https://lftp.yar.ru/ 绝好的Socket项目

  7. dump iot表

    SQL> create user scan identified by scan default tablespace users; User created. SQL> grant db ...

  8. CONCATENATION 引发的性能问题

    背景是在一台11gR2的机器上,开发反映一个批处理比以前慢了3倍.经过仔细查看该SQL的执行计划,发现由于SQL中使用了or,导致CBO走出了一个非常糟糕的CONCATENATION路径. no_ex ...

  9. 【fs】

     先判断是否存在再删除

  10. 织梦CMS(dedecms)栏目属性及系统封面模板、列表模板、文章模板区别和路径设置解答

    问题一:(织梦"栏目管理"的"常规选项"中3个栏目属性分析?) 织梦CMS的栏目属性分成三种, -->最终列表栏目 -->频道封面 -->外部 ...