MySQL学习之路7-索引、事务、函数、存储过程、游标
索引
- 使用索引快速定位某列中特定值的行,不需要遍历数据表所有行。
- 创建索引的数据结构:BTREE and HASH。
- 主键也是一种索引,Primary key。
show index from orders;#显示索引 alter table orders add index oid_index(oid);#添加索引 drop index oid_index on orders;#删除索引
自定义函数
#自定义函数 delimiter // create function linearfunction(x int) returns int begin declare y int; set y= 2*x+1; return y; end // delimiter ; select linearfunction(5);#调用自定义函数 drop function linearfunction;#删除自定义函数
存储过程
- 完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数来调用执行。
#存储过程 delimiter // create procedure info(score int) begin select * from stuscore where Math>score; end // delimiter ; call info(90);#调用存储过程 drop procedure info;#删除存储过程
事务
- 维护数据库的完整性,保证成批的SQL语句要么完全执行,要么都不执行。
create table bank_account( id int unsigned auto_increment primary key, account_name varchar(10), account_balance decimal(10,2) ); show tables; insert into bank_account(account_name,account_balance) values ('客户A',500), ('客户B',300); begin;#开启事务 update bank_account set account_balance = 400 where account_name = '客户A'; update bank_account set account_balance = 400 where account_name = '客户B'; rollback;#回退 commit;#提交 select * from bank_account;
游标
- 每一行的显示select查询的结果集。
delimiter // create procedure info_cursor() begin declare var_id int(10); declare var_stuname varchar(20); declare var_math decimal(5,1); #创建游标 declare score_cursor cursor FOR select stuid,stuname,Math from stuscore where class = 1; #打开游标 open score_cursor; #使用游标 fetch score_cursor into var_id,var_stuname,var_math; select var_id,var_stuname,var_math; #关闭游标 close score_cursor; end // delimiter ; call info_cursor();#调用游标
2020-03-14 19:54