SQL约束

目录

1.常见的SQL约束

[1.1 添加主键约束](#1.1 添加主键约束)

[1.2 单独添加主键约束](#1.2 单独添加主键约束)

[1.3 删除主键约束](#1.3 删除主键约束)

[1.4 设置自动增长](#1.4 设置自动增长)

2.添加非空约束

3.添加唯一约束

4.添加默认值约束


我们已知道,创建数据表语法:

sql 复制代码
create table 表名(
    字段名1 数据类型(长度) [约束],
    字段名2 数据类型(长度) [约束],
    字段名3 数据类型(长度) [约束],
    ...
) engine = 引擎名 default charset utf8;

我们会发现字段名的结尾处可以添加SQL约束。

SQL约束是用于指定字段数据的规则,可以保证数据更加精确、可靠。 通俗地说,SQL约束就是数据在类型的基础上【增加了额外要求】。

1.常见的SQL约束

对于SQL约束,要注意:

(1)SQL约束不是必须的,而是为了让SQL更加规范而存在;

(2)在实际应用中,可以对字段同时设定多个SQL约束,且都是在创建数据表时进行设定。

1.1 添加主键约束

在创建表时添加主键约束语法:

sql 复制代码
create table 表名(
    字段名 数据类型(长度) primary key [其他约束],
    ...
) engine = 引擎名 default charset utf8;

说明:

(1)给primary key主键约束的字段设定值时,不允许出现重复值;[唯一性]

(2)主键约束列不能包含null值;[非空]

(3)每个表都应该有一个主键约束,且每个表只能有一个主键。

1.2 单独添加主键约束

除了可以在数据表添加主键约束外,还可以单独添加主键约束,语法:

sql 复制代码
# 创建表后,使用alter table关键字添加主键
alter table 表名 add primary key(字段名);

此方式不常用,了解即可。

1.3 删除主键约束

给有主键约束的数据表删除主键约束,语法:

sql 复制代码
# 使用alter table关键字删除主键
alter table 表名 drop primary key;

说明: 当删除主键约束后,字段依旧有非空约束,不能为空。

1.4 设置自动增长

在创建表时让主键约束字段为自动增长[auto],语法:

sql 复制代码
create table 表名(
	字段名 数据类型(长度) primary key auto_increment,
	...
) engine = 引擎名 default charset utf8;

说明:

(1)自动增长列的数据类型必须是整型;

(2)自动增长列必须为X键(例如主键、外键)。

当给数据字段设定了主键约束后,则: (1)值是唯一的; (2)值是非空的。

2.添加非空约束

语法:

sql 复制代码
create table 表名(
	字段名 数据类型(长度) [其他约束] not null,
	...
) engine = 引擎名 default charset utf8;

说明:

(1)当设定主键约束后,值默认是非空的;

(2)当给某列设定为not null后,在添加数据时必须向该字段传递非null值。

当设定为非空约束后,则:

(1)not null约束强制字段不接受null值;

(2)not null约束强制字段传递数据时,必须有数值.

3.添加唯一约束

语法:

sql 复制代码
create table 表名(
	字段名 数据类型(长度) [其他约束] unique,
	...
) engine = 引擎名 default charset utf8;

说明:

(1)每个表可以有多个unique唯一约束,但是每个表只能有一个primary key主键约束;

(2)当设定为某字段唯一约束后,给该字段添加已有值,则报错。

设定为唯一约束后,要了解:

(1)unique约束用于唯一标识数据表中的每条数据;

(2)primary key字段默认唯一;

(3)unique和primary key约束均为列提供了唯一性保证

当给数据字段设定了唯一约束后,则:值是唯一的。 通俗地说,当给某字段设定为unique后,在添加数据时若传递已有值,会出错。

4.添加默认值约束

语法:

sql 复制代码
create table 表名(
	字段名 数据类型(长度) [其他约束] default 值,
	...
) engine = 引擎名 default charset utf8;

说明:

(1)每个表可以有多个默认值约束;

(2)设置了默认值后,若不传递数值,则直接使用默认值。

当设定为默认值约束后,则:

(1)有了默认值约束后, 当不传递字段对应的值时,会使用默认值;

(2)有了默认值约束后, 当传递字段对应的值时,会传递的具体值为准。

相关推荐
指尖上跳动的旋律1 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶2 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
lucky_syq2 小时前
Hive SQL和Spark SQL的区别?
hive·sql·spark
m0_748244832 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝3 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067123 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!3 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱3 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence3 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236583 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库