海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020Javaweb教程之mysql数据库事务以及视图

未分类
2020-10-13 09:27:34
1822677238@qq.com

手机扫码查看

2020Javaweb教程之mysql数据库事务以及视图

2020Javaweb教程之mysql数据库事务以及视图

事务概述

​ 一组要么同时执行成功,要么同时失败的SQL语句。是数据库操作的一个不能分割执行单元。

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

事务开始于

– 连接到数据库上,并执行一条DML语句insert、update或delete
– 前一个事务结束后,又输入了另一条DML语句

事务结束于

– 执行commit或rollback语句。
– 执行一条DDL语句,例如create table语句,在这种情况下,会自动执行commit语句。
– 执行一条DDL语句,例如grant语句,在这种情况下,会自动执行commit。
– 断开与数据库的连接
– 执行了一条DML语句,该语句却失败了,在这种情况中,会为这个无效的DML语句执行rollback语句。

事务四大特性ACID

– Atomicity(原子性)

表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败

– Consistency(一致性)

表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前状态

– Isolation(隔离性)

事务查看数据操作时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

– Durability(持久性)

持久性事务完成之后,它对于系统的影响是永久性的。

开启事务
START TRANSACTION;
事务内数据操作语句
UPDATE account SET money=money-1000 WHERE id=1;
UPDATE account SET money=money+1000 WHERE id=2;
提交事务
COMMIT;
回滚
ROLLBACK;

时间处理

CURDATE():SELECT CURDATE()#获取当前日期

CURTIME():SELECT CURTIME()#获取当前时间

NOW():SELECT NOW()#当前日期和时间

WEEK(date):SELECT WEEK(NOW())#第几周,从1月开始计算

YEAR(date):SELECT YEAR(NOW())#获取年份

HOUR(time):SELECT HOUR(NOW())#获取小时

MINUTE(time):SELECT MINUTE(NOW())#获取分钟

DATEDIFF(date1,date2):SELECT DATEDIFF(NOW(),’2010-6-6′)#返回之间相隔的天数

ADDDATE(date,n):SELECT ADDDATE(NOW(),7)#日期加n天后的日期

 

字符串处理

concat():SELECT CONCAT(‘my’,’s’,’q’,’l’) #字符串连接

insert():SELECT INSERT(‘boss’,2,1,’i’) #字符串替换

lower(str):SELECT LOWER(‘APPLE’)#将字符串转小写

upper(str):SELECT UPPER(‘apple’) #将字符串转大写

substring(str,pos,num):SELECT SUBSTRING(‘appole’,1,4) #字符串截取

 

导出/导入数据库

导出数据库
mysqldump -uroot -p demos >目标路径

导入数据库
mysql -uroot -p
切换数据库,source 数据库文件地址

 

创建用户和授权

创建用户
CREATE USER ‘用户名’ IDENTIFIED BY ‘密码’

授权
GRANT ALL ON 库名 TO ‘用户名’

撤销授权
REVOKE ALL ON 库名 FROM ‘用户名’

删除用户
DROP USER ‘admin’

 

视图

什么是视图?

视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全。

视图的优点和缺点

优点
简单化,数据所见即所得
安全性,用户只能查询或修改他们所能见到得到的数据
逻辑独立性,可以屏蔽真实表结构变化带来的影响

缺点
性能相对较差,简单的查询也会变得稍显复杂
修改不方便,特变是复杂的聚合视图基本无法修改

创建视图:
CREATE VIEW 视图名 AS SELECT*FROM emp

使用视图:SELECT*FROM 视图名

注意:如果视图包含以下结构中的任何一种,则该视图不可更新
聚合函数、DISTINCT、 GROUP BY、HAVING、UNION、 UNION ALL、FROM子句中的不可更新的多个表、WHERE子句中的子查询,引用FROM子句中的表

视图的修改

#如果存在执行replace
#如果不存在执行create
CREATE OR REPLACE VIEW demo
AS
SELECT*FROM emp

#纯修改
ALTER VIEW demo AS SELECT*FROM dept

#删除视图
DROP VIEW demo,test

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注