T-SQL语句添加约束

2023-11-12

语法: ALTER TABLE 表名 ADD CONSTRAINT约束名约束类型 具体的约束声明

约束名的取名规则推荐采用:约束类型_约束列,当然你也可以不这么命名,这样单纯是比较方便

如:主键(Primary Key)约束:PK_UserId

        唯一(Unique key)约束: UQ_UserCardId

        默认(Default Key)约束 DF_UserPasswd

        检查(Check Key)约束 CK_Gender

        外键(Foreign Key)约束: FK_SortId

       --以上加棕色段是我定义表中的列名称

打个比方:add constraint PK_UserId PRIMARY KEY (UserId)
--PK_UserId 是自定义约束名 , PRIMARY KEY 是约束类型, (UserId)是具体的约束声明

举例,代码如下:

USE Demo --操作的数据库名
GO
ALTER TABLE Test_Table1--要进行限制约束的表
add constraint PK_UserId PRIMARY KEY (UserId), --主键约束
    constraint CK_UserPwd CHECK(LEN(UserPwd)>=6), --查询约束,长度限制
	constraint CK_Gender CHECK(Gender=0 OR Gender =1),--查询约束,范围限制
	constraint DF_Gender DEFAULT(0) for Gender,--默认约束,设置默认值
	constraint CK_E_mail CHECK(E_mail LIKE '%@%')  --检查约束,格式检查
GO
-------------------------------------------------------------------------------------

USE E_Market --操作的数据库名

GO
ALTER TABLE OrderInfo --要进行限制约束的表

ADD CONSTRAINT PK_OrderId PRIMARY KEY(OrderId),
    CONSTRAINT FK_UserId Foreign KEY(UserId) References UserInfo(UserId), --外键约束
	CONSTRAINT FK_ConmodityId Foreign KEY(CommodityId) References CommodityInfo(CommidityId),
	CONSTRAINT DF_PayWay Default('网上银行') FOR PAYWAY,
	CONSTRAINT CK_Confirm Check(Confirm=0 OR Confirm =1),
	CONSTRAINT DF_Confirm Default(0)FOR Confirm ,
	CONSTRAINT CK_SendGoods Check(SendGoods=0 OR SendGoods =1),
	CONSTRAINT DF_SendGoods Default(0)For SendGoods
GO

 
 
贴士: 主外键约束时,PRIMARY KEY ,FOREIGN KEY,其余约束不用加KEY 

注意:1.外键约束时要注意外键FK_xx 必须与引用的主键列的类型 长度 完全一致

         2.外键约束引用的表中必须有主键列

         3.当添加约束的表中已存在数据,但又要对其添加约束,只需要修改第一行 ALTER TABLE 表名  WITH NOCHECK (但是对与之前的数据,将不做任何检查)

 设置外键FK时,外键通过将列连接到另一个表中的唯一键而工作,并且该唯一键必须定义为某种唯一索引形式,即主键或其他唯一索引。(2017-3-12添加)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

T-SQL语句添加约束 的相关文章

  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • SQL Server 2008R2 和创建 XML 文档

    论坛上的第一篇文章 因为我真的被这个问题困住了 以下查询正确地将有效的 XML 文档分配给 xTempXML 变量 类型为 xml 注 文档的长度 转换为varchar max 711 select xTempXML select Pres
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • st_intersects 与 st_overlaps

    这两个查询有什么区别 select a gid sum length b the geom from polygons as a roads as b where st intersects a the geom b the geom gr
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • 如何在 MySQL 查询本身中检索 JSON 数组中存储的值?

    我有下表 product id product name image path misc 1 flex http firstpl course level id 19 group id 40067 2 Android http firstp
  • 如何获取日期时间字段的 UTC?

    我正在使用 MySQL 5 并且正在尝试将日期时间字段转换为 UTC TIMESTAMP 这是我所拥有的 但它不起作用 并且不确定我是否可以做到这一点 但有人可以告诉我我做错了什么吗 谢谢 我已经尝试过这个 SELECT UTC TIMES
  • 查询和扫描多行性能缓慢

    下面的查询一行的执行时间为 6 18 分钟 Exception type 1 的基数值为 3 我不知道如何提高性能 Query select count 1 as rage tap from summary funnel 1066 s jo
  • 使用 order by 和 limit 从多个表中删除

    我试图从使用 ORDER BY DESC 和 LIMIT 有关系的两个表中删除 DELETE FROM my rel table AS t1 LEFT JOIN my photo table AS t2 ON t2 typeid t1 ty

随机推荐

  • aspose 实现 WORD转PDF【亲测可用】

    aspose 实现word转PDF 直接上代码 import java io File import java io FileOutputStream import java io InputStream import com aspose
  • Spring Boot连接DB2查询结果时报错“java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z”的解决办法...

    关于在maven项目中如何添加DB2的坐标的详细 见 https www cnblogs com zifeiy p 7918554 html Spring Boot项目中的application properties文件内容如下 DB Co
  • 育碧2k微软服务器,育碧服务器出现大规模的BUG:影响到多个平台

    PConline资讯 昨日 育碧的服务器出现大规模的BUG 包括 彩虹六号 幽灵行动 等多款育碧游戏无法进行联机游戏 育碧官方也是在第一时间在微博和推特发布了消息并表示正在积极抢修 而期间间歇性的断开连接和排队则一直没有停止过 PS4 Xb
  • elementUI el-button 点击后样式自动恢复的方法

    问题描述 elementUI 中的按钮 点击后会有focus样式 且只有点击其他地方后 按钮才会失焦 样式才会恢复到点击之前的样式 例如主要按钮是亮蓝色 点击后是暗蓝色 点击其他地方才会恢复亮蓝色 我希望将鼠标放在按钮上时会改变样式 但是点
  • 三伏天是几月几号2023-三伏天需要注意什么

    三伏天是几月几号2023 2023年三伏天具体时间如下 初伏 2023年7月11日 2023年7月20日 共10天 中伏 2023年7月21日 2023年8月9日 共20天 末伏 2023年8月10日 2023年8月19日 共10天 三伏天
  • 奇偶数分离

    描述 有一个整型偶数n 2 lt n lt 10000 你要做的是 先把1到n中的所有奇数从小到大输出 再把所有的偶数从小到大输出 输入 第一行有一个整数i 2 lt i lt 30 表示有 i 组测试数据 每组有一个整型偶数n 输出 第一
  • JavaWeb:Servlet

    Servlet 文章目录 Servlet Servlet介绍 Web服务器 Tomcat Servlet接口 Servlet接口介绍 类图 Servlet接口源码 GenericServlet抽象类 HttpServlet抽象类 Servl
  • Python 报错:can only concatenate str (not “int”)to str

    x 1 print x x 使用 连接时 只能将字符串与字符串连接 不能和int型连接 需要将x强制转换成str型 x 1 print x str x
  • 如何配置H3C S5500每个VLAN配一个DHCP池

    给Vlan定义地址并配置其工作在服务器模式 interface Vlan interface12 ip address 172 18 12 1 255 255 255 0 dhcp select server global pool 给Vl
  • 计算机浮点数规格化表示

    说明 在IEEE标准中 浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域 指数域和尾数域三个连续域 float float类型在内存中占用的位数为 1 8 23 32bits double 1 11 52 64
  • Android 关于NestedScrollView与RecyclerView的滑动冲突的最终解决方案

    最近做项目的时候发现一个小问题 当NestedScrollView嵌套RecyclerView的时候回出现种种不适 网上给出的解决方案 比如去除RecyclerView的滑动事件 修改NestedScrollView或者RecyclerVi
  • TensorFlow 框架(contrib) - TensorFlow图形编辑器(contrib)

    TensorFlow 框架 contrib TensorFlow 框架工具 tf contrib framework assert same float dtype tf contrib framework assert scalar tf
  • pandas某一列中每一行拆分成多行的方法

    在处理数据过程中 常会遇到将一条数据拆分成多条 比如一个人的地址信息中 可能有多条地址 既有家庭地址也有工作地址 还有电话信息等等类似的情况 实际使用数据的时候又需要分开处理 这个时候就需要将这一条数据进行拆分成多条 以方便使用 在pand
  • Mybatis-Plus中update更新操作用法

    目录 一 前言 二 update 1 关于修改的4个条件构造器 2 UpdateWrapper 用法示例 3 LambdaUpdateWrapper 用法示例 4 UpdateChainWrapper 用法示例 5 LambdaUpdate
  • 志愿者打卡器服务器无响应,【转发】“志愿者打卡器”普及贴

    原标题 转发 志愿者打卡器 普及贴 首先欢迎各位加入建院志愿者的大家庭 在这里 我们真实地接触社会 我们付出热忱和真心 但是 你们的汗水不会白流 你们的时间也不会白白付出 你们的无私奉献也会得到相应的回报 在建院 任何形式的志愿活动都可以累
  • xss-labs通关大合集

    漏洞原理 看这里哇 目录 xss labs level1 level2 level3 level4 level5 level6 level7 level8 level9 level10 level11 level12 level13 lev
  • 虚拟服务器本地ssd型,云服务器本地ssd型

    云服务器本地ssd型 内容精选 换一换 若您对扩展的云服务器的规格有特殊的要求 可通过使用新模板创建伸缩配置 可按照您的需求配置新模板的规格参数 使得伸缩组内云服务器的规格均符合创建新模板的规格 登录管理控制台 选择 计算 gt 弹性伸缩
  • Python实现PP图和QQ图的应用

    Python实现PP图和QQ图的应用 在数据可视化领域 PP图和QQ图常常被用作数据研究和分析的工具 PP图 Probability Probability plot 和QQ图 Quantile Quantile plot 是由概率论和统计
  • Qt中的坐标系统

    1 坐标系统 GUI操作系统都有特定的坐标系统 图形界面程序在坐标系统中进行窗口和部件的定位 定位类型 顶级窗口部件的定位 窗口内部件的定位 窗口部件的大小设置 Qt使用统一的坐标系统定位窗口部件的位置和大小 Qt部件提供成员函数在坐标系统
  • T-SQL语句添加约束

    语法 ALTER TABLE 表名 ADD CONSTRAINT约束名约束类型 具体的约束声明 约束名的取名规则推荐采用 约束类型 约束列 当然你也可以不这么命名 这样单纯是比较方便 如 主键 Primary Key 约束 PK UserI