SQL事务、SQL权限管理、SQL视图

13 篇文章 0 订阅

一、事务

start transaction;#开始事务
commit;#提交
rollback;#回滚

为什么使用事务

CREATE TABLE account(
	id INT,
	money INT
)CHARSET=utf8;
INSERT INTO account(id,money) VALUES(1,10000);
INSERT INTO account(id,money) VALUES(2,1000);

SELECT *FROM account;

#模拟转账,账户1给2转1000
UPDATE account SET money = money -1000 WHERE id = 1;
UPDATE account SET money = money +1000 WHERE id = 2;

以上代码如果在给账户1的减1000后但是给账户2加1000的操作由错误

使用需要事务

事务是一个原子操作,在一个事务中,所有的SQL语句都成功执行时,整个事务成功,有一个SQL语句执行失败,整个事务都执行失败

DROP TABLE account;

START TRANSACTION;
CREATE TABLE account(
	id INT,
	money INT
)CHARSET=utf8;
INSERT INTO account(id,money) VALUES(1,10000);
INSERT INTO account(id,money) VALUES(2,1000);

SELECT *FROM account;

#模拟转账,账户1给2转1000
UPDATE account SET money = money -1000 WHERE id = 1;
UPDATE account SET money = money +1000 WHERE id = 2;

COMMIT;
ROLLBACK;

rollback如果有SQL语句执行失败,则所有操作回到最初的状态

二、权限管理

create user 'zhangsan' identified by '1234';

上述语句执行成功后
新建连接mysql2
就可以用;用户名:zhangsan 密码:1234 端口号:3308重新登录一个
但是没有查看权限

#创建用户
CREATE USER 'zhangsan' IDENTIFIED BY '1234';
#授权
GRANT ALL ON companydb.* TO 'zhangsan';
#撤销权限
REVOKE ALL ON companydb.* FROM 'zhangsan';
#删除用户
DROP USER 'zhangsan';

三、视图概念、创建、使用

#创建视图
CREATE VIEW t_empinfo
AS
SELECT employee_id,first_name,last_name,email,salary 
FROM t_employees;
#使用视图
SELECT * FROM t_empinfo WHERE employee_id = '100';
#如果视图存在则修改,反之,则进行创建
CREATE OR REPLACE VIEW t_empinfo 
AS
SELECT employee_id,first_name,last_name,email,salary,department_id
FROM t_employees;
#直接对已存在的视图修改
ALTER VIEW t_empinfo
AS 
SELECT employee_id,first_name,last_name,email,salary,department_id
FROM t_employees;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

素心如月桠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值