1.视图(重点
视图本质就是对查询的封装,定义视图,建议以v_开头
create view 视图名称 as select语句;
例:创建视图,查询学生对应的成绩信息
create view v_stu_sco as
select students.*,scores.score from scores
inner join students on scores.stuid=students.id;
查看视图:查看表会将所有的视图也列出来
show tables;
删除视图
dropview 视图名称;
例:drop view v_stu_sco;
使用:视图的用途就是查询
select * from v_stu_score;
2.事务
事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
事务四大特性(简称ACID)
1.原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
2.一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
3.隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
4.持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
- 查看表的创建语句show create table students;
- 开启事务,命令如下:begin;
- 提交事务,命令如下:commit;
- 回滚事务,命令如下:rollback;
3.索引(重点
主键和唯一索引,都是索引,可以提高查询速度
主键是数据物理存储的位置
索引会单独创建一个目录,对应数据的位置
索引分单列索引和组合索引
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引
组合索引,即一个索引包含多个列
语法
查看索引show indexfrom 表名;
创建索引
- 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
- 字段类型如果不是字符串,可以不填写长度部分
create index 索引名称 on 表名(字段名称(长度))
- 删除索引:
drop index 索引名称 on 表名;
缺点
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE,因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
- 建立索引会占用磁盘空间的索引文件
示例
创建测试表testindex
create table test_index(titlevarchar(10));
向表中加入十万条数据
- 创建存储过程proc_test,在存储过程中实现插入数据的操作
- step1:定义分割符
delimiter //
- step2:定义存储过程
create procedureproc_test()
begin
declare i int default 0;
while i < 100000 do
insert into test_index(title) values(concat('test',i));
set i=i+1;
end while;
end //
- step3:还原分割符
delimiter ;
- 执行存储过程proc_test
call proc_test();