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

相关推荐
Elastic 中国社区官方博客2 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪4 小时前
两次连接池泄露的BUG
java·数据库
TDengine (老段)5 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq7422349845 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE6 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle
Dxy12393102166 小时前
MySQL的SUBSTRING函数详解与应用
数据库·mysql
码力引擎6 小时前
【零基础学MySQL】第十二章:DCL详解
数据库·mysql·1024程序员节
杨云龙UP7 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql
l1t7 小时前
利用DeepSeek辅助修改luadbi-duckdb读取DuckDB decimal数据类型
c语言·数据库·单元测试·lua·duckdb
安当加密7 小时前
Nacos配置安全治理:把数据库密码从YAML里请出去
数据库·安全