1. 非空约束

  列的为空性决定表中的行是否可以包含空值。空置(NULL)不同于零(0)/空白或者长度为零的字符串(“”)。

  (1)创建非空约束

create table orders
(
docentry int constraint pk_id primary key not null, --红色部分非空约束
customer_number varchar(20),
order_number varchar(20) ,
order_line int,
order_price float
)

  (2)修改非空约束

alter table orders
alter column customer_number varchar(20) not null alter table orders
alter column order_number varchar(20) not null alter table orders
alter column order_line int not null

2. 主键约束

  主键约束只能有一个,且不可为空,通常用于标识列。

  (1)新增主键约束

create table orders
(
docentry int constraint pk_od primary key not null, --红色部分主键约束
customer_number varchar(20),
order_number varchar(20) ,
order_line int,
order_price float
)

  (2)删除主键约束,若想修改主键约束,必先删除原有主键约束

alter table orders
drop constraint pk_od

  (3)更改主键约束

alter table orders
add constraint pk_od primary key (docentry, order_number, order_line, customer_number) --这里括号里面写入多个列的话,表明是聚集索引,只要四个字段串起来的值唯一即可

3. 唯一约束

  主键必然是唯一且不为空,但是唯一不一定是主键,而且主键只能有一个,但是唯一约束仅仅是为了保持某些列具有唯一性而已,所以可以有多列。也就是说一张表里只能有一个主键约束,但可以有多个唯一约束。

  比如invocies表中的docentry是录入系统的id,要作为主键,而invocie_number是发票编号,可作为唯一约束。

  (1)增加唯一约束

create table invoices
(
docentry int constraint pk_inv primary key not null, --主键约束,不可为空
customer_number varchar(20),
invoice_number varchar(20) constraint uni_inv unique, --唯一约束,可为空
invoice_line int,
invoice_price float
)
go

  (2)修改唯一约束,如果要修改某列的唯一约束,必须先删除该列原有唯一约束

  orders表中的order_number作为合同订单编号,也可以做唯一约束

alter table orders
add constraint uni_od unique (order_number) --添加唯一约束

  (3)删除唯一约束

alter table orders
drop uni_od

4. 检查约束

  检查约束(check)用于约束放入列中的有效值。

  比如我们需要约束采购订单的状态,open,close用O,C来表示。(实际上工作中,前端通常会通过前端语言进行约束,数据库方面一般不需要这么做)

  (1)创建检查约束

create table purchases
(
docentry int constraint pk_pr primary key not null,
vendor_number varchar(20),
purchase_number varchar(20) constraint uni_pr unique,
purchase_line int,
purchase_price float,
purchase_status char constraint ck_pr check(purchase_status in ('C', 'O')) --创建检查约束
)
go

  (2)更改现有表中的检查约束

alter table purchases
add constraint ck_pl check(len(purchase_line)<10) --给行号增加约束,字符长度不可大于10

  (3)删除检查约束,如果要修改某列的检查约束,必须先删除原有检查约束。

alter table purchases
drop constraint ck_pl

5. 默认约束和外键约束

  (1)新建默认约束和外键约束

USE [Howie]

create table purchases
(
docentry int constraint pk_pr primary key not null,
vendor_number varchar(20),
purchase_number varchar(20) constraint uni_pr unique,
purchase_line int,
purchase_price float,
purchase_status char constraint ck_pr check(purchase_status in ('C', 'O')) constraint de_pr default 'O' , --purchase_status的状态默认为O
baseentry int constraint fp_pr foreign key (baseentry) references orders (docentry)              --贸易公司一般自己不生产,所以每个客户订单都会对应到一个采购单,所以采购单的(外键)baseentry对应客户订单的docentry
)
go

  (2)删除默认约束和外键约束

alter table purchases
drop constraint de_pr,fp_pr

  (3)现有表中更改默认约束和外键约束

alter table purchases
add constraint de_pr default 'O' for purchase_status  --默认约束 alter table purchases
add constraint fp_pr foreign key (baseentry) references orders (docentry)  --外键约束

///

SQL Server 约束的增删改的更多相关文章

  1. Sql Server——数据的增删改

    所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容)        --这里需要 ...

  2. VS连接SQL Server数据库,增删改查详细教程(C#代码)_转载

    工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server  (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...

  3. SQL server数据类型、增删改查

    数据类型: 整数型:bigint.int.smallint.mediumint.tinyint 小数类型:decimal.numeric 浮点型:real.float.double 位型:bit 字符 ...

  4. python连接sql server数据库实现增删改查

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  5. C#winform窗体实现对sql server数据库的增删改查

    1.运行效果截图 2.输入用户名,密码进行查询 查找成功则显示 查找不成功显示用户信息不存在 3.输入用户名与密码,向数据库中添加用户信息 添加后数据库表信息 4.查看全部信息 5.根据编号信息进行查 ...

  6. 【sql server常用操作{增删改查}】

    use DB_x   go   drop database DB_y   create database DB_y --创建数据库   on primary --指定主数据文件   (   name= ...

  7. sql server触发器中增删改判断

    触发器生效逻辑 在Before或者After之后使用INSERT,DELETE,UPDATE 触发器内情况判断 插入 if exists(select 1 from inserted) and not ...

  8. SQL Server 数据的增删改

    1. 使用Insert语句添加数据 (1)如果要向表中每一列都添加数据,则可以省略列明,直接将值按照顺序写入并用逗号隔开就行. use Howie ','JD','mars','CN','sh') ( ...

  9. SQL语法之初级增删改查

    SQL语法之初级增删改查 1.增 1.1插入单行 INSERT INTO [表名](列名) VALUES(列值) 语法如下: INSERT INTO bsp_Nproductclass(guid,pi ...

随机推荐

  1. 从零开始学vuejs

    最近一段时间都花在了学习vue上,还总是断断续续的,学习的效果不是很明显,思考了好久了,应该是没有进行一个系统的总结,导致很多知识点总是似是而非,而且也有一部分是思维还没有从java转变过来,废话不多 ...

  2. 基于Moya、RxSwift和ObjectMapper优雅实现REST API请求

    在Android开发中有非常强大的 Retrofit 请求,结合RxJava可以非常方便实现 RESTful API 网络请求.在 iOS开发中也有非常强大的网络请求库 Moya ,Moya是一个基于 ...

  3. orm终极大爆炸

    orm终极 甩一个代码给你 # 创建字段 class Field: def __init__(self, name, column_type, primary_key, default): self. ...

  4. [Go] 轻量服务器框架tcp的粘包问题 封包与拆包

    tcp传输的数据是以流的形式传输的,因此就没有办法判断到哪里结束算是自己的一个消息,这样就会出现粘包问题,多个包粘在一起了 可以使用这样一个自定义的形式来解决,一个消息分为 head+body  he ...

  5. 计算机网络基础笔记 运输层协议UDP/TCP

    目录 UDP 首部结构 主要特点 TCP 首部结构 主要特点 TCP 可靠性实现 停止等待ARQ协议 连续ARQ协议&滑动窗口协议 拥塞控制 TCP 运输连接管理 连接建立:三次握手 连接释放 ...

  6. 十ITK读取一张dcm图像然后通过vtk显示

    一.功能 通过ITK读取一张图片(dcm格式),然后通过vtk显示出来. 版本:VS2019 itk5.0.1 vtk 8.2.0 二.程序主要思路 1-读取dcm格式图片 2-转换为vtk可以读取的 ...

  7. ubuntu vscode 写一个C++程序

    博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...

  8. 了解Github

    一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.com/). Github可以托管各种git库,并提供一个web界面(用户名.github.io/ ...

  9. Java描述设计模式(03):工厂方法模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.工厂方法模式 1.生活场景 系统常见的数据导出功能:数据导出PDF.WORD等常见格式. 2.工厂方法模式 是类的创建模式,又叫做虚拟构造 ...

  10. Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API

    微软动态CRM专家罗勇 ,回复332或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 本文很多内容来自 John Towgood 撰写的Dynamic ...