什么是事务 :
事务(TRANSACTION) : 是作为单个逻辑工作单元执行的一系列操作 .
a . 多个操作作为一个整体向系统提交,要么都执行、要么都不执行 .
b . 事务是一个不可分割的工作逻辑单元 .
事务必须具备以下四个属性,简称ACID 属性 :
原子性(Atomicity) :事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
一致性(Consistency) :当事务完成时,数据必须处于一致状态
隔离性(Isolation) :并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
持久性(Durability) :
事务完成后,它对数据库的修改被永久保持
MySQL中支持事务的存储引擎有 InnoDB 和 BDB
开始事务 :
语法: BEGIN ; 或 START TRANSACTION;
提交事务 :语法: COMMIT ;
BEGIN; #开始事务(指定事务从此处开始,后续的SQL语句都是一个整体
/*--转账:张三的账户减少500元,李四的账户增加500元--*/
UPDATE `bank` SET `currentMoney`=`currentMoney`-500
WHERE `customerName`='张三';
UPDATE `bank` SET `currentMoney`=`currentMoney`+500
WHERE `customerName`='李四';
COMMIT; #提交事务,事务结果
回滚(撤销)事务 :
语法: ROLLBACK ;
BEGIN;
UPDATE `bank` SET `currentMoney`=`currentMoney`-1000 WHERE `customerName`='张三';
ROLLBACK; #回滚事务,数据恢复到原始状态
自动关闭和开启事务
a . 默认情况下,每条单独的SQL语句视为一个事务
b . 关闭默认提交状态后,可手动开启、关闭事务
语法 :
关闭自动提交状态 值为0:关闭自动提交
SET autocommit = 0 ;
开启自动提交状态 值为1:开启自动提交
SET autocommit = 1;
注 : 有开必须的有关!!!!
SET autocommit=0; #关闭自动 提交,以下视为一个事务
/*--转账:张三的账户减少500元,李四的账户增加500元--*/
UPDATE `bank` SET `currentMoney`=`currentMoney`-500
WHERE `customerName`='张三';
UPDATE `bank` SET `currentMoney`=`currentMoney`+500
WHERE `customerName`='李四';
COMMIT; #提交事务
UPDATE `bank` SET `currentMoney`=`currentMoney`-1000 WHERE `customerName`='张三';
ROLLBACK; #回滚事务
SET autocommit = 1; #开启自动 提交,恢复默认状态
视 图 :
为什么需要视图 ?
1. 不同的人员关注不同的数据
2. 保证信息的安全性
什么是视图 ?
视图是一张虚拟表
a.表示一张表的部分数据或多张表的综合数据b.其结构和数据是建立在对表的查询基础上
视图中不存放数据
a.数据存放在视图所引用的原始表中
一个原始表,根据不同用户的不同需求,可以创建不同的视图
视图的用途 :
a. 筛选表中的行
b. 防止未经许可的用户访问敏感数据
c. 降低数据库的复杂程度
d. 将多个物理数据库抽象为一个逻辑数据库
使用SQL语句创建视图语法 : CREATE VIEW 视图名字 AS <SELECT 语句>;
使用SQL语句删除视图
语法 : DROP VIEW [IF EXISTS] 视图名 ; # [IF EXISTS] 删除前判断视图是否存在 可以不写
使用SQL语句查看视图
语法 : SELECT 字段1, 字段2, …… FROM 视图名 ;
CREATE VIEW view_studebt #创建视图
AS
SELECT `studentName`,sub.`subjectName`,AVG(`studentResult`)
FROM `student` AS s
INNER JOIN `result` AS r ON r.`studentNo` = s.`studentNo`
INNER JOIN `subject` AS sub ON sub.`subjectNo` = r.`subjectNo`
GROUP BY `studentName`,`subjectName`;
SELECT * FROM view_studebt; #对视图进行查询
DROP VIEW `view_namesdss`; #对视图进行删除
使用视图注意事项 :
a . 视图中可以使用多个表
b . 一个视图可以嵌套另一个视图
c . 对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
d . 当视图数据来自多个表时,不允许添加和删除数据
查看所有视图 :
输出结果 :
注 : 使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询 !!!
索 引
什么是索引 :
索引是一种有效组合数据的方式,为快速查找到指定记录
作 用
大大提高数据库的检索速度
改善数据库性能
MySQL索引按存储类型分类
B-树索引:InnoDB、MyISAM均支持
哈希索引
常 用 索 引 类 型
创 建 索 引
语法: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name # index_name 创建的索引名字
#unique 表示 唯一索引 fulltext 全文索引 spatial 空间索引 不添加也可以默认普通索引
ON table_name (column_name[length]…);
# table_name 表示表名 (column_name[length]…) 字段
例: 在student表的studentName列创建普通索引
USE myschool; #先打开数据库
CREATE INDEX `index_student_studentName` #创建的普通索引
ON `student`(`studentName`);
删 除 索 引
语法: DROP INDEX index_name ON table_name;
# index_name 索引名字 table_name 表名字
注: 删除表时,该表的所有索引同时会被删除
查 看 索 引
语法 : SHOW INDEX FROM table_name; # 后面接表名
表中个开头单词所代表的的意思 :
数 据 库 备 份
为什么进行数据库备份
1,防止突然断电
2.防止病毒入侵
3.防止误操作导致数据丢失
4............(还有许多...)
使 用 mysqldump 命令备份数据库
mysqldump命令——MySQL一个常用的备份工具
将CREATE和INSERT INTO语句保存到文本文件
属于DOS命令#mysqldump 命令 用户名 密码 数据库 表 地址
使用mysqldump命令备份数据库常用参数选项
备份文件包含的主要信息 :
备份后文件包含信息MySQL及mysqldump工具版本号
备份账户的名称
主机信息
备份的数据库名称
SQL语句注释和服务器相关注释
CREATE和INSERT语句
恢 复 数 据 库
是一种 :
第二种 : 使用source命令恢复数据库
语法 : source filename; #后面接的是备份地址
注 : 登录MySQL服务后使用
执行该命令前,先创建并选择恢复后的目标数据库
表数据导出到文本文件
导出数据——可实现数据库服务器间移动数据
语法: SELECT * FROM tablename
[WHERE contion]
INTO OUTFILE 'filename' [OPTION]
导入数据——可实现数据库服务器间移动数据
语法: LOAD DATA INFILE filename INTO TABLE tablename [OPTION]