什么是事务:
1:事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
2:多个操作作为一个整体向系统提交,要么都执行、要么都不执行
3:事务是一个不可分割的工作逻辑单元
事物必须具备的四个属性,ACID属性:
1:原子性(Atomicity)
事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
2:一致性(Consistency)
当事务完成时,数据必须处于一致状态
3:隔离性(Isolation)
并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
4:持久性(Durability)
事务完成后,它对数据库的修改被永久保持
MySQL中支持事务的存储引擎有InnoDB和BDB
1:开始事务:BEGIN ;
或
START TRANSACTION;
2:提交事务:COMMIT ;
3:回滚(撤销)事务:ROLLBACK ;
默认情况下,每条单独的SQL语句视为一个事务
关闭默认提交状态后,可手动开启、关闭事务
关闭/开启自动提交状态: SET autocommit = 0|1;
值为0:关闭自动提交
值为1:开启自动提交
关闭自动提交后,从下一条SQL语句开始则开启新事务,需使用COMMIT或ROLLBACK语句结束该事务
1:视图是一张虚拟表:
①表示一张表的部分数据或多张表的综合数据
②其结构和数据是建立在对表的查询基础上
2:视图中不存放数据
③数据存放在视图所引用的原始表中
④一个原始表,根据不同用户的不同需求,可以创建不同的视图
视图的用途:
1:筛选表中的行
2:防止未经许可的用户访问敏感数据
3:降低数据库的复杂程度
4:将多个物理数据库抽象为一个逻辑数据库
使用SQL语句创建视图:
CREATE VIEW view_name
AS
使用SQL语句删除视图:
DROP VIEW [IF EXISTS] view_name;#[IF EXISTS]删除前查询是否有这个视图
使用SQL语句查看视图:
SELECT 字段1, 字段2, …… FROM view_name;
使用视图注意事项:
1:视图中可以使用多个表
2:一个视图可以嵌套另一个视图
3:对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
4:当视图数据来自多个表时,不允许添加和删除数据
查看所有视图:
USE information_schema;
SELECT * FROM views\G;
使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询
索引是一种有效组合数据的方式,为快速查找到指定记录
作用:
1:大大提高数据库的检索速度
2:改善数据库性能
MySQL索引按存储类型分类
1:B-树索引:InnoDB、MyISAM均支持
2:哈希索引
普通索引:基本索引类型。循序在定义索引的列中插入重复值和空值
唯一索引:索引列数据不重复、循序有空值
主键索引:主键列中的每个值是非空、唯一的!一个主键将自动创建主键索引
复合索引:将多个列组合作为索引
全文索引:支持值的全文查找、循序重复值和空值
空间索引:对空间数据类型的列建立的索引
创建索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name[length]…);
删除索引:
DROP INDEX index_name ON table_name;
删除表时,该表的所有索引同时会被删除
查看索引:
SHOW INDEX FROM table_name;
按照下列标准选择建立索引的列:
1:频繁搜索的列
2:经常用作查询选择的列
3:经常排序、分组的列
4:经常用作连接的列(主键/外键)
请不要使用下面的列创建索引:
1:仅包含几个不同值的列
2:表中仅包含几行
注意:
1:查询时减少使用*返回全部列,不要返回不需要的列
2:索引应该尽量小,在字节数小的列上建立索引
3:WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前
4:避免在ORDER BY子句中使用表达式
mysqldump命令——MySQL一个常用的备份工具
将CREATE和INSERT INTO语句保存到文本文件
属于DOS命令。
mysqldump是DOS系统下的命令,
在使用时无须进入mysql命令行,否则将无法执行
备份文件包含的主要信息:
1:备份后文件包含信息MySQL及mysqldump工具版本号
2:备份账户的名称
3:主机信息
4:备份的数据库名称
5:SQL语句注释和服务器相关注释
6:CREATE和INSERT语句
恢复数据库:
方法一:使用mysql命令恢复数据库
mysql –u username –p [dbname] < filename.sql
使用备份文件将myschool数据库中student表信息恢复到schoolDB数据库中
mysql –u root –p schoolDB < d:\backup\myschool_20160808.sql
方法二:使用source命令恢复数据库
source filename;
登录MySQL服务后使用
执行该命令前,先创建并选择恢复后的目标数据库
注意:
导出/导入数据——可实现数据库服务器间移动数据
SELECT * FROM tablename
[WHERE contion]
INTO OUTFILE ‘filename’ [OPTION]
文本文件导入到数据表:
LOAD DATA INFILE filename INTO TABLE tablename [OPTION]
导入数据前应确保目标表已存在!