SQL约束(主键约束、外键约束、自动递增、不允许空值、值唯一、值默认、值限制范围)
NOT NULL 不允许空值约束
NOT NULL 约束强制列不接受 NULL 值(NULL值就是没有值或缺值)。NOT NULL 约束强制字段始终包含值,即不向字段添加值,就无法插入新记录或者更新记录,也就是在插入或更新行时该列必须有值。
注意:NULL值时没有值,它不是空串、空格等。空串、空格等是一个有效的值,它不是无值。
CREATE TABLE 表名
(
列名称 数据类型以及长度 NOTNULL,
……
);
UNIQUE 唯一值约束
UNIQUE 约束唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY 主键约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 主键约束拥有自动定义的 UNIQUE 约束。
注意:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
CREATE TABLE 表名
(
列名称 数据类型以及长度 UNIQUE;
……
); 为多个列定义 UNIQUE 约束
方法一:(一次性指定)
CREATE TABLE 表名
(
列名称1 数据类型以及长度;
列名称2 数据类型以及长度;
……
UNIQUE (列名称1,列名称2,……)
);
方法二:(分别对各个列进行指定)
CREATE TABLE 表名
(
列名称1 数据类型以及长度 UNIQUE;
列名称2 数据类型以及长度 UNIQUE;
……
);
PRIMARY KEY 主键约束
PRIMARY KEY 主键约束唯一标识数据库表中的每条记录。主键值必须唯一。
主键中只能使用不允许NULL值的列(即主键值不能为NULL值),允许NULL值的列不能作为唯一标识。
注意:建议每个表只有一个主键约束。
语法
CREATE TABLE 表名
(
列名称 数据类型以及长度 PRIMARY KEY;
……
); 为多个列定义 PRIMARY KEY 约束
CREATE TABLE 表名
(
列名称1 数据类型以及长度;
列名称2 数据类型以及长度;
……
PRIMARY KEY(列名称1,列名称2,……)
);
FOREIGN KEY 外键约束
一个表中的 FOREIGN KEY 外键约束指向另一个表中的 PRIMARY KEY,即给 列名称1 设置了外键约束,往列名称1插入数据,这个数据一定是要在FORFIGN KEY后面所跟的那个参照表的列名称中存在的值,外键约束了数据的完整性,不会插入错误的数据。
添加了外键之后,插入引用表的记录要么必须被引用表中被引用列的某条记录匹配,要么外键列的值必须设置为NULL。
每个表中的外键数目不限制唯一性,并且一个列只能引用一个外键,一个列可以被多个外键引用。
语法
CREATE TABLE 表名称
(
列名称1 数据类型及长度,
列名称2 数据类型及长度 FOREIGN KEY REFERENCES 参照表的表名称(参照表的列名称)
……
) MySQL使用语法
CREATE TABLE 表名
(
列名称 数据类型以及长度;
……
FOREIGN KEY (列名称) REFERENCES 参照表的表名称(参照表的列名称)
); 为多个列定义 FOREIGN KEY 约束
CREATE TABLE 表名
(
列名称1 数据类型以及长度;
列名称2 数据类型以及长度;
……
FOREIGN KEY(列名称1,列名称2……) REFERENCES 参照表的表名称(参照表的列名称1,参照表的列名称2)
);
CHECK 约束
CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
为多个列定义CHECK约束应使用AND关键字进行连接。
语法
CREATE TABLE 表名称
(
列名称 数据类型及数据长度 CHECK(值范围条件),
……
); 为表中多个列定义 CHECK 约束
CREATE TABLE 表名称
(
列名称1 数据类型及数据长度,
列名称2 数据类型及数据长度,
……
CHECK(列名称1值范围条件 AND 列名称2值范围条件 AND ……)
);
DEFAULT 约束
DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
建议创建数据库时使用默认值而不是允许值为NULL,这样可以有助于数据库管理和开发。
注意:大多数DBMS不允许使用函数作为默认值,只支持常量。
CREATE TABLE 表名称
(
列名称 数据类型及数据长度 DEFAULT 常量值,
……
);
AUTO_INCREMENT 自动递增约束
AUTO_INCREMENT可以在新记录插入表中时自动地创建唯一的数值(即进行自动增量),并且每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如通过使用AUTO_INCREMENT成为主键)。
注意:AUTO_INCREMENT 的默认开始值是 1,每条新记录自动递增 1。
语法
CREATE TABLE 表名称
(
列名称 数据类型及数据长度 AUTO_INCREMENT,
……
);
SQL约束(主键约束、外键约束、自动递增、不允许空值、值唯一、值默认、值限制范围)的更多相关文章
- SQL的主键和外键约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- SQL的主键和外键约束(转)
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- SQL语句建表、设置主键、外键、check、default、unique约束
· 什么是数据库? 存放数据的仓库. · 数据库和数据结构有什么区别? 数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题.数据结构研究一些抽象数据模型(ADT)和以及定义在该模 ...
- SQL 主键和外键约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- [转]SQL的主键和外键约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- MySql必知必会实战练习(四)主键、外键、sql约束、联结表
本博将对主键.外键.MySql数据库约束和联结表的相关特性进行总结和实战 1. 主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列),而这个承担标识作用的列称为主键 如果没有主键,数据的管理 ...
- SQL的主键和外键和唯一约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句
最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...
- sql server 建表,主键与外键约束
主键: 能唯一区分表中每一行 外键:为某表的一列,是另一个表的主键,外键定义了两表之间的联系 商品类别表 use eshopgocreate table category( name varchar( ...
- [每日一题] OCP1z0-047 :2013-08-18 禁用启用约束――主键与外键 ..................................61
正确答案:C 根据题意,测试结果如下: 1.创建表emp,并且设emp_no字段为主键,设mgr_no字段为外键. gyj@MYDB> create table emp 2 (emp_no nu ...
随机推荐
- linux命令之 tar
参数 -c 创建新归档 -d 比较归档和文件系统的差异 -r 追加文件到归档 -t 存档的内容列表 -x 提取归档所有文件 -C 改变解压目录 -f 使用归档文件或设备归档 -j bzip2 压缩 - ...
- jupyter notebook安装纪要
本次教程使用python工具pip安装.更多安装方式请参考官网. 1.升级pip工具到最新 2.运行安装执行 pip install jupyter 3.安装中 4.更改工作目录 4.1获取配置文件路 ...
- pyQT4和pyQT5的主要模块介绍
下面简单介绍一下pyQT4和pyQT5的主要模块 pyQT4 的主要模块 QtCore 模块包括了核心的非GUI功能,该模块用来对时间.文件.目录.各种数据类型.流.网址.媒体类型.线程或进程进行处理 ...
- C# — Socket通信实现
昨天晚上在网上查找资料,简单实现了C#开发的Socket通信,以下是具体的开发流程,我使用的是VS2017进行开发的: 一.服务器端: 1.新建一个项目,Windows控制台程序 2.重命名cs文件 ...
- [MicroPython]TurniBit开发板DIY自动窗帘模拟系统
一.准备工作 üTurnipBit 开发板 一块 ü下载数据线 一条 ü微型步进电机(28BYJ-48) 一个 ü步进电机驱动板(ULN2003APG) 一块 ü光敏传感器 一个 üTurnipBit ...
- 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...
- Java获取Window和Linux系统的项目ClassPath路径
不啰嗦,直接复制工具类 /** * 在windows和linux系统下均可正常使用 * Create by yster@foxmail.com 2018/6/6/006 14:51 */ public ...
- 使用C#创建SQLite控制台应用程序
本文属于原创,转载请注明出处,谢谢! 一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 ...
- 微信小程序开发平台新功能「云开发」快速上手体验
微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...
- 使用git将项目上传到github
使用git将项目上传到github(最简单方法) 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下 ...