MySQL基础三

索引

什么是索引?

类似于书的目录,需要几页纸来存放目录,但通过目录可快速定位到章、节部分。

索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。

主键索引

主键也是一个特殊索引

primary key

查看索引

show index from class;

创建索引

create index classindex on class(stuid);
alter table course add index index_name(name);

删除索引

drop index classindex on class;

自定义函数

创建自定义函数

#y=2*x + 1
delimiter //    #delimiter代表改变SQL语句结束符号
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;

存储过程

就是为了以后的使用而保存的一条或多条MySQL语句的集合,可以将其视为批处理文件,虽然它们的作用不仅限于批处理。

创建存储过程

select * from stuscore where Math>90;

delimiter //
create procedure info(score int)
begin select * from stuscore where Math>score;
end //
delimiter ;

call info(80);

删除存储过程

drop procedure info;

事务

用来维护数据库的完整性

保证成批的sql操作要么完全执行,要么完全不执行

比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。

一些术语

事务(transaction)

一组sql语句

回退(rollback)

撤销指定sql语句的过程

提交(commit)

将为存储的sql语句结果写入数据表

保留点(savepoint)

事务处理中设置的临时占位符,可以对它发布回退

使用事务

开启事务

create table blank_account(
	id int unsigned auto_increment primary key,
    account_name varchar(10),
    account_blance decimal(10,2)
);

insert into blank_account(account_name, account_blance) values('客户A','500'),('客户B','300');
select * from blank_account;

创建事务

begin;
update blank_account set account_blance=400 where id=1;
update blank_account set account_blance=400 where id=2;
#如果以上任意一条语句发生异常,则运行rollback
rollback;
commit;

select * from blank_account;

游标

一个存储在MySQL服务器上的数据库查询,被select语句检索出来的结果集,在存储了游标之后,可以根据需要滚动或浏览其中的数据

主要用于交互式应用,用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改

只能用于存储过程

常用操作

以MySQL基础二中的stuscore表为例子

select * from stuscore;

delimiter //
create procedure stuscore_cursor()
begin
	declare var_id int(10);
    declare var_stuname varchar(20);
    declare var_Math decimal(5,1);
    declare var_English decimal(5,1);
    #创建游标
    declare score_cursor cursor for 
    select stuId,stuName,Math,English from stuscore where class='1';
    #打开游标
	open score_cursor;
    #使用游标
    fetch score_cursor into var_id,var_stuname,var_Math,var_English;
	select var_id,var_stuname,var_Math,var_English; 
    #关闭游标
	close score_cursor;
end //
delimiter ;

call stuscore_cursor();

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值