SQL 约束 (Constraints)
来源:互联网 发布:dcs编程软件 编辑:程序博客网 时间:2024/06/06 03:45
转:http://www.w3school.com.cn/sql/sql_constraints.asp
SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
我们将主要探讨以下几种约束:
1、NOT NULL
2、UNIQUE
3、PRIMARY KEY
4、FOREIGN KEY
5、CHECK
6、DEFAULT
1、NOT NULL
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 “Id_P” 列和 “LastName” 列不接受 NULL 值:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))
2、UNIQUE
可使用 UNIQUE 约束确保在非主键列中不输入重复值,可以为空。尽管 UNIQUE 约束和 PRIMARY KEY约束都强制唯一性,但在强制下面的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束:
非主键的一列或列组合。
一个表可以定义多个 UNIQUE 约束,但是只是针对非主键列,允许空值,而只能定义一个 PRIMARY KEY 约束,针对主键来的,是不允许为空的。
允许空值的列。
允许空值的列上可以定义 UNIQUE 约束,而不能定义 PRIMARY KEY 约束。
如下Id_p列创建UNIQUE约束。
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),UNIQUE (Id_P))
2.1、在用法上UNIQUE与Distinct有什么区别,不是都是去重复行吗?
UNIQUE 是表结构选项(约束),Distinct 是查询时候用的啊,两个用在不同的地方,不能通用。
3、PRIMARY KEY
SQL PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
例如:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (Id_P))
4、FOREIGN KEY
SQL FOREIGN KEY 约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
让我们通过一个例子来解释外键。请看下面两个表:
“Persons” 表:
“Orders” 表:
请注意,”Orders” 中的 “Id_P” 列指向 “Persons” 表中的 “Id_P” 列。
“Persons” 表中的 “Id_P” 列是 “Persons” 表中的 PRIMARY KEY。
“Orders” 表中的 “Id_P” 列是 “Orders” 表中的 FOREIGN KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
例如:
CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (Id_O),FOREIGN KEY (Id_P) REFERENCES Persons(Id_P))
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (Id_O),CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)REFERENCES Persons(Id_P))
5、CHECK
SQL CHECK 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
例如:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CHECK (Id_P>0))
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes'))
6、DEFAULT
SQL DEFAULT 约束
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
例如:
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255) DEFAULT 'Sandnes')
或者sql支持的函数:
CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,OrderDate date DEFAULT GETDATE())
关注我的技术公众号,查看更多优质技术文章推送
微信扫一扫下方二维码即可关注:
- sql 约束(Constraints)
- SQL 约束 (Constraints)
- SQL约束Constraints
- SQL 约束 (Constraints)
- SQL 约束 (Constraints)
- SQL Constraints(约束)
- SQL 约束 (Constraints) 高级教程
- SQL 约束 (Constraints)、SQL NOT NULL 约束、SQL UNIQUE 约束
- 约束(Constraints)
- 约束constraints
- mysql 约束( key constraints )
- 约束(constraints)
- SQLite 约束 Constraints
- 第四章 约束(constraints)
- marathon参考(6): 约束Constraints
- SQL高级语句-约束 (Constraints)用于限制加入表的数据的类型。
- SQL 约束 (Constraints):NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHE
- SQLite 入门教程(三)好多约束 Constraints
- SpringMVC笔记(二)
- 使用URL读取网页内容
- 创建redis集群报错 /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load suc
- 端口调研
- JS正则表达式使用验证账号、手机号、电话和邮箱
- SQL 约束 (Constraints)
- CLion 配置 C C++ 编译环境(MinGW)
- Android studio gradle中分渠道加载res、libraries及Class
- bug修复-android中的onCreate两个参数的方法是什么鬼?
- 61、二叉搜索树的第k个结点
- 数据转发中心高并发访问次数统计(mysql实现)
- javascript Array数组常用的方法
- (1798: [Ahoi2009]Seq 维护序列seq)<线段树乘法操作>
- docker--容器和镜像