游标:![](https://img-blog.csdnimg.cn/direct/f6fd3fa9fcf34534abd405b02964b5f5.png)
相当于在声明语法哪里指定的表中创建一个游标,从第一行开始,每次查询结束后自动往下接着查询,然后再最后没有数据时就会报错从而结束,类似于指针的使用
label:loop
fetch my_cursor into var_empno,var_ename,var_sal;
select var_empno,var_ename,var_sal;
end loop label;
上方代码块便是取之于法的使用,利用游标自动指向下一行的特点,循环查询,最后会报错
句柄:
上面图片里指的是如果出现了not found的异常就把flag的值更改为0并且继续运行原本的程序然后就可以使用flag的值为0这个条件来处理异常了
undo指目前MySQL不支持而发省的异常
![]()
在报错时最前方的数字就是条件码
存储函数:
实际步骤如下图所示
可能软件会拒绝创建这个函数,这时就需要这个来临时创建信任
set global log_bin_trust_function_creators=true;
触发器:
I,D,U分别为增加删除修改
new和old:
使用时可以concat('有新用户添加信息为:',new.uid,new.username,new.password);
1.在mysql中不能对本表进行iud操作,以免递归循环触发
2.尽量啥使用触发器,因为触发器如果过多会导致效率降低
3.触发器针对每一行,在增删改频繁的表上不要使用触发器,因为它会很浪费资源
索引:
其中主键索引会在创建主键时由系统自动添加 show index from 表名 查询一个表中的主键索引
意思就是在表里面直接在目标列的前面加上index
在表外面就有两个方法挑选
唯一索引:
唯一索引的值必须唯一,但允许有空值
删除唯一索引与删除普通索引的方法是一样的
组合索引:![](https://img-blog.csdnimg.cn/direct/fa83badf52d3474a92daa9e2b47624c3.png)
在组合唯一索引中两列值可以有其中一列一样,但是两列不能完全一样
注意这里的and也不能换成or
全文索引:
全文索引的关键字是fulltext
效果和like+%类似但是效率更高
全文索引中有两个变量,即为最小搜索长度和最大搜索长度,而索引目标长度必须在他们之间
shou variables like '%ft%';
可以查看那两个变量的默认值
create table 表名(
id int primary key auto_increment,
title varchar(255),
content varchar(1000),
writing date date --,
fulltext (content) -- 创建全文约束
);
使用全文索引:
col1,col2指的是字段,即给那些列添加全文索引便是那些
后面的小括号里面便是搜索关键词
索引的特点:
索引的使用原则:
1.更新频繁的列不应该使用索引
2.数据量少的表不用索引
3.重复数据多的字段不设索引
4.首先应该考虑对where和order by涉及的列上建立索引