day03

发布时间 2023-09-18 18:41:45作者: 歪爱慕外

一、自动增加字段

  • 设置了自动步长字段,可以不用手动插入值,由系统提供的默认值和默认的步长自动增加,例如学号字段

要求:
  • 只有主键才能设置

  • 只有数值型字段

  • 一张表最多只能设置一个

设置方法:
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 表名;

索引的优点:

  1. 可以大大地提升数据的查询速度,这就是使用索引最主要的原因

  2. 在使用分组、排序语句时,使用索引也可以显著减少时间

索引的缺点

  1. 索引的本质就是一张记录磁盘地址的表,里面存储的是索引字段数据所处于的磁盘位置,所以创建索引需要额外的存储空间,是典型的空间换时间的做法

  2. 当对表中数据进行增加、删除、修改的时候,存储数据的磁盘位置发生改变,因此索引表也要随之动态变化,这样就降低了数据的维护速度

使用索引的建议
  • 可以在频繁插入、删除、修改数据的时候,把索引删除,如何维护数据,维护结束后,重新创建索引,提升查询速度

  • 理论上,可以为所有字段分别创建索引,但是不建议这样做,并且MySQL中一张表的索引总数限制16个

MySQL索引底层实现
  • 通过B+树、哈希查找实现

三、视图

视图特点:
  • MySQL中的视图(View) 是一种虚拟存在的表,同真是表一样,视图也是由行、列组成,但是视图不真实存在于数据库中

  • 数据库中只存放视图的定义,不存放视图中的数据,视图中的数据全部来自于视图引用的真实表中

  • 使用视图查询数据时,数据库会从对应的真实表中查询数据,因此视图中的数据依赖于真实表中的数据,一旦真实表中的数据发生改变,显示到视图中的数据也随之改变,对视图中的数据可以进行 insert、update、delete 操作,并且也会反映到真实表中

  • 视图不能改变表结构,并且当真实表结构发生改变时,应该先删除原视图再重建后才能使用

  • 视图的数量没有限制,但是视图名不能重复、也不能与真实表重名

  • 视图可以嵌套

  • 视图的字段不能创建索引

创建视图:
  • create view 视图名 [字段,··· ] as <select 语句>;

  • 注意:select语句的where子句的影响

    • 既影响了创建时真实图中可以出现在视图中的数据

    • 在后续对视图数据修改时,也会持续影响视图的显示,但是依然会对真实表发生修改

查看视图字段:
  • desc 视图名;

查看视图数据:
  • select 字段名 from 视图名;

删除视图:
  • drop view 视图名;

视图的作用
  1. 让操作变得简单,可以对经常使用的字段,定义一个视图,这样就无须每次都指定字段名

  2. 增加数据的安全性,通过视图,用户只能查询、修改指定的字段

  3. 提高表的逻辑独立性,让视图屏蔽真实表结构变化带来的影响

总结:使用视图的绝大部分原因是为了保障数据的安全性、提高查询的便捷性

缺点: 1、速度慢 2、理论上使用视图可以与真实表一样使用,例如:增删改查数据实际上是在操作真实表,但是一般会对视图加以一定限制,导致对视图数据的修改受到限制,没有真实图来的自由 3、因此视图一般用于查询数据使用