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)  --外键约束

///

最新文章

  1. 做一个gulp+webpack+vue的单页应用开发架子
  2. Djunit工作记录Mock时出现为null的情况setReturnValueAt|MockObjectManager.addReturnValue不起作用
  3. PS:缝线颜色随着鞋帮颜色的改变发生改变.files
  4. alt属性
  5. SQL Server 几种锁的区别
  6. 查看mysql主从配置的状态及修正 slave不启动问题
  7. netty-socketio使用namespace
  8. HD1532Drainage Ditches(最大流模板裸题 + 邻接表)
  9. Greg and Array
  10. 在VC资源文件中加入声音资源
  11. Code Blocks 多文件联合编译
  12. cron expr
  13. JSP 学习二
  14. WebApi一个控制器中定义多个Get方法。
  15. PHP优化与提升
  16. Chainsql使用相关笔记
  17. 第三方登录:新浪微博登录(OAuth2.0)
  18. java 结束程序进程 代码
  19. 双向一对一映射@OneToOne
  20. UVa 10905 - Children&#39;s Game(求多个正整数排列后,所得的新的数字的极值)

热门文章

  1. How to: Implement File Data Properties 如何:实现文件数据属性
  2. git命令行的颜色配置
  3. C#后台架构师成长之路-进阶体系篇章大纲
  4. SQL Server 之事务执行,让语句在事务中执行
  5. Python selenium登录163邮箱示例
  6. LeetCode 1291. 顺次数
  7. Python 分析到底是谁操纵《庆余年》上了热搜?
  8. jQuery-实现简单的Ajax请求封装
  9. npm与cnpm的区别
  10. 【CF908D】New Year and Arbitrary Arrangement