/*
视图操作
create | alter view_name as select column_name from table_name;
*/
---------------------------事物操作-------------------------------------
/*
原子性
一致性
隔离性
持久性
*/
create table `class`(
id int primary key auto_increment,
cz_money decimal(10, 2) comment '班费'
);
insert into `class` values(null, 1250);
create table student(
id int primary key auto_increment,
stu_money decimal(10, 2) comment '学生拥有的钱'
);
insert into student values(null, 5000);
-- 班费
update student set stu_money=stu_money-30 where id =1;
update `class` set cz_money = cz_money +30 where id =1;
-- 将一组sql语句整体运行,运行失败回滚程序
show variables like 'autocommit';
set autocommit=0;
-- 利用commit提交事务
-- --------------------------------------触发器---------------------------------
-- 监听数据库的操作:
-- 创建触发器:
create trigger 名字 事件 执行代码;
create trigger jiaobanfei after update on student
for each row
update class set cz_money = cz_money+90;
-- 事件
insert
update
delete
-- 事件的时机和事件在一起形成笛卡尔乘积
-- before
insert
update
delete
before insert |update |delete
-- after
insert
update
delete
after insert |update |delete
-- 执行代码
-- sql 脚本代码
update student set stu_money = stu_money+80 where id = 1;
/*
注意:
触发器不能同名;
目前mysql只支持一类事件只有一个触发器
6种触发器
show create trigger trigger_name;
(old.stu_money - new.stu_money)
当事件是insert不能用old
或是delete不能用new
old 触发该触发器的表 on 之后的表 事件发生之前
new 触发该触发器的表 on 之后的表 事件发生之后
*/
update student set stu_money=stu_money-50 where id =1;
drop trigger jiaobanfei;
create trigger jiaobanfei after update on student
for each row
update `class` set cz_money=(old.stu_money - new.stu_money);
-- 如果一个触发程序有多个sql组成:
-- 应该:
--1、用begin end 作为标识语句块
--2、语句块内用“;”作为定界符
delimiter $$ -- 修改语句结束符
create trigger ruxue after insert on student
for each row
begin
update class set stu_count = stu_count+1;
update class set cz_money = cz_money+20;
end
$$
delimiter ; -- 再改回来
/*
mysql 编程
set 变量名=变量值
set @who='刘瑞斌';
通过select可以获得当前变量值
select @who;
定义一个变量selectinfo
select 列 into 变量列表
select 10,15,20 into @a,@b,@c;
select @a,@b,@c;
select -----into @var 只能返回一行
= 应该是赋值,但在sql中是判断,写成:=
set @i := '流';
select @who:='流';
自定义函数
delimiter $$
create function sayHello() returns varchar(20)
begin
return 'hello world';
end
$$
delimiter ;
调用
select sayHello();
多分枝:
if 条件 then
elseif 条件2 then
end
*/
mysql 学习笔记 day06
最新推荐文章于 2024-10-13 21:08:42 发布