MySQL约束和索引
索引
作用:快速定位特定数据,提高查询效率,确保数据的唯一性,快速定位特定数据;可以加速表和表之间的连接,实现表与表之间的参照完整性,使用分组和排序语句进行数据
检索时,可以显著减少分组和排序的时间全文检索字段进行搜索优化;
索引的种类:
1、主键索引(primary key):
alter table td_user add primary key(a)
2、唯一索引(unique):
CREATE UNIQUE INDEX indexName ON mytable(username(length))
如:create unique index index_unique_b on td_user(b(20))
3、常规索引(index): CREATE INDEX indexName ON table_name (column_name)
如:create index index_public_c on td_user(c)
4、全文索引(full text);
alter table td_user add fulltext index_fulltext_d(d)
CREATE TABLE `td_user` ( `a` varchar(20) NOT NULL, `b` varchar(20) DEFAULT NULL, `c` varchar(30) DEFAULT NULL, `d` varchar(30) DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `index_unique_b` (`b`), KEY `index_public_c` (`c`(20)), FULLTEXT KEY `index_fulltext_d` (`d`) )
约束
作用:是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具(约束);
1、非空约束:not null;
指示某列不能存储 NULL 值
2、唯一约束:unique();uk
创建唯一约束会自动创建唯一索引
unique约束的字段,要求必须是唯一的,但null除外即可以有多个null
3、主键约束:primary key();pk
创建主键约束会自动创建主键索引
主键约束=not null + unique,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
4、外键约束:foreign key () references (参考),fk
创建外键约束会创建外键索引
保证一个表中的数据匹配另一个表中的值的参照完整性。语法:constraint fk_dept_id foreign key (dept_id) references dept(dept_id);
5、自增约束:auto_increment
6、默认约束:default
给定默认的值
7、检查性约束:check
保证列中的值符合指定的条件。
示例:
create table member( id int(10), phone int(15) unsigned zerofill, name varchar(30) not null, constraint uk_name unique(name), constraint pk_id primary key (id), constraint fk_dept_id foreign key (dept_id,字段2) references dept(主表1)(dept_id) );
//constraint uk_name 可以省略不写。uk_name 唯一约束名称;注:
//pk_id 主键约束名称;
//fk_dept_id 外键约束名称
外键约束
用于让两张表建立连接,从而保证数据的完整性和一致性
此时,emp表的dept_id是外键,需要受dept(主表)的约束
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本