文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL索引概述

2024-04-02 19:55

关注

MySQL索引概述
索引的优点:
1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2.可以加快数据的检索速度。
索引缺点:
1.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
2.索引需要占据物理空间。

索引的类型:
1.INDEX:普通索引
2.PRIMARY KEY:主键
3.UNIQUE:唯一索引
4.FOREIGN KEY:外键
5.FULLTEXT:群文索引

1.INDEX:普通索引
1.1一个表中可以有多个INDEX字段。
1.2字段的值允许有重复,且可以赋NULL值。
1.3经常把做查询条件的字段设置为INDEX字段。
1.4INDEX字段的KEY标志是MUL。

insert into 库名.表名 values(值列表); #插入表记录
select * from 库名.表名; 查看表的所有记录

例:建表的时候指定索引字段
-INDEX(字段1),INDEX(字段2)...
mysql>create database ku;
mysql>create table ku.abc(
>id    int(2) not null,
>name  varchar(4)  not null,
>age   int(3)  not null,
>index(name),index(age)               
>);

mysql>desc ku.abc;
Field  Type  Null  Key   Default   Extra
..   ..     ..      MUL    ..     ..

mysql>insert into ku.abc values(1,"wang",23);
mysql>select * from ku.abc;

在已有创建的表中设置INDEX字段
格式:create index 索引名 on 库名.表名(字段);

删除指定表的索引字段
格式:drop index 索引名 on 库名.表名;

例:
mysql>create index  xixi on ku.abc(id);
mysql>drop  index  xixi on ku.abc;

查看表的索引信息
格式:show index from 库名.表名;

例:
mysql>show index from ku.abc\G;
......
Index_type: BTREE(默认使用B树算法)
......

默认使用的索引类型:BTREE(二叉树) hash B+Tree

2.PRIMARY KEY:主键
2.1一个表中只能有一个primary key字段
2.2对应字段的值不允许有重复,且不允许赋NULL值。
2.3如果有多个字段都作为primary key,称为复合主键,必须一起创建。
2.4主键字段的KEY标志是PRI。
2.5通常与AUTO_INCREMENT连用。
2.6经常把表中能够唯一标示记录的字段设置为主键字段。(如记录编号字段)

注释:
主键与auto_increment 连用
字段值自动增长 +1
主键 并且 数值类型

例:建表的时候指定主键字段
-PRIMARY KEY(字段名)
mysql>create table ku.abc2(
>id  int(3)  auto increment,
>name  varchar(5)  not null,
>age   int(2)  not null,
>primary key(id)
>);

mysql>desc ku.abc2;
 Field  Type  Null  Key  Default    Extra
..    ..    ..     PRI     ..      ..

mysql>insert into ku.abc2 values(2,"wang",23);
mysql>select * from ku.abc2;

在已创建的表中设置PRIMARY KEY字段
格式:alter table 库名.表名 ADD PRIMARY KEY(字段名);

删除指定表的PRIMARY KEY字段
格式:alter table 库名.表名 DROP PRIMARY KRY;
注意:如果有自增属性(AUTO_INCREMENT),必须先删除。

例:
mysql>alter tabel ku.abc2  drop primary key;
mysql>alter table ku.abc2 add primary key(id);

3.UNIQUE:唯一索引
3.1一个表中可以有多个UNIQUE字段。
3.2对应字段的值不允许有重复。
3.3UNIQUE字段的KEY标志是UNI。
3.4UNIQUE字段的值允许为NULL,当将其修改为不允许为NULL时,则此字段限制于主键相同,KEY会变为PRI。

例:建表的时候指定UNIQUE字段
-UNIQUE(字段1),UNIQUE(字段2)...
mysql>create table ku.abc3(
>id char(6),
>name  varchar(4)  not null,
>age int(3)  not null,
>unique(id),unique(name),unique(age)
>);

mysql>desc ku.abc3;
Field   Type    Null      Key    Default   Extra
..     ..    YES    UNI     ..      ..

mysql>insert into ku.abc3 values(3,"wang",23);
mysql>insert into ku.abc values(4,"lisi",23);
mysql>select * from ku.abc3;

在已创建的表中设置UNIQUE字段
格式:create unique index unique字段名 on 库名.表名(字段名);

删除指定表的UNIQUE字段
格式:drop index unique字段名 on 库名.表名(字段名);

例:
mysql>drop  index name on  ku.abc3; #于删除INDEX索引的方法相同。
mysql>create unique  index name on ku.abc3(age);

4.FOREIGN KEY:外键
4.1让当前表字段的值在另一个表字段的值中的范围内选择。

外键的使用条件:
1.表的存储引擎必须是innodb。
2.两表的字段类型要一致。
3.被参照字段必须要是主键类型(PRIMARY KEY)。

基本用法:
格式:foreign key(表A的字段名) references 表B(字段名)
on update cascade on delete cascade #参照表为B,即从B表字段的值中的范围内选择。

例:
提示:被参照字段必须要是主键类型(PRIMARY KEY)。
mysql>create table  ku.abc4(
>id  int(4),
>name char(5),
>foreign key(name),
>references  abc3(name),
>on update  cascade
>on  delete cascade
>engine=innodb
>);

删除外键字段
格式:alter table 表名 drop foreign key 约束名;

例:
mysql>show create table  ku.abc4\G;
...
CONSTRAINT `xxx`    #`xxx`里面是约束名
.....

mysql>alter table ku.abc4 drop foreigen key xxx ;
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯