目录
1.事务的四个属性,简称ACID属性
原子性:事务是一个完整的操作,事务的各部操作是不可分的(原子性的),要么都执行,要么都不执行
一致性:当事务完成时,数据必须处于一致状态
隔离性:并发事务之间彼此隔离、独立,它不应该以任何方式依赖于或影响其他事务
持久性:事务完成之后,它对数据库的修改被永久保持
2.如何创建事务
开始事务
BING;
或
start transaction;
提交事务
commit;
回滚(撤销)事务
rollback;
从张三的账户转出500元,存入李四的账户中
BEGIN;
Update bank set currentmoney=currentmoney-500 where customername='张三';
Update bank set currentmoney=currentmoney+500 where customername='李四';
commit;
3.自动关闭和开启事务
关闭/开启自动提交状态
set autocommit=0/1;
值为0:关闭自动提交;
值为1:开启自动提交;
4. 视图的用途
筛选表中的行
防止未经许可的用户访问敏感数据
降低数据库的复杂程度
将多个物理数据库抽象为一个逻辑数据库
5.如何创建视图
创建视图
create view view_name AS
<select 语句>;
删除视图
Drop view [if exists] view_name;
查看视图
select 字段1,字段2 ...from view_name;
6.视图注意事项
视图中可以使用多个表
一个视图可以嵌套另一个视图
对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
当视图数据来自多个表时,不允许添加和删除数据
查看所有视图
use information_schema;
select * from view\G;
使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询
7.索引
索引是一种有效组合数据的方式,为快速查找指定记录
作用:大大提高数据库的检索速度 改善数据库性能
优缺点:查询和修改运行速度提升,增加和删除运行速度降低
如何创建索引/删除索引
创建索引
create index index_name on table_name(column_name[length]);
删除索引
drop index index_name on table_name;
删除表时,该表的索引同时会被删除
在student表的studentname列创建普通索引
use myschool;
create index index_student_student_name on student(studentname);
查看索引
show index from table_name;
索引的类型
1.普通索引
#设置memName列为普通索引
CREATE INDEX index_name ON member (memName);
2.唯一索引
#设置identityNum列为唯一索引
CREATE UNIQUE INDEX index_identityNum ON member (identityNum);
3.主键索引
#设置id列为主键索引
CREATE TABLE memName ADD PRIMARY KEY(id);
设置为主键列自动存在主键索引
4.全文索引
#设置remake列为全文索引
CREATE FULLTEXT INDEX index_remake ON member (remake);
主要的参数含义如下。
Table:创建索引的表
Non_unique:索引是否非唯一
Key_name:索引的名称
Column_name:定义索引的列字段
Seq_in_index:该列在索引中的位置
Null:该列是否能为空值
Index_type:索引类型
需要建立索引的列:
频繁搜索的列。
经常用作查询选择的列。
经常用作排序丶分组的列。
经常用作连接的列(主键/外键)。
不需要建立索引的列:
仅包含几个不同值的列。
表中仅包含几行。为小型数据表创建索引可能不太实用,因为在索引中搜索数据所花的时间比在数据表中逐行搜索数据所花的时间长。
8.数据库的备份
mysqldump命令——一个常用备份工具
mysqldump -uroot -p >filename.sql
恢复数据库
方法一:使用MySQL命令恢复数据库
mysql -u usename(用户名) -p[dbname](数据库名)<filename.sql(备份文件名)
注意:1.MySQL 为DOS命令
2.在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在恢复数据库过程将会出错
使用备份文件将myschool数据库中student表信息恢复到schoolDB数据库中
mysql -u root -p schoolIDB<d:.....
方法二:使用source命令恢复数据库
source filename;
注意:登陆MySQL服务器后使用
执行该命令前,先创建并选择恢复后的目标数据库
例:
create database myschoolIDB2; #创建数据库
USE myschoolIDB2 #选择数据库
source d:\.... #恢复数据库
9.表数据导出到文本文件
select * from tablename[where contion] into outfile filename [option]
例:select * from result where subjectno=(select subjectno from subject where subjectname='Logic java')
into outfile d:/.....;
LOAD data infile filename into table tablename[option] #文本文件导入数据表
LODA DATA infile d:/..... INTO TABLE result; #将数据从文本文件导入到myschoolIDB的result表
本章总结
- 事务(Transaction) 指将一系列数据操作捆绑成为一个整体并进行统一管理的机制。
- 事务的4个特性,即原子性(Atomicity)丶一致性(Consistency)丶隔离性(Isolation)及持久性(Durability),这些特性通常简称ACID。
- MySQL中常用的索引包括普通索引(INDEX)丶唯一索引(UNIQUE)丶主键索引(PRIMAPYKEY)和全文索引(FULLTEXT)。
- 视图通常用来进行以下3种操作。
- 筛选表中的行。
- 防止未经许可的用户访问敏感数据。
- 将多张物理数据表抽象为一张逻辑数据表
- 可以使用mysqldump和Navicat的导出功能将数据库备份到SQL脚本文件中。导出后的SQL脚本可以在操作系统命令行丶MySQL命令行或Navicat中实现数据库的恢复。
练习小作业:
- 使用事务为处方表插入多条数据。
- 为病人表添加合适的索引。
- 使用视图查看病人的医疗总费用。
- 备份并恢复hospital数据库。