SQL Server 约束的增删改
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 约束的增删改的更多相关文章
- Sql Server——数据的增删改
所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容) --这里需要 ...
- VS连接SQL Server数据库,增删改查详细教程(C#代码)_转载
工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...
- SQL server数据类型、增删改查
数据类型: 整数型:bigint.int.smallint.mediumint.tinyint 小数类型:decimal.numeric 浮点型:real.float.double 位型:bit 字符 ...
- python连接sql server数据库实现增删改查
简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...
- C#winform窗体实现对sql server数据库的增删改查
1.运行效果截图 2.输入用户名,密码进行查询 查找成功则显示 查找不成功显示用户信息不存在 3.输入用户名与密码,向数据库中添加用户信息 添加后数据库表信息 4.查看全部信息 5.根据编号信息进行查 ...
- 【sql server常用操作{增删改查}】
use DB_x go drop database DB_y create database DB_y --创建数据库 on primary --指定主数据文件 ( name= ...
- sql server触发器中增删改判断
触发器生效逻辑 在Before或者After之后使用INSERT,DELETE,UPDATE 触发器内情况判断 插入 if exists(select 1 from inserted) and not ...
- SQL Server 数据的增删改
1. 使用Insert语句添加数据 (1)如果要向表中每一列都添加数据,则可以省略列明,直接将值按照顺序写入并用逗号隔开就行. use Howie ','JD','mars','CN','sh') ( ...
- SQL语法之初级增删改查
SQL语法之初级增删改查 1.增 1.1插入单行 INSERT INTO [表名](列名) VALUES(列值) 语法如下: INSERT INTO bsp_Nproductclass(guid,pi ...
随机推荐
- FlowPortal 6.00c 使用xFormDesigner复制粘贴中文总是乱码
环境: Windows Server 2016中文版 FlowPortal 6.00C 问题: 使用xFormDesigner 在源码选项卡复制粘贴中文总是乱码. 解决办法: 控制面板---区域--- ...
- Dynamics 365 Customer Enagement中的更改跟踪(change tracking)
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- iOS----------componentsJoinedByString 和 componentsSeparatedByString 的方法的区别
将string字符串转换为array数组 NSArray *array = [Str componentsSeparatedByString:@","]; ==反向方法 将arr ...
- 页面中加入地图map
1.首先要有密钥AK ,可以自己注册获取或复制别人的 .搜索百度地图API (http://lbsyun.baidu.com/apiconsole/key) 2.地图示例 <head> & ...
- 百度大脑UNIT3.0详解之语音语义一体化方案
在电话客服场景里,用户和机器人交流的过程中,经常会出现沉默.打断机器人.噪声等情况,机器人在应对这些异常情况的时候,需要语音和语义理解技术进行处理,才能实现用户和机器人的流畅交谈.而这些能力的获取与应 ...
- Flutter速记
一.安装 参考https://www.jianshu.com/p/cda416e2fc0d 二.换图标 三.打包 参考:https://www.cnblogs.com/shuang ...
- liunxCPU和内存,磁盘等资源
1.Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本. ...
- 【框架】利用Spring的BeanPostProcessor来修改bean属性
一.BeanPostProcessor是什么?什么时候触发?可以用来做什么? 1.它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor ...
- 八、VTK安装并运行一个例子
一.版本 win10 VS2019 VTK8.2.0 其实vtk的安装过程和itk的安装过程很是类似,如果你对itk的安装很是熟悉(也就是我的博客一里面的内容,那么自己就可以安装.) 如果不放心,可以 ...
- mysql windows 安装5.7
E:\MySQL\MySQLServer57\bin>net start mysqlMySQL 服务无法启动. 解决办法: 手动在安装目录创建文件 my.ini [mysql] # 设置mysq ...