事务,视图,索引,备份和恢复

一、事务语法:

1.开始事务:

语法:begin或start transaction;

2.提交事务:执行的所有数据更新将永久地保存在数据库数据文件中

语法:commit;

3.回滚事务:将数据状态回滚到事务开始前

语法:rollback;

4.设置自动提交开或关

MySQL中默认开始自动提交模式

关:值:0 关闭自动提交  语法:set autocommit=0;

开:值:1 开启自动提交  语法:set autocommit=1;

二、编写事务时要遵循以下原则:

1.事务尽可能简短  2.事务中访问的数据量尽量减少  3.查询数据时尽量不要使用事务  4.在事务处理过程中尽量不要出现等待用户输入的操作

什么是视图?

视图是保存在数据库中的select查询

三、创建和使用视图

1.使用SQL语句创建视图

语法:create view 视图名

 as

 

注意:在SQL语句命名规范中,视图一般以view_xxx或v_xxx的样式来命名.

使用SQL语句删除视图

语法:drop view [is exists] 视图名

2.使用SQL语句查看视图数据

语法:select  字段1,字段2,.....from view_name;

使用视图要注意:每个视图中可以使用多个表与查询相似 一个视图可以嵌套另一个视图,但最好不要超过三层

对视图数据进行添加,更新和删除操作直接引用表中的数据 当视图数据来自多个表时,不允许添加和删除数据

四、索引

索引分类

普通索引  唯一索引  主键索引  全文索引  空间索引

普通索引:普通索引时MySQL中的基本索引类型,允许在定义的列中插入重复值和空值 它的唯一任务是加快对数据的访问速度

唯一索引:唯一索引不允许两行具有相同的索引值 创建唯一索引的列允许有空值

主键索引:主键索引要求主键中的每一个值非空,唯一的

复合索引:可以将对个列组合作为索引,这种索引称为复合索引

全文索引

全文索引的作用是在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值.



五、索引的语法

1.创建索引

语法:create [unique|fulltext|spatial] index index_name;

on table_name (column_name[length].....);



(1)UNIQUE | FULLTEXT | SPATIAL: 分别表示唯一索引,全文索引和空间索引,为可选参数

(2)Index_name :指定索引名

(3)Table_name:指定创建索引的表名

(5)column_name:指定需要创建索引的列

(6)Length:指定索引长度

 

2.删除索引

语法:  DROP INDEX index_name ON table_name;

 

(1)删除表时,该表的所有索引将同时被删除

(2)删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除.

 

3.查看索引

 

语法: SHOW INDEX FROM table_name;

 

(1)在查询语句后加”\G”,表示将结果集按列表示.


六:备份和恢复

 

mysqldump命令备份数据库

1.mysqldump命令格式

语法:mysqldump -u username -h host -ppassword dbname[tbname1[,tbname2.....]]

>filename.sql

 

解析:

Username:表示用户名

Host表示登录用户的主机名称,如本机为主机可省略

Password表示登录密码

Dbname为需要备份的数据库

Tbname为需要备份的数据表,可指定多张表,为可选项.如备份整个数据库则此项省略

Filename.sql表示备份文件的名称

 

2.mysql命令恢复数据库

 

语法: mysql -u username -p [dbname]

 

解析:

username 表示用户

Dbname 数据库名

filename.sql 为数据库备份后的文件

注意:在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在新数据库恢复数据库过程将会出错。

 

 

3.Mysql命令在DOS环境下的恢复数据库命令:



---创建数据库:mybank


CREATE DATABASE mybank;


---创建表:bank


CREATE TABLE bank(
customerName CHAR(10) COMMENT '用户名',
currentMoney DECIMAL(10,2) COMMENT '当前余额'
)


---插入数据


INSERT INTO bank(customerName,currentMoney) VALUES('张三',1000);


INSERT INTO bank(customerName,currentMoney) VALUES('李四',1);


---转账测试:张三希望通过转账,直接汇款给李四500元


UPDATE bank SET currentMoney=currentMoney-500;


WHERE customerName='张三';


UPDATE bank SET currentMoney=currentMoney+500


WHERE customerName='李四';


---执行事务,并提交事务


USE mybank;


---设置结果集以gbk编码格式显示


SET NAMES gbk;




---开始事务


START TRANSACTION;




INSERT INTO bank(customerName,currentMoney) VALUES('张三',1000);


INSERT INTO bank(customerName,currentMoney) VALUES('李四',1);


---提交事务,写入磁盘


COMMIT;


---开始事务回滚


START TRANSACTION;


UPDATE bank SET currentMoney=currentMoney-1000


WHERE customerName='张三';




---回滚


ROLLBACK;


---设置自动提交并关闭或开启


#关闭事务自动提交


SET autocommit=0;


---转账
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;









































你可能感兴趣的:(事务,视图,索引,备份和恢复)