hg888皇冠手机登录

MySQL的政工和视图,MySQL事务视图

五月 18th, 2019  |  www.hg888.com

EXEC  proc_withOutputpara @sub,@count=@count output

MySQL的业务和视图,MySQL事务视图

                事务

1.概念

一条或许多条sql语句的会集!
 事务:正是一群操作的汇集,他们丹舟共济。要么都进行成功,要么都举办倒闭
2.业务的表征  ACID
  A:原子性  完整的,不可分割的

  原子性 (Atomicity):在业务中的操作,要么都施行,要么都不实行!

  C: 一致性  事务实行达成后,数据的情景是同等的()

  一致性(Consistency):事务必须保证数据库从二个一致性的景观变为另一个一致性的图景!

  I: ISOLation 隔开分离性  多个事情实施互不影响

  隔绝性(Isolation):每一种事情之间互不搅扰!哪怕是出现施行也不打搅!

  D: 永世性  事务实践完后,对数码的熏陶是世代的。

  长久性(Durability):事务一旦被转移,那么对数据库中数据的震慑是永远性的!

3.事情操作的首要字
  自动提交业务开关set autocommit=0
  开端作业 start transaction /begin
  提交业务 commit
  回滚事务 rollback
  set autocommit=1
四.事务+++存款和储蓄进程 转账的例证
 
DELIMITER $$
CREATE PROCEDURE usp_transfer()
    BEGIN 
    ##荒谬总的数量暗中认可是0
    DECLARE t_error INTEGER DEFAULT 0; 
    ## continue 继续  hanlder 执行   并且对 t_error重新赋值为一
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
    SET autocommit=0;
        START TRANSACTION; 
        UPDATE bank SET balance=balance-100 WHERE cid=1;   
        UPDATE bank SET balance =balance+100 WHERE cid=2;
        IF t_error > 0 THEN 
            ROLLBACK; 
        ELSE 
            COMMIT; 
        END IF; 
     SET autocommit=1;
    END$$ 
DELIMITER ; 
 
CALL test_sp800()

 

概念3个积累进度的最简易的语法是
delimiter $$
create procedure usp_stulist()
begin
  select * from student
end$$
delimiter;

 

          模拟 银行转账!                          

—   创造数据库
CREATE DATABASE  myBank;
—  切换钦赐的数据库
USE myBank;
—  创建表
CREATE  TABLE  IF NOT  EXISTS bank(
customerName  VARCHAR(10) NOT NULL  COMMENT ‘用户名’,
currentMoney  DEBMW三系L(十,二) NOT NULL  COMMENT ‘账户余额’
);
— 插入数据
INSERT INTO bank  VALUES(‘小黑’,50000),(‘小白’,500000);

—  小黑  给小白  转账10000
—   修改两条数据
—    01.小黑-10000
—    02.小白+10000

UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 —  故意写错字段名称  让0贰  报错
UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
 

—  开启事务   START TRANSACTION 恐怕 BEGIN
—  01.0贰  为四个事情
BEGIN
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
—  事务回滚  ROLLBACK
—  提交业务 COMMIT

UPDATE bank SET currentMoney=500000
 WHERE customerName=’小黑’;
—  申明mysql是私下认可提交业务的!

SET  autocommit=0(关闭职业自动提交) | 1(开启事务自动提交)

— 关闭专门的学业自动提交
SET  autocommit=0;

BEGIN;   —  开启事务
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoney=currentMoney+10000
 WHERE customerName=’小白’;
COMMIT;  —  手动提交业务
  UPDATE  bank SET currentMoney=10000;
ROLLBACK;   — 事务回滚

SET  autocommit=一;  — 复苏活动提交

1.概念

一条可能多条sql语句的成团!
 事务:正是一群操作的聚合,他们丹舟共济。要么都进行成功,要么都实施倒闭
②.事务的风味  ACID
  A:原子性  完整的,不可分割的

  原子性 (Atomicity):在业务中的操作,要么都推行,要么都不实践!

  C: 壹致性  事务实行实现后,数据的情状是平等的()

  1致性(Consistency):事务必须保险数据库从二个1致性的气象变为另叁个一致性的气象!

  I: ISOLation 隔开性  七个事情推行互不影响

  隔断性(Isolation):每一个职业之间互不搅扰!哪怕是出现推行也不打扰!

  D: 永世性  事务实践完后,对数码的熏陶是永久的。

  漫长性(Durability):事务壹旦被改造,那么对数据库中数据的震慑是长久性的!

三.政工操作的最首要字
  自动提交业务按钮set autocommit=一
  早先作业 start transaction /begin
  提交业务 commit
  回滚事务 rollback
  set autocommit=1
4.事务+++存款和储蓄进程 转账的事例
 
DELIMITER $$
CREATE PROCEDURE usp_transfer()
    BEGIN 
    ##荒谬总的数量暗许是0
    DECLARE t_error INTEGER DEFAULT 0; 
    ## continue 继续  hanlder 执行   并且对 t_error重新赋值为一
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
    SET autocommit=0;
        START TRANSACTION; 
        UPDATE bank SET balance=balance-100 WHERE cid=1;   
        UPDATE bank SET balance =balance+100 WHERE cid=2;
        IF t_error > 0 THEN 
            ROLLBACK; 
        ELSE 
            COMMIT; 
        END IF; 
     SET autocommit=1;
    END$$ 
DELIMITER ; 
 
CALL test_sp800()

 

概念一个储存进程的最简便的语法是
delimiter $$
create procedure usp_stulist()
begin
  select * from student
end$$
delimiter;

 

          模拟 银行转账!                          

—   创造数据库
CREATE DATABASE  myBank;
—  切换钦定的数据库
USE myBank;
—  创建表
CREATE  TABLE  IF NOT  EXISTS bank(
customerName  VARCHAR(10) NOT NULL  COMMENT ‘用户名’,
currentMoney  DE迈腾L(拾,二) NOT NULL  COMMENT ‘账户余额’
);
— 插入数据
INSERT INTO bank  VALUES(‘小黑’,50000),(‘小白’,500000);

—  小黑  给小白  转账10000
—   修改两条数据
—    01.小黑-10000
—    02.小白+10000

UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 —  故意写错字段名称  让0二  报错
UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
 

—  开启事务   START TRANSACTION 或然 BEGIN
—  0一.02  为2个事情
BEGIN
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
—  事务回滚  ROLLBACK
—  提交业务 COMMIT

UPDATE bank SET currentMoney=500000
 WHERE customerName=’小黑’;
—  申明mysql是暗许提交业务的!

SET  autocommit=0(关闭职业自动提交) | 1(开启事务自动提交)

— 关闭职业自动提交
SET  autocommit=0;

BEGIN;   —  开启事务
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoney=currentMoney+10000
 WHERE customerName=’小白’;
COMMIT;  —  手动提交业务
  UPDATE  bank SET currentMoney=10000;
ROLLBACK;   — 事务回滚

SET  autocommit=一;  — 复苏活动提交

            视图

1.视图: 就是一张虚拟表,本质上囤积的是壹对SQL的会集

—  视图 是一张虚拟的表
   0一.意味一张表的片段数据依然是多张表的回顾数据!
   0二.结商谈数据都以创建在对真表的询问基础之上的!
   0三.视图中存放的数码实际上便是对真实表的引用!
     对视图中的数据进行增加,更新删除都会潜移默化到实际的表!
   04.贰个实打实的表能够成立N个视图!
   0五.假诺视图关联了多表,不允许增 删!单表能够增删改
   0陆.视图一般都以利用查询!

2.定义视图的语法:
create view VW_stulist(VW_视图的法力)
as
sql语句
 小Tip:当多表中有同名列的时候,在视图那些虚拟表中,只好有一列。手工业钦点该列是哪些表的

3.视图的使用 和查究基本表同样,直接通过select
select * from VW_stulist

四.剔除视图
drop view 视图名
drop table
drop database
drop index
drop constraint
总归:drop  删除是组织   delete 删除数据

 

5.查看全体库全体视图

 伍.一.切换成系统数据库
  use information_schema

 5.2.select * from views \G;

 陆.查看当前库的享有视图
   show tables status where comment=’view’

 柒.视图注意事项
壹)视图能够查询多表数据
2)视图能够嵌套
三)update,insert,delete不可能封装成视图内容,通过图形化分界面能够操作数据(操作视图数据,影响的是基本表)。
四)删除视图数据的时候,有一定的范围,数据结果来自多表的时候,不能够去除

 

—  创设一个视图  只得到 学生姓名 编号 以及考试成绩
CREATE  VIEW view_student_result
AS
SELECT s.studentNo 学生编号,studentName 学生姓名,
studentResult 考试战绩
FROM  student s,result r
WHERE s.`studentNo`=r.`studentNo`
—  查询视图中的内容
SELECT * FROM view_student_result
— 查询mysql数据库中有着的视图
SELECT * FROM information_schema.views;
—  删除视图
DROP  VIEW view_student_result;

—  创立八个表的视图  学生姓名,地址,手机号
CREATE VIEW  view_student
AS
SELECT  studentName 学生姓名,address 地址,phone 手提式有线电话机号
FROM  student

— 查询视图

SELECT  * FROM view_student 

 

事务 1.概念
一条可能多条sql语句的联谊!
事务:正是一群操作的联谊,他们风雨同舟。要么都实践成功,…

—  开启事务   START TRANSACTION 大概 BEGIN
—  01.0二  为1个业务
BEGIN
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
—  事务回滚  ROLLBACK
—  提交业务 COMMIT

AS

 

CREATE T福睿斯IGGE本田UR-V 触发器名称

 

CREATE PROC 存款和储蓄进程名

          模拟 银行转化!                          

CREATE PROC 存款和储蓄过程名

            视图

 

  D: 恒久性  事务实施完后,对数据的震慑是永远的。

目录使数据库程序无需对总体表张开扫描,就足以在内部找到所需数据。

 

触发器是1种奇特类型的积攒进度。

BEGIN;   —  开启事务
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoney=currentMoney+10000
 WHERE customerName=’小白’;
COMMIT;  —  手动提交业务
  UPDATE  bank SET currentMoney=10000;
ROLLBACK;   — 事务回滚

事务

—  小黑  给小白  转账10000
—   修改两条数据
—    01.小黑-10000
—    02.小白+10000

CREATE PROCEDURE proc_withOutputpara

          模拟 银行转账!                          

存款和储蓄进程的独到之处可想而知:封装复杂操作,节全省统编写翻译优化时间,实现代码重用。

  持久性(Durability):事务一旦被转移,那么对数据库中数量的影响是恒久性的!

AS

—  创造3个视图  只获得 学生姓名 编号 以及考试成绩
CREATE  VIEW view_student_result
AS
SELECT s.studentNo 学生编号,studentName 学生姓名,
studentResult 考试战表
FROM  student s,result r
WHERE s.`studentNo`=r.`studentNo`
—  查询视图中的内容
SELECT * FROM view_student_result
— 查询mysql数据库中兼有的视图
SELECT * FROM information_schema.views;
—  删除视图
DROP  VIEW view_student_result;

GO

SET  autocommit=0(关闭工作自动提交) | 1(开启事务自动提交)

 

SET  autocommit=1;  — 恢复生机活动提交

–SQL语句

一条大概多条sql语句的聚合!
 事务:就是一群操作的汇集,他们同甘共苦。要么都施行成功,要么都实行停业
贰.作业的特点  ACID
  A:原子性  完整的,不可分割的

付给业务  COMMIT TRANSACTION

1.概念

调用存款和储蓄进程:EXEC  存款和储蓄进程名 [参数]

 五.一.切换成系统数据库
  use information_schema

BEGIN

—   创立数据库
CREATE DATABASE  myBank;
—  切换内定的数据库
USE myBank;
—  创建表
CREATE  TABLE  IF NOT  EXISTS bank(
customerName  VARCHAR(10) NOT NULL  COMMENT ‘用户名’,
currentMoney  DE威驰L(十,二) NOT NULL  COMMENT ‘账户余额’
);
— 插入数据
INSERT INTO bank  VALUES(‘小黑’,50000),(‘小白’,500000);

 

BEGIN;   —  开启事务
 UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 UPDATE bank SET currentMoney=currentMoney+10000
 WHERE customerName=’小白’;
COMMIT;  —  手动提交业务
  UPDATE  bank SET currentMoney=10000;
ROLLBACK;   — 事务回滚

回滚事务  ROLLBACK TRANSACTION

概念二个存储进程的最简单易行的语法是
delimiter $$
create procedure usp_stulist()
begin
  select * from student
end$$
delimiter;

天涯论坛hoojo博主关于触发器的详实介绍:

叁.视图的使用 和探求基本表同样,直接通过select
select * from VW_stulist

print ‘查看转帐事务进度中的余额’
select * from bank

UPDATE bank SET currentMoney=currentMoney-10000
 WHERE customerName=’小黑’;
 —  故意写错字段名称  让0二  报错
UPDATE bank SET currentMoneysss=currentMoney+10000
 WHERE customerName=’小白’;
 

起先工业作  BEGIN TRANSACTION

—  小黑  给小白  转账10000
—   修改两条数据
—    01.小黑-10000
—    02.小白+10000

SELECT @count=count(*) FROM students S,Mark SC,course C

  I: ISOLation 隔开分离性  五个事情实施互不影响

WHERE S.sID=SC.sID AND SC.cID=C.cID

—  视图 是一张虚拟的表
   01.意味一张表的一对数据或许是多张表的汇总量据!
   02.组织和数据都以创设在对真表的询问基础之上的!
   0叁.视图中存放的数码实际上正是对真实表的引用!
     对视图中的数据开展加多,更新删除都会影响到实在的表!
   0四.一个真真的表能够创立N个视图!
   0五.要是视图关联了多表,差别意增 删!单表能够增加和删除改
   0六.视图一般都以应用查询!

 

SET  autocommit=一;  — 恢复活动提交

带有输出参数的储存进度,借使参数前边带有output,则代表此参数为出口参数,不然是平凡的输入参数,输入参数能够涵盖暗中同意值

一条恐怕多条sql语句的聚合!
 事务:正是一批操作的集聚,他们丹舟共济。要么都推行成功,要么都实行停业
二.政工的表征  ACID
  A:原子性  完整的,不可分割的

视图

  一致性(Consistency):事务必须确认保障数据库从1个一致性的气象变为另二个一致性的景观!

标签:, ,

Your Comments

近期评论

    功能


    网站地图xml地图