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
结果:
作者:CNXY Github:https://www.github.com/cnxy 出处:http://cnxy.me 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出,谢谢! |
【推荐】FFA 2024大会视频回放:Apache Flink 的过去、现在及未来
【推荐】中国电信天翼云云端翼购节,2核2G云服务器一口价38元/年
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [杂谈]如何选择:Session 还是 JWT?
· 硬盘空间消失之谜:Linux 服务器存储排查与优化全过程
· JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升
· [杂谈]后台日志该怎么打印
· Pascal 架构 GPU 在 vllm下的模型推理优化
· WinForm 通用权限框架,简单实用支持二次开发
· 如何为在线客服系统的 Web Api 后台主程序添加 Bootstrap 启动页面
· 硬盘空间消失之谜:Linux 服务器存储排查与优化全过程
· 面试官:DNS解析都整不明白,敢说你懂网络?我:嘤嘤嘤!
· Fleck:一个轻量级的C#开源WebSocket服务端库