SQLServer用SQL语句给字段设置约束

2023-11-19

第二次写博客,比第一次写起来顺手些了。

SQL server数据库的基础学习2

一、用SQL语句给字段设置约束

1、约束:分为主键约束、外键约束、check约束、default约束、unique约束
主键约束(primary):不允许元素重复,元素必须是唯一的,有效的避免了数据的冗余。
外键约束(foreign):通过外键约束从语法上保证了本事物所关联的其他事情一定是存在的,且事物与事物之间的关系是通过外键来体现的。
check约束:保证事物属性的取值在所规定的合法的范围之内。
default约束:保证事物的属性在不添加的时候一定会有一个默认值
unique(唯一)约束:保证了事物的属性的取值不能重复,但允许其中有且只有一列可以为空(可以和not null组合使用)

设置check约束

例如:创建一个student表并给sal(工资)check约束在1000~10000之间
create table student
(
id int primary key,
sal int check(sal<10000 and sal>1000)
)
我们可以加入insert添加语句进行测试
insert into student values(1,10000)
在这里插入图片描述
从这里可以看出,添加的值如果不是在约束范围之内的话,无法执行。

设置default约束

例如:创建一个student表给性别(sex)设置default约束在不输入的时候默认为男
create table student
(
id int primary key,
sal int check(sal<10000 and sal>1000),
sex nchar(1) default(‘男’)
)
insert into student(id,sal) values(1,2000)

我么可以用select语句查询一下来进行测试
select* from student
在这里插入图片描述

设置unique约束

例如:创建一个student表给name(姓名)设置unique约束使输入的姓名不能重复
create table student
(
id int primary key,
sal int check(sal<10000 and sal>1000),
sex nchar(1) default(‘男’),
name nvarchar(50) unique
)
我们可以用insert语句进行测试
insert into student values(1,2000,‘女’,‘张三’)
insert into student values(2,2000,‘男’,‘张三’)
在这里插入图片描述

2、在SQLServer中查看表的主键、外键、约束
打开相对应的表——打开键或者约束——鼠标双击
在这里插入图片描述

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

SQLServer用SQL语句给字段设置约束 的相关文章

  • 为什么我们不能有多个主键?

    我知道表中不能有超过 1 个主键 但技术原因是什么 直接拉取自SO https stackoverflow com questions 217945 can i have multiple primary keys in a single
  • 使用另一个表中的数据查找并替换 MySQL 中的字符串

    我有两个 MySQL 表 我想使用另一个表中的数据查找和替换一个表中的文本字符串 Table texts messages thx guys i think u r great thx again u rock Table dictiona
  • MySQL:你能指定一个随机限制吗?

    有没有办法在 SQL MySQL 中随机化限制数字 我希望能够做的是在查询中获取随机数量的结果以在插入子查询中使用 而无需任何服务器端脚本 我希望能够作为假设说明运行的查询是 SELECT id FROM users ORDER BY RA
  • 整理有关 QueryDSL-JPA 的提示

    有没有办法用 QueryDSL 来执行它 粗体部分 从地点选择 其中名称如 cafe 整理 Latin1 general CI AI 我将 JPA 与 hibernate 一起使用 您可以使用addFlag QueryFlag Positi
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • 使用绑定和空值命中 Oracle 索引的最佳查询

    我有一个表 该表在多个列上有一个索引 其中许多列可以为空 CREATE UNIQUE INDEX UX MYTABLE A B C D E ON MYTABLE A B C D E 现在 我在 C 代码中尝试检查该表并精确命中索引 对于每个
  • 获取查询的行号

    我有一个查询将返回一行 当表排序时 有什么方法可以找到我正在查询的行的行索引吗 我试过了rowid但当我期待第 7 行时却得到了 582 Eg CategoryID Name I9GDS720K4 CatA LPQTOR25XR CatB
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • 外键引用多个表

    我有4张桌子 A ida name B ida B specific stuff C ida C specific stuff D ida D specific stuff 我希望另一个表 E 可以仅引用 B 或 C 而不是 D 我可以在其
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • 使用 xmlagg 时出现子查询错误和太多值

    我在连接许多大型表中的所有数据时遇到问题 我昨天对此提出了问题 但不幸的是 listagg 似乎不是一个好的选择 链接子查询返回多行 https stackoverflow com questions 54651144 subquery r
  • 当我输入 dateadd 或 datediff 代码时,我总是收到此错误“ORA-00904“DATEADD”无效标识符。”

    我有一个大学项目 并且有一个包含入院和出院日期属性的患者表 我需要删除超过 7 年的记录 我使用了以下代码 delete from patient where dis date gt datedadd yy 7 getdate 我收到错误
  • SQL Server递归查询显示父级路径

    我正在使用 SQL Server 语句并有一张表 例如 item value parentItem 1 2test 2 2 3test 3 3 4test 4 5 1test 1 6 3test 3 7 2test 2 我想使用 SQL S
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 按两列的最小值排序

    I use SQL Server 2008 R2 我需要按两列的最小值对表进行排序 该表如下所示 ID integer Date1 datetime Date2 datetime 我希望我的数据按至少两个日期排序 以这种方式对该表进行排序的
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is

随机推荐

  • 深入了解== 和 equals的比较

    原文链接 https blog csdn net qq 41841247 article details 106987762
  • SMI/慧荣/SM32**主控量产通用教程,PNY U盘量产!

    我的PNY 8G U盘已多次量产测试 绝对可用 SMI 慧荣主控 SMI主控应该都能通用 我量产后 型号变成SM321 325了 这个可以改的 量产的时候 量产前 PNP设备 ID VID 154B PID 0 044 设备备序列号 AAA
  • Mysql高可用高性能存储应用系列2 - 深入理解锁和Mvcc

    概述 Mysql数据库在处理并发中下了很多功夫 锁是为了更好的保护数据的正确和可靠 Mvcc是维持一个数据的多个版本 使得读写操作没有冲突的解决并发的数据库方案 锁 当数据访问多了 就会出现并发的问题 Mysql锁设计的初衷是处理并发问题
  • vite 创建vue.js项目及vant安装

    1 npm create vitejs app 2 project name select framework select variant 3 cd wx vant 4 npm install 5 npm run dev 6 npm i
  • Linux 内存管理

    摘要 本章首先以应用程序开发者的角度审视Linux的进程内存管理 在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法 力求从外到内 水到渠成地引导网友分析Linux的内存管理与使用 在本章最后 我们给出一个内存映射的实例 帮
  • 你不知道的js

    作用域 LHS RHS 区别 如果 RHS 查询在所有嵌套的作用域中遍寻不到所需的变量 引擎就会抛出 ReferenceError 异常 值得注意的是 ReferenceError 是非常重要的异常类型 相较之下 当引擎执行 LHS 查询时
  • 循环单链表(C语言版)

    前言 小可爱们 本次一起来看看循环单链表吧 嘻嘻 一 循环单链表的定义 循环单链表是单链表的另一种形式 其结构特点链表中最后一个结点的指针域不再是结束标记 而是指向整个链表的第一个结点 从而使链表形成一个环 和单链表相同 循环链表也有带头结
  • 量化涌现:信息论方法识别多变量数据中的因果涌现

    来源 集智俱乐部 作者 Fernando E Rosas Pedro A M Mediano Henrik J Jensen等 译者 潘佳栋 审校 梁金 编辑 邓一雪 导语 大量个体聚集起来 常常涌现出新的复杂结构 鸟儿聚集起来形成兼具灵活
  • vue-cli 添加顶部导航栏及点击导航菜单,左侧菜单栏切换

    layout 模板包含菜单栏等主要框架 router 路由管理 根据路由可生成左侧菜单栏 When your routing table is too long you can split it into small modules imp
  • 迈向多模态AGI之开放世界目标检测

    作者 王斌 谢春宇 冷大炜 责编 夏萌 出品 360人工智能研究院 引言 目标检测是计算机视觉中的一个非常重要的基础任务 与常见的的图像分类 识别任务不同 目标检测需要模型在给出目标的类别之上 进一步给出目标的位置和大小信息 在 CV三大任
  • 【腾宇】postinstall-postinstall配合patch-package重写node_modules的依赖方法

    1 本地安装依赖 postinstall postinstall patch package npm i patch package postinstall postinstall save dev or yarn add patch pa
  • Python使用pandas从mysql数据库读取数据并导出到Excel

    工作中我们经常会从数据库中提取数据 处理之后 将结果整理为excel输出 本文主要介绍使用python的pandas工具从mysql数据获取数据 按要求处理之后 导出到excel文件 安装依赖 首先确定已经安装PyMySQL pandas
  • 算法高级(23)-彩虹表(Rainbow Table)

    一 彩虹表的定义 百度百科 彩虹表是一个用于加密散列函数逆运算的预先计算好的表 为破解密码的散列值 或称哈希值 微缩图 摘要 指纹 哈希密文 而准备 一般主流的彩虹表都在100G以上 这样的表常常用于恢复由有限集字符组成的固定长度的纯文本密
  • Python-test 2021.11.1

    1 val for val in b1 if val in b2 列表的交集与差集 b1 1 2 3 b2 2 3 4 b3 val for val in b1 if val in b2 b4 val for val in b1 if va
  • pandas列值根据字典批量替换

    更多 更及时内容欢迎留意微信公众号 小窗幽记机器学习 背景 DataFrame数据中一列的值需要根据某个字典批量映射为字典中的value 方法1 pandas中的df replace import pandas as pd import n
  • 1204: 鸡兔同笼

    1204 鸡兔同笼 时间限制 1 Sec 内存限制 128 MB 提交 188 解决 77 提交 状态 讨论版
  • 物理层(比特流)

    物理层 一 物理层的基本概念 二 数据通信的基础知识 1 数据通信系统的模型 2 有关信道的几个基本概念 3 信道的极限容量 4 信道的极限信息传输速率 三 物理层下面的传输媒体 1 导引型传输媒体 2 非导引型传输媒体 四 信道复用技术
  • 借力亚马逊云科技实现 Apache APISIX 的生态探索与产品成长

    关于 Apache APISIX Apache APISIX 于 2019 年被两位创始人捐赠给 Apache 软件基金会孵化器 并于第二年7月从孵化器毕业 成为 Apache 顶级项目 APISIX 作为开源 API 网关 一直以活跃和快
  • osgFBO(十二)深度纹理与颜色纹理混合

    前面涉及到了深度纹理和颜色纹理 由于qedl中 也要两者混合 所以 要考虑到两者混合 这里只是简单将其相加 一 设置纹理 采样颜色纹理 osg ref ptrosg Texture2D texColor createFloatRectang
  • SQLServer用SQL语句给字段设置约束

    第二次写博客 比第一次写起来顺手些了 文章目录 SQL server数据库的基础学习2 一 用SQL语句给字段设置约束 设置check约束 设置default约束 设置unique约束 SQL server数据库的基础学习2 一 用SQL语