Mysql的核心就是存储引擎,DBMS(数据库管理系统)借助于引擎实现增删改查操作。可以根据不同的功能来设置不同的存储引擎。
InnoDB是事务型数据库的首选,执行安全性数据库,行锁定和外键。mysql5.5之后默认使用。
MyISAM插入速度和查询效率较高,但不支持事务。
MEMORY将表中的数据存储在内存中,速度较快。
一系列的DML操作,要么同时成功,要么同时失败。
1.原子性Atomicity:一组DML操作,要么同时成功,要么同时失败
2.一致性Consistency:
数据一致性:事务执行前后整体状态不变
约束:事务执行前后约束信息不变
3.隔离性(独立性)Isolation:并发事务相互隔离
4.持久性Durability:事务提交之后数据将持久化到数据库
mysql数据库默认自动提交:
set autocommit =0;不自动提交
set autocommit =1;自动提交
mysql手动开启事务
start transaction/begin;
mysql手动提交或者回滚
commit;
rollback;
savepoint;保存点,相当于一个恢复点,恢复必须在事务提交之前,事务一旦提交,所有的保存点全部失效。
概念:存储程序指的一组存储和执行在数据库服务器端的程序。
优点:效率高,简化开发
缺点:占用服务器端资源,数据迁移时也要把这些存储过程迁移过去
1.存储过程-------有输入输出参数,可以执行一组sql指令
2.存储函数-------有一个返回值,可以对sql进行有效扩展
3.触发器----------事件响应,比如执行insert语句后执行另一个动作
create procedure sel_emp(参数列表)
begin
--操作
end;
create procedure sel_emp()
begin
select * from emp where deptno=10;
end;
--存储过程的调用
call sel_emp();
3.有参存储过程
--IN模式传参,默认输入模式
--根据部门编号查询员工信息
delimiter // -- 定义结束标识
create procedure sel_emp2(dno int)
begin
select * from emp where deptno=dno;
end //;
--调用存储过程
call sel_emp2(30);
--OUT参数输出模式
--根据员工编号查询员工名称
delimiter // -- 定义结束标识
create procedure sel_emp3(eno int,OUT name varchar(20))
begin
select ename into name from emp where empno=eno;
end //;
--调用
call sel_emp3(7788,@name);
select @name;
--INOUT模式传参
--根据员工编号查询所在部门编号
delimiter // --定义结束标识
create procedure sel_emp4(INOUT eno int)
begin
select deptno into eno from emp where empno = eno;
end //;
--调用
set @eno = 7788;
----
call sel_emp4(@eno);
--查看
select @eno;
4.流程控制语句
delimiter //
create procedure cal_core(score int) begin
--声明变量
declare levels varchar(20); --内部定义变量
--分支
if score>80 then
set levels='优秀'; --变量赋值
elseif score >= 80 then
set levels='良好';
else
set levels='不通过';
end if;
--输出
select levels;
end //;
存储函数
--根据员工编号查询名称
delimiter //;
create function sel_name(eno int)
returns varchar(20) -- 返回值类型
deterministic -- 确定的
begin
declare v_name varchar(20) -- 定义变量
select ename into v_name from mktest.emp where empno=eno;
return v_name; -- 返回该变量
end //;
select sel_name(7788);
--函数有返回值 return
存储过程可以单独使用;但是函数只能作为语句的一部分。
1.关键字不同
2.过程:三者模式显示输入和输出,函数:返回值实现输出
3.过程独立使用,函数:作为语句的一部分