三、约束

本文介绍了数据库中数据约束的概念及实现方式,包括默认值、非空、唯一、主键等,并详细阐述了如何创建及使用外键约束,以及如何实施级联操作。此外,还探讨了索引的作用及不同类型的索引创建方法。

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

一、数据约束

数据约束可以在建表时设定,也可以在建表后通过修改表结构来添加,如果需要为约束添加别名,可以在约束前面添加CONSTRAINT name ...

1.默认值-DEFAULT

DEFAULT的值可以为NULL

ALTER TABLE student MODIFY id INT DEFAULT 0;
2.非空-NOT NULL
ALTER TABLE student MODIFY id INT NOT NULL;
3.唯一-UNIQUE
  • 注意:UNIOUE的字段可为NULL,当为NULL时,不判断是否唯一
ALTER TABLE student MODIFY id INT UNIQUE;
4.主键-PRIMARY KEY
  • 单主键
ALTER TABLE student MODIFY id INT PRIMARY KEY;
  • 复合主键
ALTER TABLE student ADD PRIMARY KEY (id,name);
  • 删除主键
ALTER TABLE student DROP PRIMARY KEY;
5.自增长-AUTO_INCREMENT
  • 前提: 该字段是主键
ALTER TABLE student id INT AUTO_INCREMENT;
ALTER TABLE student id INT PRIMARY KEY AUTO_INCREMENT;
6.外键

前提: 外键对应字段应该是相同类型、长度,且表中不存在冲突数据;所参考的外键必须是该表中的主键

  • 添加外键
alter table testA add constraint testA_testB_fk foreign key (b_id) references testB(id);
  • 删除外键
alter table testA drop foreign key testA_testB_fk;
7.级联

前提:必须在外键的基础上使用
- ON UPDATE CASCADE: 更新时,同步更新
- ON DELETE CASCADE/SET NULL: 删除时,删除/置空

ALTER TABLE testA ADD CONSTRAINT testA_testB_fk FOREIGN KEY (b_id) REFERENCES testB(id) ON UPDATE CASCADE ON DELETE CASCADE;
  • 说明: 当testB中的数据被删除或修改时,testA中关联外键的数据也会同步概统
8.字段校验-CHECK
ALTER TABLE student ADD CHECK (id > 0 AND name = 'no');

二、索引

  • 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
  • 用户无法看到索引,它们只能被用来加速搜索/查询。
  • 更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
1.简单索引
CREATE INDEX simple_index ON testA (id, name);
2.唯一索引
CREATE UNIQUE INDEX simple_index ON testA (id, name);
3.删除索引
ALTER TABLE testA DROP INDEX simple_index;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值