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)有了默认值约束后, 当传递字段对应的值时,会传递的具体值为准。

相关推荐
若兰幽竹14 分钟前
【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
数据库·python
宇钶宇夕16 分钟前
S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
运维·服务器·数据库·程序人生·自动化
周杰伦的稻香25 分钟前
MySQL密码管理器“mysql_config_editor“
数据库·mysql
云朵大王29 分钟前
SQL 视图与事务知识点详解及练习题
java·大数据·数据库
czhc11400756631 小时前
LINUX712 MYSQL;磁盘分区;NFS
数据库·mysql·adb
不太可爱的大白2 小时前
Mysql:分库分表
数据库·mysql
十五年专注C++开发2 小时前
hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
开发语言·数据库·c++·redis·缓存
bianguanyue3 小时前
SQLite密码修改故障排查:RSA加密随机性导致的数据库匹配问题
数据库·sqlite·c#
亚马逊云开发者4 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
张先shen4 小时前
亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战
数据库·redis·缓存