mysql UNSIGNED 和 AUTO_INCREMENT

关于 mysql 中 UNSIGNED 的解释百度百科如下图

这里写图片描述

但我们仔细一看会发现毛病,正整数是大于0的整数,但 NUSIGNED 确是可以为 0
的,具体如下图

这里写图片描述

所以在这里大家一定要记住 UNSIGNED 代表的是 无符号 而不是大于0
当 UNSIGNED 和 AUTO_INCREMENT 连用

AUTO_INCREMENT 代表自增,创建主键 UNSIGNED 和 AUTO_INCREMENT 连用 表示从0开始自增 (由0开始自增,所以第一个自增的id为 1 ) 但可以增加的范围为,不加 UNSIGNED 的两倍 。
举例如果主键类型为int 那么加UNSIGNED 主键可以取值为 1到 4294967295 如果不加则为 1 到 2147483647

### 关于 `BIGINT UNSIGNED AUTO_INCREMENT` `COMMENT` 注释 在 MySQL 中定义表结构时,可以使用 `BIGINT UNSIGNED AUTO_INCREMENT` 来设置一个自增的大整数类型的主键,并通过 `COMMENT` 添加描述性的注解。 #### 使用 `BIGINT UNSIGNED AUTO_INCREMENT` - **`BIGINT`**: 表示大整数类型,范围是从 `-9223372036854775808` 到 `9223372036854775807` 或者对于无符号 (`UNSIGNED`) 类型则是从 `0` 至 `18446744073709551615`. - **`UNSIGNED`**: 指定该列为非负数值. - **`AUTO_INCREMENT`**: 自动递增特性,每当插入新记录而未指定此列的具体值时会自动分配下一个可用的唯一编号. 例如,在创建名为 `student_copy` 的表格中,`id` 字段被声明为: ```sql CREATE TABLE student_copy ( id BIGINT unsigned auto_increment NOT NULL COMMENT '学生id', ... ); ``` 这段 SQL 定义了一个不可为空(`NOT NULL`)且带有自增长特性的 `id` 列,并附带了一条解释其用途的注释[^1]. #### 添加 `COMMENT` 注释 为了提高数据库设计文档化程度并便于维护人员理解各字段含义,可以在定义每一列的同时为其附加相应的注释。语法如下: ```sql column_name data_type [NULL | NOT NULL] [[DEFAULT default_value]] [AUTO_INCREMENT] [UNIQUE [KEY]] [COMMENT 'string'] ``` 其中 `'string'` 是你想要给这一列添加的文字说明。如上述例子中的 `enroll_date`, `name`, `deal_flag` 都有各自的注释来表明它们各自代表的信息: ```sql enroll_date DATE NOT NULL COMMENT '注册时间', NAME VARCHAR(18) DEFAULT '' NOT NULL COMMENT '学生姓名', deal_flag TINYINT(1) DEFAULT 0 NOT NULL COMMENT '是否删除 0-否 1-是' ``` 另外值得注意的是,如果希望在一个已存在的表里新增一列并且也想为此列加上注释,则可以通过修改表结构的方式来实现这一点[^2]. ```sql ALTER TABLE t_app ADD COLUMN test_id INT NOT NULL DEFAULT 0 AFTER aid COMMENT '测试ID'; ``` 这里展示了如何向现有表 `t_app` 插入一个新的整数列 `test_id` 并放置在其后的特定位置上,同时还指定了默认值注释内容。 综上所述,合理运用这些功能可以帮助构建更加清晰易懂的数据模型,同时也方便后续开发过程中快速定位各个字段的作用与意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值