sql语句之存储过程,事务,视图,日志

1.存储过程
定义 : 可以叫存储程序, 通过一定的代码逻辑, 将一句或多久SQL
语句进行封装, 通过调用存储过程, 快速实现其内部封装SQL语
句操作
用途 : 可以用来向数据库中, 快速插入大量测试数据时使用
基本语法格式

delimiter // -- 取消默认结尾标识符 ; 的作用
create procedure 存储过程名(参数列表)
begin -- 代码逻辑的开始
SQL语句
end //
delimiter ; -- 还原默认结尾标识符 ; 的作用

调用方法

-- 在查询窗口中
call 存储过程名();

语法实现

-- 修改句尾标识符为'//'
delimiter //
-- 如果存在 test 存储过程则删除
drop procedure if exists test;
-- 创建无参数的存储过程 test
create procedure test()
begin
-- 声明变量 i
declare i int;
-- 变量初始化赋值为 0
set i = 0;
-- 设置循环条件: 当 i 大于 10 时跳出 while 循环
while i < 10000 do
-- 往 datatest 表插入数据
insert into datatest values (null, i);
-- 循环一次, i 加一
set i = i + 1;
-- 结束 while 循环
end while;
-- 查看 datatest 表数据
select * from datatest;
-- 结束存储过程定义语句
end//
-- 恢复句尾标识符为';'
delimiter ;

2.事务
定义 : 所谓事务可以称之一个操作序列, 一系列操作要么都执行,
要么就不执行. 对于数据库来讲, 对于数据的操作行为, 要么都实
现, 要么都不实现, 最终需要确保写入到数据库的数据的一致性
(原子性)!
事务实现案例
前提: 数据表的数据引擎类型必须是 InnoDB (可以通过查看创
表语句来确认)

-- 注意 : 出发事务操作一般是由修改数据操作产生(插入数据
insert/更新数据update/删除数据delete)
-- 开启事务
begin;
-- 提交事务
commit;
-- 回滚事务
rollback;

案例实现步骤
– 注意 : 出发事务操作一般是由修改数据操作产生(插入数据
insert/更新数据update/删除数据delete)
– 开启事务
begin;
– 提交事务
commit;
– 回滚事务
rollback;

  1. 开启两个终端窗口(A窗口操作/B窗口查询)
  2. A 窗口 begin 开启事务, 执行修改数据操作
  3. B 窗口查询数据(此时B看不到A的修改结果)
  4. A 提交事务 commit
  5. B 再次查看(可以见到A的修改结果)
  6. A 再次开启事务, 执行修改数据操作
  7. A 执行回滚事务 rollback
  8. B 查看不到A的修改操作结果

3.视图
场景 : 能够封装 SQL 语句, 以类似于表的形式存在

-- 创建视图语法
-- 注意: 视图命名一般以 v_视图名称 形式实现
-- create view 视图名称 as select 语句;
create view v_goods as select goodsName 商品名称,
price 价格, num 数量, company 公司 from goods;
-- 视图的用法: 当成表查询使用即可
select * from v_goods;
-- 复杂 SQL 语句视图封装
select go.goodsName, ca.cateName from goods go inner
join category ca on go.typeId = ca.typeId;
-- 封装连接查询语句时, 如果存在重名字段名称, 需要通过别名进行
修改
create view v_goods_cate as select go.*, ca.id 序号,
ca.typeId 类型, ca.cateName from goods go inner join
category ca on go.typeId = ca.typeId;
select * from v_goods_cate;
-- 删除视图语句
-- drop view 视图名称
drop view v_goods_cate;

注意 : 视图可以起到隐藏真实数据表内容的作用
4.MySQL 日志的获取
注意 : MySQL 自带日志功能, 但是开启日志功能, 极其消耗数据库
性能, 因此默认情况下是不开启的

-- 查看日志功能是否开启
show variables like 'general%';
-- 开启操作
set global general_log = 1;
-- 关闭操作
set global general_log = 0;
-- 注意: 日志功能使用完成, 需要记得马上关闭, 避免影响数据库性!!!!!!

你可能感兴趣的:(sql,数据库,sqlserver)