MySQL学习03

发布时间 2023-09-19 21:24:00作者: 优秀还天籁

一、自动增加字段
设置了自动步长字段,可以不用手动插入值,由系统提供的默认值和默认的步长自动增加,例如学号字段
要求:
1、只有主键才能设置
2、只有数值型字段
3、一张表最多只能设置一个
设置方法:
create table 表名(
字段 类型 primary key auto_increment
);

设置初始值:
    1、通过第一次手动插入数据设置初始值
    2、如果一开始就不提供该字段的数据,则默认从1开始

步长设置:
    1、默认步长是1
    2、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、当对表中数据进行增加、删除、修改的时候,存储数据的磁盘
    位置发生改变,因此索引表也随之动态变化,这样就降低了数据的维护
    速度

使用索引的建议:
    1、可以在频繁插入、删除、修改数据的时候,把索引删除,然后维护数据、
    维护结束后,重新创建索引,提升查询速度
    2、理论上,可以为所有字段分别创建索引,但是不建议这样做,并且MySQL中
    一张表的索引总数限制16个

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

三、视图
视图特点:
1、MySQL中的视图(View)是一种虚拟存在的表,同真实表一样,视图也是由行、列
组成,但是视图不真实存在于数据库中
2、数据库中只存放视图的定义,不存放视图中的数据,视图中的数据全部来自于视图
引用的真实表中
3、使用视图查询数据时,数据库会从对应的真实表中查询数据,因此视图中的数据依赖
于真实表中的数据,一旦真实表中的数据发生了改变,显示到视图中的数据也随之改变,
对视图中的数据可以进行insert\updata\delete操作,并且也会反映到真实表中
4、视图不能改变表结构,并且当真实表结构发生改变时,应该先删除原视图,再重建
后才能使用
5、视图的数量没有限制,但是视图名不能重复,也不能与真实表重名
6、视图可以嵌套
7、视图的字段不能创建索引

创建视图:
create view 视图名[字段,...] as <select 语句>;
注意:select语句的where子句的影响,既影响了创建时真实图中可以出现在视图
中的数据,其次,在后续对视图数据修改时,也会持续影响视图的显示,但是依然
会对真实表发生修改
    create view s1(id,name,sex) as select id,name,sex from student where id < 4;
    //s1中只显示id < 4的数据
    insert into s1 

查看视图字段
desc 视图名;

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

删除视图
drop view 视图名;

视图的作用:
    1、让一些操作变的简单,可以对经常使用的字段,定义一个视图,这样就无须每次都
    指定字段名
    2、增加数据的安全性、通过视图,用户只能查询、修改指定的字段
    3、提高表的逻辑独立性,让视图屏蔽真实表结构变化带来的影响

    总结:使用视图的绝大部分原因是为了保障数据的安全性、提高查询的便捷性
缺点:
    1、速度慢
    2、理论上使用视图可以与真实表一样使用,例如增删改查数据实际上是在操作
    真实表,但是一般会对视图加以一定的限制,导致对视图数据的修改受到限制,
    没有真实图来的自由
    3、因此视图一般用作查询数据使用