前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL数据库】数据库的约束

【MySQL数据库】数据库的约束

原创
作者头像
小小程序员
发布2022-12-05 09:59:36
5.7K0
发布2022-12-05 09:59:36
举报
文章被收录于专栏:小小程序员——DATA

目录

Mysql约束(constraint)

基本介绍

主键约束(primary key)

自增长约束(auto_increment)

非空约束(not null)

唯一性约束(unique)

默认约束(default)

零填充约束(zerofill)


Mysql约束(constraint)

基本介绍

MySQL数据库通过约束(constraints)防止无效的数据进入到数据库中,以保护数据的实体完整性。 MySQL中主要有六种约束,分别是:主键约束(primary key),非空约束(not null),自增长约束(auto_increment),默认约束(default) ,零填充约束(zerofill),唯一性约束(unique)。

主键约束(primary key)

主键约束相当于唯一约束+非空约束。每个表只能有一个唯一索引。关键字primary key。当主键创建时,系统默认会在所在列和列组合上建立唯一索引

代码语言:javascript
复制
--增加单列主键
alter table <表名> add primary key(字段列表);

--删除主键
alter table <数据表名> drop primary key;

--例子
create table emp1( eid int primay key, name VARCHAR(20), deptId int, salary double );

注意

1.当主键是由多个字段组成时,不能直接在字段名后面声明主键约束

2.一张表只能有一个主键,联合主键也是一个主键

自增长约束(auto_increment)

默认情况下,自增长约束(auto_increment)的初始值是 1,每新增一条记录,字段值自动加 1。 一个表中只能有一个字段使用 auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。

代码语言:javascript
复制
--格式
字段名 数据类型 auto_increment 

--例子
create table t_user1( id int primary key auto_increment, name varchar(20) );

注意:

auto_increment约束的字段必须具备 NOT NULL 属性。

auto_increment约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT)。 auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_increment就会失效

非空约束(not null)

顾名思义:非空约束(not null)就是指其字段的值不能为空。

代码语言:javascript
复制
--创建表
<字段名><数据类型> not null;

--修改表
alter table 表名 modify 字段 类型 not null;


--例子
create table t_user6 ( id int , 
name varchar(20) not null, address varchar(20) not null );

唯一性约束(unique)

唯一约束(Unique Key)是指所有记录中字段的值不能够重复出现。

代码语言:javascript
复制
--创建表
<字段名> <数据类型> unique

--修改表
alter table 表名 add constraint 约束名 unique(列);

--删除
alter table <表名> drop index <唯一约束名>;

默认约束(default)

默认约束用于给表中字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,系统会自动为这个字段插入默认值。

代码语言:javascript
复制
--创建表
<字段名> <数据类型> default <默认值>;

--修改表
--格式
alter table 表名 modify 列名 类型 default 默认值;
alter table <表名> modify column <字段名> <类型> default null;

零填充约束(zerofill)

插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的0。

当使用zerofill 时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0~256。

代码语言:javascript
复制
--创建表
create table t_user12 ( id int zerofill , -- 零填充约束 
name varchar(20) );

--修改表
alter table t_user12 modify id int zerofill;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mysql约束(constraint)
    • 基本介绍
      • 主键约束(primary key)
        • 自增长约束(auto_increment)
          • 非空约束(not null)
            • 唯一性约束(unique)
              • 默认约束(default)
                • 零填充约束(zerofill)
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档