事务
事务是指将一系列数据操作捆绑成为一个整体进行统一管理(事务是一个整体,他们同生共死,要么都执行,要么都不执行)。
事务特性:
1.原子性:事物的各元素不可分割
2.一致性:事务完成后,数据必须处于一致状态
3.隔离性:两个事务彼此隔离,是无关的,一个执行成功,不影响另外一个事务执行的结果
4.持久性:事务完成后,数据库中数据永久保存
执行事务的语法:
1.开始事务
begin 或 start transaction;
2.提交事务
commit;
3.回滚(撤销)事务
rollback;
use mybank; /*--设置结果集以GBK编码格式显示*/ set names gbk; /*--开始事务(指定事务从此处开始,后续的sql的语句是一个整体)--*/ begin; /*要执行的SQL语句*/ /*提交事务,写入硬盘,永久保存*/ commit;
设置自动提交关闭或开启
set autocommit=0|1
值为0:关闭自动提交
值为1:开启自动提交
视图
是一张虚拟表,本质上保存的是sql语句。一般封装的是查询的sql
视图的好处:
结果更明显。不用我们关注到底这个视图的结果集是有几张基本表互联检索出来的
获取数据更明显
安全性更高
1.创建视图:
create view 视图名 as <select语句>
2.删除视图
drop view [if exists] 视图名;
3.查看视图
select 字段1,字段2...... from view_Name
存储过程 基础架构
delimiter $$ create procedure usp_stulist()(存储的名字) begin select * from student; end $$
delimit(空格) ;
权限:
create user wmj identified by '1'(任何人都可以访问) create user wmj @'localhost' identified by '1'(只有本机可以访问) 把什么权限给谁: grant 具体权限名称 update ,delete,insert on myschool.student to 表名
索引
是一种有效组合数据的方式,为了快速查找到指定记录
1.其实数据库中的数据是按页存放的
2.其实索引也是按页存放的,所以本质上也占硬盘空间,占得空间比较少,可以忽略
索引分类:
1.普通索引 :允许在定义索引的列中插入重复值和空值
2.唯一索引:不允许两行具有相同的索引值
3.主键索引:主键中的每个值是非空、唯一的,主键索引是唯一索引的特殊类型
4.复合索引:在创建索引时,并不是只能对一列创建索引,与创建主键一样,可以将多列组合作为索引。只在查询中使用了组合索引最左边字段时,索引才会被使用,即第一个字段作为前缀的集合
5.全文索引:在定义索引的列上支持列的全文查找
6.空间索引:对空间数据类型的列建立的索引
创建索引:
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.在频繁搜索的列上,适合建立索引
其实,索引是把双刃剑(利弊共存),如果使用不当,反而会降低检索速度
备份
mysqldump -u root -h host -p root dbname[tbname1[,tbname2......]]>filename.sql
恢复数据库
mysql -u root -p [dbname]<filename.sql
表数据导出文本文件
语法:select columnlist from tablename [where contion] into outfile 'filename' [option]
文本文档导入表数据
语法:load data infile filename into table tablename [option]