[TOC]
격리 수준을 수정
修改全局的
set global transaction isolation level read committed;
或者:
set @@tx_isolation = "asasasasas-read";
修改局部
set session transaction isolation level read committed;
@@系统内置变量
@表示用户自定义的变量
저장 프로 시저
저장 프로 시저 란 무엇인가
是任意的sql语句的组合,被放到某一个存储过程中,类似于一个函数,有一个函数名/参数/还有函数体.
수행하는 데 사용
其中可以包含任何的sql语句,逻辑处理,事务处理,所有的我们学过的sql语句都可以放到里面
처리하는 세 가지 데이터
응용 프로그램은, 비즈니스 로직과 MySQL의에 논리 패키지와 관련된 모든 데이터를 걱정
- 장점 : 응용 프로그램 문제, 당신은 네트워크 트래픽을 줄일 수 이하가 처리 할
응용 프로그램은 비즈니스 로직을 처리한다뿐만 아니라, SQL 문을 작성하는
- 장점 : 통신 비용, 노동 비용 감소
- 단점 : 증가 네트워크 전송은 매우 복잡한 SQL 문 쓰기
자동으로 생성하고 SQL 문을 실행, 객체 - 관계형 매핑을 사용하여 ORM 프레임
- 장점 : 필요는 SQL 명령문을 작성 없습니다 발전 효율을 향상시키기 위해
- 단점 : 충분히 유연하지, 완전히 격리 된 응용 프로그램 개발자와 데이터베이스 만 상위 계층의 개발에 초점을 초래할 수 있지만, 기본 원리를 모른다
# 语法
create procedure p_name(p_type p_name p_date_type)
begin
sql......
end
# p_type 参数的类型 in 输入 out 输出必须是一个变量,不能是值 inout 即可输出也可输入
# p_name 参数的名字
# p_data_type 参数的数据类型 如 int float
경우
delimiter |
create procedure a1(in a int, in b int, out c int)
begin
set c = a + b;
end |
delimiter ;
# 调用
set @res =0;
call a1(1,1,@res);
select * from @res;
# 删除
drop procedure 名称;
# 查看
show create procedure 名称
# 查看全部 例如 db库下的所有
select name from mysql.proc where db = 库名 and type = "PROCEDURE";
delimiter |
create procedure transfer2(in aid int,in bid int,in m float,out res int)
begin
declare exit handler for sqlexception
begin
# 异常处理代码
set res = 99;
rollback;
end;
start transaction;
update account set money = money - m where id = aid;
update account set money = moneys + m where id = bid;
commit;
set res = 1;
end|
delimiter ;
백업 및 복구
# 备份
mysqldump.exe
mysqldump -u用户名 -p密码 数据库 表名1 表名2 .... > 文件路径....
# 注意 第一个表示数据库 后面全都是表名
mysqldump -uroot -p day41 student >
#备份多个数据库
mysqldump -uroot -p111 --databases day41 day40 > x3x.sql
#指定 --databases 后导出的文件包含 创建库的语句 而上面的方式不包含
#备份所有数据
mysqldump -uroot -p111 --all-databases > all.sql
#自动备份
linux crontab 指令可以定时执行某一个指令
# 恢复数据:
没有登录mysql
mysql < 文件的路径
已经登录了MySQL
source 文件路径
注意: 如果导出的sql中没有包含选择数据库的语句 需要手动加上