一、事务
1.什么事务
(1).事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
(2).多个操作作为一个整体向系统提交,要么都执行、要么都不执行
(3).事务是一个不可分割的工作逻辑单元
2.事务的特性
属性 | 含义 |
---|---|
原子性(Atomicity) | 事务是一个完整的操作,事务的各部操作是不可分的,要么执行,要么都不执行 |
一致性(Consistency) | 当事务完成时,数据必须处于一致状态 |
隔离性(Isolation) | 并发事务彼此间隔,独立,他不应任何方式依赖于或影响其他事务 |
持久性(Durability) | 事务完成后,它对数据库的修改会永久保存 |
3.如何创建事务
(1).开始事务
BEGIN;
或
START TRANSACTION;
(2).提交和回滚
COMMIT;
ROLLBACK;
(3).使用事务模拟转账过程
BEGIN;
UPDATE bank SET bmoney=bmoney-1000 WHERE bname LIKE '%小白菜%';
UPDATE bank SET bmoney=boney+1000 WHERE bname LIKE '%豪%';
COMMIT;
二、视图
1.什么是视图
视图:虚拟表 只负责展示数据 不负责保存数据
视图分类:
a.单表视图:展示的数据来源于同一张表
b.复合视图:展示的数据来源于多张表
视图的注意事项:
1.单表视图可以进行增删改查操作,而且结果会保存到源表中
2.复合视图只可以进行查询操作,禁止增删改!<
2.使用视图查询学生:学号、姓名、邮箱
CREATE VIEW v_student AS
(SELECT studentno,studentname,email FROM student);
3.查询视图
SELECT * FROM v_student;
4.删除视图的数据
DELETE FROM v_student WHERE studentno=1020;
5.连接查询视图,比如查询教师里面的学号、姓名、家庭住址、成绩
CREATE VIEW v_teacher AS
(SELECT s.studentname,s.studentno,s.address,r.studentresult
FROM student s
INNER JOIN result r ON s.studentno=r.studentno);
6.创建视图显示学生姓名和平均成绩
CREATE VIEW v_test AS
(SELECT s.studentname,AVG(studentresult)
FROM student s
INNER JOIN result r ON s.studentno=r.studentno
GROUP BY s.studentname);
SELECT * FROM v_cj;
三、索引
1.什么是索引
1…索引是一种有效组合数据的方式,为快速查找到指定记录
2.索引的创建标准? 经常查询/操作队列
3.作用
大大提高数据库的检查速度
改善数据库性能
2.给学生姓名添加索引
CREATE INDEX index_name ON student(studentname);
3.删除索引
DROP INDEX index_name ON student;
4.查看表中的索引
SHOW INDEX FROM student;
四、备份和恢复
1.创建数据库
CREATE DATABASE schooldbtest;
2.使用DOS命令备份数据库
mysqldump -u root -p myschool> d:\myschool.sql
3.使用DOS命令恢复数据库
mysql -u root -p schoolDB<d:\myschool.sql
4.使用dos命令恢复数据库
source d:\myschool.sql
5.使用将表中的数据导出成文本文件
SELECT * FROM student INTO OUTFILE'd:\student.txt';
6.将文本数据导入表格
LOAD DATA INFILE 'd:\student.txt'INTO TABLE student;
7.创建无密码账户
CREATE USER yq @`localhost`;
8.创建带密码账户
CREATE USER admin @`localhost` IDENTIFIED BY 'bdqn';
9.查看系统的所有用户
SELECT * FROM USER;
10.创建用户并且授权
GRANT SELECT ON woschool.`result` TO xw @`localhost` IDENTIFIED BY 'xuewei';
11.给已经存在的账户授权
GRANT ALL ON woschool.* TO admin@`localhost`;
12.修改当前登录的账户的密码
SET PASSWORD=PASSWORD('123456');
13.修改其他账户的密码
SET PASSWORD FOR admin @`localhost`=PASSWORD('it');
14.删除用户
DROP USER yq @`localhost`;