网站建设知识
MysQL自学笔记8
2025-07-22 11:13  点击:0

MysQL自学笔记8--索引、存储过程

使用MySQL 5.5以及MySQL自带命令客户端

索引

索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,其作用是可以加快查询速度,缺点是会降低增、删、改的速度

举一个例子:有一张表,上面有20列,13列上存在索引,要导入1000W行数据,该如何快速导入?

将空表的索引全部删除 导入数据 导入数据结束后,集中建立索引

创建索引的原则:

不要过度索引 在where条件最为频繁的列上面添加索引 尽量索引散列值,过于集中的值添加索引意义不大

索引类型:

普通索引:index,作用是加快查询速度 唯一索引:unique,要求行上的值是不能重复的 主键索引:primary key,主键是不能重复的
主键一定是唯一的,但是唯一索引不一定是主键索引 一张表上面可以有一个或多个唯一索引,但是只能有一个主键 全文索引:fulltext

索引的一些基本操作:

查看一张表上面的全部索引:

show index from tableName;# 如果想要竖着显示,可以在语句最后加一个`\G`show index from tableName \G;

建立索引:可以分为两种

建立普通、唯一、全文索引:

alter table tableName add index/unique/fulltext [indexName] (columnName);

建立主键索引
“` MySQL
alter table tableName add primary key (columnName); // 这里不加索引名词是因为主键只有一个

删除索引:

删除非主键索引:alter table tableName drop index indexName; 删除主键索引:alter table tableName drop primary key;

全文索引中有一个固定的句式用法:

“` MySQL
match (全文索引名) against (‘key_word’);

* ``` MySQLselect * from table1 where match (index1) against ('key_word');

全文索引的停止词:
全文索引不针对非常频繁的词作索引,比如:this、is、you、my 等词汇

全文索引对中文的使用情况:
在MySQL默认情况下,全文索引对中文的意义不是很大,因为中文无法像英文一样使用空格以及标点符号拆分单词,进而对单词进行索引!

存储过程

存储过程的概念类似于函数,就是将一段代码封装起来,当要执行该段代码时,可以通过调用(call)该存储过程来实现。在存储过程中,可以使用if/else、case、while等控制结构

存储过程和函数区别

名称不一样 存储过程没有函数值,但是函数有返回值

存储过程一些基本操作

查看存储过程:show procedure status;、show procedure status \G; //横着显示 删除存储过程:drop procedure pro_Name; 调用存储过程:call pro_Name([parameters...]); 创建存储过程:
MySQL
create procedure pro_Name([paremeters...])
begin
SQL语句
end;
可以使用delimeter来声明新的结束符 示例:
MySQL
create procedure pro1()
begin
select * from g;
end$

MySQL
Create procedure pro2(n int)
Begin
Select * from g where num > n;
End$
//调用时可用代码`call pro2(3);`

MySQL
Create procedure pro3(n int,j char(1))
Begin
If j = ’zqh’then
Select * from g where num > n;
Else
Select * from g where num < n;
End if;
End$
//调用时可以使用代码`call pro3(13, 'zqh');`

MySQL
Create procedure p3(n int,j char(1))
Begin
If j = ’h’then
Select * from g where num > n;
Else
Select * from g where num < n;
End if;
End$
//调用时可以使用代码`call pro(100);`