欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL基础三

程序员文章站 2022-05-29 21:25:53
...

索引

什么是索引?

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

索引用于快速找出在某个列中有一特定值的行,不使用索引,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();

 

 

相关标签: MySQL 笔记