当前位置: 首页>编程语言>正文

ideachanges视图 idea数据库视图

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
4.事务+++存储过程 转账的例子

DELIMITER KaTeX parse error: Expected 'EOF', got '#' at position 51: … BEGIN #̲#错误总数默认是0 D…
 DELIMITER ;CALL test_sp800()

定义一个存储过程的最简易的语法是
delimiter ideachanges视图 idea数据库视图,ideachanges视图 idea数据库视图_ideachanges视图,第1张
delimiter;

模拟 银行转账!

– 创建数据库
CREATE DATABASE myBank;
– 切换指定的数据库
USE myBank;
– 创建表

CREATE TABLE IF NOT EXISTS bank(
 customerName VARCHAR(10) NOT NULL COMMENT ‘用户名’,
 currentMoney DECIMAL(10,2) NOT NULL COMMENT ‘账户余额’
 );


– 插入数据
INSERT INTO bank VALUES(‘小黑’,50000),(‘小白’,500000);

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

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

– 开启事务 START TRANSACTION 或者 BEGIN
– 01.02 为一个事务

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; – 恢复自动提交

1.概念

一条或者多条sql语句的集合!
事务:就是一堆操作的集合,他们同生共死。要么都执行成功,要么都执行失败
2.事务的特性 ACID
A:原子性 完整的,不可分割的

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

C: 一致性 事务执行完毕后,数据的状态是一致的()

一致性(Consistency):事务必须保证数据库从一个一致性的状态变成另一个一致性的状态!

I: ISOLation 隔离性 两个事务执行互不影响

隔离性(Isolation):每个事务之间互不干扰!哪怕是并发执行也不干扰!

D: 永久性 事务执行完后,对数据的影响是永久的。

持久性(Durability):事务一旦被改变,那么对数据库中数据的影响是永久性的!

3.事务操作的关键字
自动提交事务开关set autocommit=1
开始事务 start transaction /begin
提交事务 commit
回滚事务 rollback
set autocommit=1
4.事务+++存储过程 转账的例子

DELIMITER KaTeX parse error: Expected 'EOF', got '#' at position 51: … BEGIN #̲#错误总数默认是0 D…
 DELIMITER ;CALL test_sp800()

定义一个存储过程的最简易的语法是
delimiter ideachanges视图 idea数据库视图,ideachanges视图 idea数据库视图_ideachanges视图,第1张
delimiter;

模拟 银行转账!

– 创建数据库
CREATE DATABASE myBank;
– 切换指定的数据库
USE myBank;
– 创建表

CREATE TABLE IF NOT EXISTS bank(
 customerName VARCHAR(10) NOT NULL COMMENT ‘用户名’,
 currentMoney DECIMAL(10,2) NOT NULL COMMENT ‘账户余额’
 );


– 插入数据
INSERT INTO bank VALUES(‘小黑’,50000),(‘小白’,500000);

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

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

– 开启事务 START TRANSACTION 或者 BEGIN
– 01.02 为一个事务

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; – 恢复自动提交

视图

1.视图: 就是一张虚拟表,本质上存储的是一对SQL的集合

– 视图 是一张虚拟的表
01.表示一张表的部分数据或者是多张表的综合数据!
02.结构和数据都是建立在对真表的查询基础之上的!
03.视图中存放的数据其实就是对真实表的引用!
对视图中的数据进行添加,更新删除都会影响到真实的表!
04.一个真实的表可以创建N个视图!
05.如果视图关联了多表,不允许增 删!单表可以增删改
06.视图一般都是使用查询!

2.定义视图的语法:
create view VW_stulist(VW_视图的功能)
as
sql语句
小Tip:当多表中有同名列的时候,在视图这个虚拟表中,只能有一列。手工指定该列是哪个表的

3.视图的使用 和检索基本表一样,直接通过select
select * from VW_stulist

4.删除视图
drop view 视图名
drop table
drop database
drop index
drop constraint
归根结底:drop 删除是结构 delete 删除数据

5.查看所有库所有视图

5.1.切换到系统数据库
use information_schema

5.2.select * from views \G;

6.查看当前库的所有视图
show tables status where comment=‘view’

7.视图注意事项
1)视图可以查询多表数据
2)视图可以嵌套
3)update,insert,delete不能封装成视图内容,通过图形化界面可以操作数据(操作视图数据,影响的是基本表)。
4)删除视图数据的时候,有一定的限定,数据结果来源于多表的时候,不能删除

– 创建一个视图 只获取 学生姓名 编号 以及考试成绩
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



https://www.xamrdz.com/lan/59u1937245.html

相关文章: