day03
-
设置了自动步长字段,可以不用手动插入值,由系统提供的默认值和默认的步长自动增加,例如学号字段
要求:
-
只有主键才能设置
-
只有数值型字段
-
一张表最多只能设置一个
设置方法:
create table 表名(
字段 类型 primary key auto_increment,
);
设置初始值:
-
通过第一次手动插入数据初始化
-
如果一开始就不提供该字段的数据,则默认从1开始
步长设置:
-
默认步长是1
-
set auto_increment_increment= value;设置整个数据库的步长
二、索引
索引是一种提升查询速度的技术,如果把数据库看作一本字典,那么索引就是字典的目录
创建索引:
create table 表名(
...
index [索引名](字段,...)
);
还可以:
alter table 表名 add index [索引名] (字段名,...);
什么字段适合添加索引:
经常出现在select语句的where子句中的字段
查看表中索引
show index from 表名;
注意:MySQL会自动对表进行优化,主键、非空且唯一、唯一字段会被自动添加索引
删除索引:
drop index 索引名 on 表名;
索引的优点:
-
可以大大地提升数据的查询速度,这就是使用索引最主要的原因
-
在使用分组、排序语句时,使用索引也可以显著减少时间
索引的缺点:
-
索引的本质就是一张记录磁盘地址的表,里面存储的是索引字段数据所处于的磁盘位置,所以创建索引需要额外的存储空间,是典型的空间换时间的做法
-
当对表中数据进行增加、删除、修改的时候,存储数据的磁盘位置发生改变,因此索引表也要随之动态变化,这样就降低了数据的维护速度
使用索引的建议
-
可以在频繁插入、删除、修改数据的时候,把索引删除,如何维护数据,维护结束后,重新创建索引,提升查询速度
-
理论上,可以为所有字段分别创建索引,但是不建议这样做,并且MySQL中一张表的索引总数限制16个
MySQL索引底层实现
-
通过B+树、哈希查找实现
三、视图
视图特点:
-
MySQL中的视图(View) 是一种虚拟存在的表,同真是表一样,视图也是由行、列组成,但是视图不真实存在于数据库中
-
数据库中只存放视图的定义,不存放视图中的数据,视图中的数据全部来自于视图引用的真实表中
-
使用视图查询数据时,数据库会从对应的真实表中查询数据,因此视图中的数据依赖于真实表中的数据,一旦真实表中的数据发生改变,显示到视图中的数据也随之改变,对视图中的数据可以进行 insert、update、delete 操作,并且也会反映到真实表中
-
视图不能改变表结构,并且当真实表结构发生改变时,应该先删除原视图再重建后才能使用
-
视图的数量没有限制,但是视图名不能重复、也不能与真实表重名
-
视图可以嵌套
-
视图的字段不能创建索引
创建视图:
-
create view 视图名 [字段,··· ] as <select 语句>;
-
注意:select语句的where子句的影响
-
既影响了创建时真实图中可以出现在视图中的数据
-
在后续对视图数据修改时,也会持续影响视图的显示,但是依然会对真实表发生修改
-
查看视图字段:
-
desc 视图名;
查看视图数据:
-
select 字段名 from 视图名;
删除视图:
-
drop view 视图名;
视图的作用
-
让操作变得简单,可以对经常使用的字段,定义一个视图,这样就无须每次都指定字段名
-
增加数据的安全性,通过视图,用户只能查询、修改指定的字段
-
提高表的逻辑独立性,让视图屏蔽真实表结构变化带来的影响
总结:使用视图的绝大部分原因是为了保障数据的安全性、提高查询的便捷性
缺点: 1、速度慢 2、理论上使用视图可以与真实表一样使用,例如:增删改查数据实际上是在操作真实表,但是一般会对视图加以一定限制,导致对视图数据的修改受到限制,没有真实图来的自由
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】