前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【MySQL】005.MySQL表的约束(上)

【MySQL】005.MySQL表的约束(上)

作者头像
_孙同学
发布于 2025-04-23 00:39:16
发布于 2025-04-23 00:39:16
13100
代码可运行
举报
文章被收录于专栏:技术分享技术分享
运行总次数:0
代码可运行

表的约束

1. 约束概念

真正约束字段的是数据类型,但数据类型约束很单一,需要一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。就好比我们在vs上编译代码时,vs会对我们进行各种约束,保证我们的代码在语法上是正确的。

约束本质是通过技术手段倒逼程序员插入正确的数据。反过来,站在mysql的视角,插入进来的数据,都是符合数据约束的。

约束的最终目标:保证数据的完整性和可预期性。

2. 空属性

2.1 基本语法

两个值:null(默认的)和not null (不为空)

  • null是不能参与数据运算的
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select null;
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

mysql> select 2+null;
+--------+
| 2+null |
+--------+
|   NULL |
+--------+
1 row in set (0.00 sec)
2.2 使用示例

创建一个班级表,包含班级名和班级所在的教室。 站在正常的业务逻辑中:

  • 如果班级没有名字,你不知道你在哪个班级
  • 如果教室名字可以为空,就不知道在哪上课

所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table if not exists myclass(
    ->     class_name varchar(20) not null,
    ->     class_room varchar(20) not null,
    ->     other varchar(20)
    ->     );
Query OK, 0 rows affected (0.04 sec)

mysql> desc myclass;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| class_name | varchar(20) | NO   |     | NULL    |       |
| class_room | varchar(20) | NO   |     | NULL    |       |
| other      | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

插入数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//全插入
mysql> insert into myclass (class_name,class_room,other) values ('高三二班','101教室','普通班');
mysql> select * from myclass;
+--------------+------------+-----------+
| class_name   | class_room | other     |
+--------------+------------+-----------+
| 高三二班     | 101教室    | 普通班    |
+--------------+------------+-----------+

//最后一行不做插入
mysql>insert into myclass (class_name,class_room) values ('高三三班','102教室');
mysql> select * from myclass;
+--------------+------------+-----------+
| class_name   | class_room | other     |
+--------------+------------+-----------+
| 高三二班     | 101教室    | 普通班    |
| 高三三班     | 102教室    | NULL      |
+--------------+------------+-----------+

//只插入班级,我们会发现不让我们插入
mysql>insert into myclass (class_name) values ('高三三班');
ERROR 1364 (HY000): Field 'class_room' doesn't have a default value

//插入教室为NULL,我们会发现提示我们class_room不能为空
mysql> insert into myclass (class_name,class_room) values ('高三三班',NULL);
ERROR 1048 (23000): Column 'class_room' cannot be null

3. 默认值

3.1 基本概念

默认值: 某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

3.2 使用示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table if not exists t12(
    -> name varchar(20) not null,
    -> age tinyint unsigned default 18,
    -> gender char(1) default '男'
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> desc t12;
+--------+------------------+------+-----+---------+-------+
| Field  | Type             | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| name   | varchar(20)      | NO   |     | NULL    |       |
| age    | tinyint unsigned | YES  |     | 18      |       |
| gender | char(1)          | YES  |     ||       |
+--------+------------------+------+-----+---------+-------+

插入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into t12 (name,age,gender) values ('张三',19,'女');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t12;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   19 ||
+--------+------+--------+
1 row in set (0.00 sec)
//插入时并未指明性别和年纪
mysql> insert into t12 (name) values ('李四');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t12;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   19 ||
| 李四   |   18 ||
+--------+------+--------+
2 rows in set (0.00 sec)

default如果设置了,用户将来插入如果有具体的数据,就用用户给的,如果没有,就用默认的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table t13(
    -> name varchar(20) not null,
    -> age tinyint default 18,
    -> gender char(1) not null default '男'
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> desc t13;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(20) | NO   |     | NULL    |       |
| age    | tinyint     | YES  |     | 18      |       |
| gender | char(1)     | NO   |     ||       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t13 (name,age,gender) values (NULL,'18','男');
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into t13 (age,gender) values ('18','男');//如果我们没有明确指定一列要插入,用的是default,如果建表中对应列默认没有设置default值,将无法插入。
ERROR 1364 (HY000): Field 'name' doesn't have a default value
mysql> insert into t13 (name,age,gender) values ('张三','20',NULL);
ERROR 1048 (23000): Column 'gender' cannot be null
mysql> insert into t13 (name,age) values ('张三','20');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t13;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   20 ||
+--------+------+--------+

mysql> insert into t13 (name,age,gender) values ('张三',NULL,'男');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t13 (name,gender) values ('张三','男');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t13;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   20 ||
| 张三   | NULL ||
| 张三   |   18 ||
+--------+------+--------+
3 rows in set (0.00 sec)
  1. 如果我们没有明确指定一列要插入,用的是default,如果建表中对应列默认没有设置default值,将无法插入。
  2. defaultnot null不冲突,而是互相补充的。
  3. nullnot null是作用在用户想插的时候。
  4. default是作用在用户忽略了这一列的时候,如果设置了使用默认值,如果没有设置,直接报错。

如果我们在建表时没有设置默认值,mysql会对我们的表进行优化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table t14(
    -> name varchar(20),
    -> age varchar(20)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show create table t14 \G;
*************************** 1. row ***************************
       Table: t14
Create Table: CREATE TABLE `t14` (
  `name` varchar(20) DEFAULT NULL,
  `age` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

设置了not nullmysql就不设置默认的default了。

4. 列描述

4.1 基本概念

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。

4.2 使用示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql>  create table if not exists t15(
    -> name varchar(20) not null comment '这个是用户的用户名',
    -> age tinyint unsigned default 18 comment '这个是用户的年纪',
    -> gender char(1) default '男' comment '这个是用户的性别'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> desc t15;
+--------+------------------+------+-----+---------+-------+
| Field  | Type             | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| name   | varchar(20)      | NO   |     | NULL    |       |
| age    | tinyint unsigned | YES  |     | 18      |       |
| gender | char(1)          | YES  |     ||       |
+--------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t15 (name,age,gender) values ('张三',19,'女');
Query OK, 1 row affected (0.07 sec)
//通过desc查看不到注释信息:
mysql> select * from t15;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   19 ||
+--------+------+--------+
1 row in set (0.00 sec)
//通过show可以看到:
mysql> show create table t15;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                               |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t15   | CREATE TABLE `t15` (
  `name` varchar(20) NOT NULL COMMENT '这个是用户的用户名',
  `age` tinyint unsigned DEFAULT '18' COMMENT '这个是用户的年纪',
  `gender` char(1) DEFAULT '男' COMMENT '这个是用户的性别'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci                           |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

首先这个数据不是给数据库看的,它是给数据库的管理员

5. zerofill

zerofil是一种关于显示方面的约束

5.1 基本功能
  1. 自动填充零:当显示数值时,如果数值的位数小于列定义的宽度,MySQL 会在左侧用零填充。
  2. 隐式 UNSIGNED:从 MySQL 8.0.17 开始,ZEROFILL 属性已被标记为已弃用,并且使用它会自动将列设置为 UNSIGNED(无符号)。
5.2 使用示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE example (
    id INT(5) ZEROFILL,
    code INT(10) ZEROFILL
);

INSERT INTO example VALUES (12, 12345);

查询结果会显示为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-------+------------+
| id    | code       |
+-------+------------+
| 00012 | 0000012345 |
+-------+------------+

MySQL 8.0 中的变化

弃用通知:从 MySQL 8.0.17 开始,ZEROFILL 已被标记为弃用,未来版本可能会移除。

替代方案:建议使用 LPAD 函数或应用程序逻辑来实现零填充效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT LPAD(column_name, desired_length, '0') FROM table_name;

与显示宽度结合ZEROFILL 需要与显示宽度(如 INT(5))一起使用,但显示宽度本身在 MySQL 8.0 中也已变得不那么重要。

5.3 注意事项
  • ZEROFILL 只影响显示格式,不影响实际存储的值
  • 它不适用于 FLOATDOUBLE 类型
  • 在 MySQL 8.0 中,考虑迁移到其他格式化方法,因为此功能可能在未来版本中移除

虽然 ZEROFILL 仍然可以在 MySQL 8.0 中使用,但建议在新应用中避免使用它,转而采用更灵活的格式化方法。

6. 主键

6.1 基本概念

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键(不意味着一个表中的主键只能添加一列,一个主键可以被添加到一列或者多列中【复合主键】);主键所在的列通常是整数类型。

6.2 使用示例
  • 创建表的时候直接在字段上指定主键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table if not exists test_key(
    -> id int unsigned primary key comment '这个是学生的学号',
    -> name varchar(20) not null
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> desc test_key;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int unsigned | NO   | PRI | NULL    |       |  <= key 中 pri表示该字段是主键
| name  | varchar(20)  | NO   |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> show create table test_key \G;
*************************** 1. row ***************************
       Table: test_key
Create Table: CREATE TABLE `test_key` (
  `id` int unsigned NOT NULL COMMENT '这个是学生的学号',
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
  • 主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into test_key values (1,'刘备');
ERROR 1062 (23000): Duplicate entry '1' for key 'test_key.PRIMARY'
  • 有了主键可以准确性的对数据进行增删查改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select *from test_key;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
|  2 | 刘备   |
+----+--------+
2 rows in set (0.00 sec)
mysql> select *from test_key where id=2;
+----+--------+
| id | name   |
+----+--------+
|  2 | 刘备   |
+----+--------+
1 row in set (0.00 sec)

mysql> update test_key set name='曹老板' where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from test_key;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 张飞      |
|  2 | 曹老板    |
+----+-----------+
2 rows in set (0.00 sec)
  • 当表创建好以后但是没有主键的时候,可以再次追加主键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter table 表名 add primary key(字段列表)
  • 删除主键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter table 表名 drop primary key;
  • 复合主键
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table pick_course(
    -> id int unsigned,
    -> course_id int unsigned comment '课程编号',
    -> score tinyint unsigned comment '这个学生这门课程考的分数',
    -> primary key (id,course_id)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> desc pick_course;
+-----------+------------------+------+-----+---------+-------+
| Field     | Type             | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| id        | int unsigned     | NO   | PRI | NULL    |       |
| course_id | int unsigned     | NO   | PRI | NULL    |       |
| score     | tinyint unsigned | YES  |     | NULL    |       |
+-----------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into pick_course values(12346,1,90);
Query OK, 1 row affected (0.00 sec)

mysql> insert into pick_course values(12347,1,90);
Query OK, 1 row affected (0.01 sec)

mysql> insert into pick_course values(12346,1,90); //主键冲突
ERROR 1062 (23000): Duplicate entry '12346-1' for key 'pick_course.PRIMARY'
mysql> insert into pick_course values(12346,1,80);
ERROR 1062 (23000): Duplicate entry '12346-1' for key 'pick_course.PRIMARY'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【MySql】表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key 。
平凡的人1
2023/10/15
5180
【MySql】表的约束
初谈表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key
南桥
2024/08/05
1200
初谈表的约束
MySQL数据库:表的约束
表的约束,实质上就是用数据类型去约束字段,但是数据类型的约束手法很单一,比如,我们在设置身份证号这个字段,数据类型唯一起的约束是它属于char类型或者varchar类型,不能是浮点型也不能是日期时间类型,但是这样还不够,身份证号需要有唯一性,是每个合法公民的唯一标识。因此需要额外增加一些手段去进行约束,以便更好的保证数据的合法性。
二肥是只大懒蓝猫
2023/10/13
8400
MySQL数据库:表的约束
表的约束(MySQL)
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
ljw695
2025/05/31
740
表的约束(MySQL)
MySQL数据库表约束详解
表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。
用户11316056
2025/02/22
4550
MySQL数据库表约束详解
MySQL:表的约束
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。反过来,站在MySQL角度,凡是插入进来的数据,都是符合数据约束的!
小灵蛇
2024/11/22
3400
MySQL:表的约束
mysql-完整性约束
mysql> create table tb1(id int not null default 2,num int not null);  # 创建tb1表并约束
py3study
2018/08/03
8710
深入浅出:掌握MySQL表约束与数据完整性设计
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。
用户11286421
2025/03/20
1390
深入浅出:掌握MySQL表约束与数据完整性设计
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
这篇文章只是对以前的内容作个详细补充,想要速成操作的,可以参考这篇博客 【MySQL学习】:关系数据库标准语言SQL
IsLand1314
2025/02/09
1710
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
MySQL表的完整性约束
  为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。
changxin7
2019/09/10
3.6K0
MySQL之表的约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 Z
人生不如戏
2018/04/10
4.9K0
【MySQL】数据库约束
喜欢做梦
2025/04/20
1990
【MySQL】数据库约束
数据库约束-主键约束-唯一约束-非空约束-默认值
约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
Devops海洋的渔夫
2022/01/17
6.7K0
数据库约束-主键约束-唯一约束-非空约束-默认值
第13章_约束
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
程序员Leo
2023/08/07
6310
第13章_约束
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
在MySQL数据库中,约束是一种对数据表中数据进行限制和检查的方法,可以保证数据表中数据的完整性和一致性。本文将深入剖析MySQL中的各种约束,包括非空约束、唯一性约束、主键约束、自增列、外键约束、默认值约束以及CHECK约束等等,同时结合开发场景给出约束使用和实践的技巧和方法,帮助读者更好地掌握MySQL中数据表相关操作的技巧和方法。
默 语
2024/11/20
5040
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
MySQL数据库2表的增删改查
每个字段由若干按照某种界限划分的相同数据类型的数据项组成,这里指的数据表中的列,一列就是一个字段
GH
2019/12/12
13.5K0
2024Mysql And Redis基础与进阶操作系列(4)作者——LJS[含MySQL FOREIGN KEY、CHECK 、DEFAULT 约束举例说明等详解步骤及常见报错问题所对应的解决方法]
例如:学生表、课程表、选课表:选课表的学生和课程要分别参考学生表和课程表,学生表和课程表是 主表,选课表是从表。
盛透侧视攻城狮
2024/10/22
2260
2024Mysql And Redis基础与进阶操作系列(4)作者——LJS[含MySQL FOREIGN KEY、CHECK 、DEFAULT 约束举例说明等详解步骤及常见报错问题所对应的解决方法]
表——完整约束性规则(键)
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: primary key (PK) 标识该字段为该表的主键,可以唯一的标识记录 foreign key (FK) 标识该字段为该表的外键 not null 标识该字段不能为空 unique key (UK) 标识该字段的值是唯一的 auto_increment 标识该字段的值自动增长(整数类型,而且为主键) default 为该字段设置默认值 unsigned 无符号 z
用户1214487
2018/01/23
2.5K0
MySQL(数据类型和完整约束)
default默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
全栈程序员站长
2022/07/21
1K0
再谈表的约束
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。 自增长的特点:
南桥
2024/08/15
1250
再谈表的约束
相关推荐
【MySql】表的约束
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 表的约束
    • 1. 约束概念
    • 2. 空属性
      • 2.1 基本语法
      • 2.2 使用示例
    • 3. 默认值
      • 3.1 基本概念
      • 3.2 使用示例
    • 4. 列描述
      • 4.1 基本概念
      • 4.2 使用示例
    • 5. zerofill
      • 5.1 基本功能
      • 5.2 使用示例
      • 5.3 注意事项
    • 6. 主键
      • 6.1 基本概念
      • 6.2 使用示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档