(2-4)MySQL 自动编号及约束

本文深入解析MySQL中的各种约束,包括自动编号、主键、唯一约束和默认约束的使用方法及注意事项,帮助读者理解如何确保数据的完整性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 MySQL自动编号

2 MySQL 主键约束

2.1 AUTO_INCREMENT配合PRIMARY KEY使用

2.2 PRIMARY KEY单独使用

3 MySQL 唯一约束

4 MySQL 默认约束


1 MySQL自动编号

关键字:ANTO_INCREMENT

(1)自动编号,且必须与主键组合使用。

(2)默认情况下,起始值为1,每次增加量为1。

错误示例:

CREATE TABLE tb3(
    id SMALLINT UNSIGNED AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL
    );

 这里需要主键约束的知识。

2 MySQL 主键约束

2.1 AUTO_INCREMENT配合PRIMARY KEY使用

关键字:PRIMARY KEY;

(1)主键约束,每张表只能存在一个主键。

(2)主键保证记录的唯一性。

(3)主键自动为NOT NULL。

注意:AUTO_INCREMENT 必须和主键一块使用,但是主键不一定要和AUTO_INCREMENT一起使用。

继续tb3中AUTO_INCREMENT的创建

CREATE TABLE tb3(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(20) NOT NULL
  );

 

插入四条记录:

INSERT tb3(username) VALUES("Tom");
INSERT tb3(username) VALUES("John");
INSERT tb3(username) VALUES("Rose");
INSERT tb3(username) VALUES("Dilitar");

 

2.2 PRIMARY KEY单独使用

例子:创建一个不使用AUTO_INCREMENT主键约束的表

CREATE TABLE tb4(
    id SMALLINT UNSIGNED PRIMARY KEY,
    username VARCHAR(20) NOT NULL
  );

对主键赋值,但不允许赋相同的值。

INSERT tb4 VALUES(4,"John");
INSERT tb4 VALUES(22,"Tom");

 

3 MySQL 唯一约束

关键字:UNIQUE KEY

(1)唯一约束可以保证记录的唯一性。

(2)唯一约束的字段可以为空值(NULL)。

(3)每张数据表可以存在多个唯一约束。

创建UNIQUE KEY字段。

CREATE TABLE tb5(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(20) NOT NULL UNIQUE KEY,
    age TINYINT UNSIGNED
  );

插入记录:

INSERT tb5(username,age) VALUES("Tom",22);

 若插入两条“Tom”则会报错。

 

4 MySQL 默认约束

关键字:DEFAULT

默认值:当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

例子:创建一个默认约束的数据表

CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3'
);

 SHOW COLUMNS FROM tb6;

插入记录时,如果没有明确为字段赋值,则自动赋予默认值。 

INSERT tb6(username) VALUES("Tom");
SELECT * FROM tb6;

整理自:MySQL 初始默认约束 

### 修改 MySQL 表结构和完整性约束的方法 在 MySQL 中,`ALTER TABLE` 是用于修改现有表结构的关键字。以下是关于如何修改表结构以及设置或更改完整性约束的具体方法: #### 修改表结构 可以通过 `ALTER TABLE` 来执行多种操作,例如修改列定义、添加新列、删除列、重命名表等。 - **修改列的数据类型或属性** 使用 `MODIFY` 子句可以调整已有列的定义。例如,将 `departments` 表中的 `dep_id` 列数据类型更改为 `INT(4)` 并指定其不能为空: ```sql ALTER TABLE departments MODIFY dep_id INT(4) NOT NULL; ``` 这里的语法遵循了所提供的示例[^1]。 - **重命名表** 如果需要更改表名称,则可使用 `RENAME TO` 子句。例如,将 `your_table` 更名为 `my_table` 的 SQL 语句如下所示: ```sql ALTER TABLE your_table RENAME TO my_table; ``` 此外,还可以通过单独的 `RENAME TABLE` 命令实现相同功能[^3]: ```sql RENAME TABLE your_table TO my_table; ``` #### 设置或修改完整性约束 完整性约束确保数据库中数据的一致性和准确性。常见的完整性约束包括主键 (`PRIMARY KEY`)、唯一性 (`UNIQUE`) 和自动增长 (`AUTO_INCREMENT`) 等。 - **为主键或其他字段启用自增特性** 若要使某一列为自增型 (通常配合主键一起使用),可通过 `MODIFY` 或者 `CHANGE` 调整该列配置。比如让 `student_13` 表内的 `id` 字段成为长度为8位数且具备自动递增特性的整数值: ```sql ALTER TABLE student_13 MODIFY id INT(8) AUTO_INCREMENT PRIMARY KEY; ``` 上述命令综合实现了字段类型的转换及其作为主键的同时开启自动编号的功能[^2]。 - **增加新的约束条件** 添加额外的约束如唯一索引或者默认值设定也是可行的操作之一。假设要向某个已存在的表格里追加一栏叫做 email ,并规定它必须独一无二无重复项存在的话,那么应该这样入相应的SQL指令片段: ```sql ALTER TABLE users ADD COLUMN email VARCHAR(255) UNIQUE; ``` 综上所述,利用 `ALTER TABLE` 结合不同的子句能够灵活地完成对MySQL 数据库内各张表基本架构上的定制化需求处理过程。 ```sql -- 示例:完整的表结构调整与约束应用案例 USE TestDb1; -- 将 your_table 改名为 my_table ALTER TABLE your_table RENAME TO my_table; -- 对 my_table 执行进一步改动 ALTER TABLE my_table MODIFY column_name_new_type DATATYPE, -- 修改某列类型 DROP COLUMN unnecessary_column, -- 删除不需要的列 ADD CONSTRAINT unique_constraint UNIQUE(column_for_unique); -- 新建唯一性约束 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值