新手区 Mysql(一)

万万 · 2025年07月29日 · 1082 次阅读

一、Mysql 的 sql 分类

1.1 数据定义语言(DDL)

​ 数据定义语言 (Data Definition Language, DDL) 是 SQL 语言集中,负责数据结构定义与数据库对象定义的语言,主要包括三个关键字:create ,alter , drop(数据库关键字不分大小写 ),主要操作对象 有数据库、表、索引、视图等。

例如:ALTER TABLE t_table_name ADD COLUMN column_b INT NOT NULL AFTER column_a;

1.2 数据操纵语言(DML)

​ 数据操纵语言(Data Manipulation Language, DML)是 SQL 语言中,负责对数据库对象运行数据访问工作的指令集,以 INSERT、UPDATE、DELETE 三种指令为核心,分别代表插入、更新与删除。

例如:INSERT、UPDATE、DELETE 语句

1.3 数据查询语言(DQL)

​ 数据查询语言(Data Query Language, DQL)是 SQL 语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的 SQL 语句。保留字 SELECT 是 DQL(也是所有 SQL)用得最多的动词,其他 DQL 常用的保留字有 FROM,WHERE,GROUP BY,HAVING 和 ORDER BY。这些 DQL 保留字常与其他类型的 SQL 语句一起使用。

例如:SELECT * FROM t_table_name

1.4 数据控制语言(DCL)

​ 数据控制语言 (Data Control Language) 在 SQL 语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。DCL 以控制用户的访问权限为主,GRANT 为授权语句,对应的 REVOKE 是撤销授权语句。

例如:GRANT select, insert, delete ON mytable TO myuser;

关于 mysql 主要关注于数据查询语言(DQL)

二、sql 索引

以下所有内容均以 innodb 引擎为基础。

查询语句关注索引

常见索引类型

主键索引

一种特殊的唯一索引,不允许有空值。(主键约束 = 唯一索引 + 非空值)

唯一索引

索引列中的值必须是唯一的,但是允许为空值。

普通索引

MySQL 中的加索引类型,没啥限制。允许空值和重复值,纯粹为了提高查询效率而存在

组合索引

多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。注意,使用它的时候需要遵守最左匹配原则。多个列作为查询条件时,组合索引在工作中很常用。

注:innodb 没有全文索引

常见的索引数据结构

B+ 树

​ B+Tree 是 B-Tree 的变种,所具有的特点:

  • 非叶子节点不存储 data,只存储索引,可以放更多的索引;
  • 叶子节点包含所有索引字段;
  • 叶子节点用指针连接,提高区间访问的性能,支持范围查询。

Hash 表

通过索引的 key 进行一次 hash 计算,就可以快速获取磁盘文件指针,对于指定索引查找文件非常快,但是对于范围查找没法支持,有时候也会出现 Hash 冲突的情况。

什么情况可以加索引

1,频繁作为查询条件的字段创建索引

2,唯一性太差的字段不单独创建索引,即使频繁作为查询条件

3,更新频繁的字段不创建索引

4,不会出现在 where 中的字段不创建索引

5、不是索引越多越好,有成本

加索引的成本

1、空间:创建一个索引,就要创建一个 b+ 树,增加存储空间

2、时间:表中数据进行增删改的时候,都会修改各个 b+ 树的索引

​ 查询前生成执行计划时,会判定哪个是最优的索引,索引个数太多,会增加耗时

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册