视图
视图就是一张虚拟的表,解决了隔绝了数据库
1、通俗来讲,视图就是一条SELECT语句执行后返回的结果集,所以在创建视图的时候,主要工作就落在创建这条SQL查询语句上了—方便查询
2、视图是对若干张基本表的引用,一张徐彪,查询语句执行结果,不储存具体数据(基本表放生改变,视图也会跟着改变)
优点:
方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
定义视图
建议以 v_ 开头
create view 视图名称 as select 语句;
查看视图
查看表会将所有的视图也列出来
show tables;
使用视图
视图的用途就是查询
select * from v_stu_score
删除视图
drop view 表名
注意
在创建单表视图的时候,修改是视图表,基本表会发生改变;多张表组成的视图,视图修改基本表不会改变-----不建议从视图修改数据
总结–视图的作用
1、提高了重用性,就像一个函数
2、对数据库重构,却不影响程序的运行
3、提高了安全性能, 可以对不同的用户
4、让数据更加清晰
事务
保证数据执行的完整性
事务: 它是一个操作序列,这些操作要么执行,要么不执行,它是一个不可分割的工作单位。
事务的四大特性(简称ACID)
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
原子性
一个事务必须视为一个不可分割的最小单元,在整个事务的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作——这是事务的原子性
一致性
数据库总是从一个一直性的状态转换到另一个一致性的状态。(在下面示例中,一致性确保了,即是在执行过程中,系统崩溃,支票账户中也不会顺势200美元,因为食物最终没有提交,所以在事务中所做的修改也不会保存到数据库中)
隔离性
通常来说,一个事务所做的修改在最终提交前之前,对其他事务是不可见的。
持久性
一旦事务提交,则会所做的修改永久保存在数据库。(此时即时是数据库崩溃,修改数据也不会丢失)
示例
1、检查支票账户的余额高于或者等于200美
2、从支票账户余额中减去200美元。
3、在储蓄帐户余额中增加200美元。
需要操作的以上步骤必须打包到一个事务中,任何一个步骤失败,则必须回滚所有步骤
事务命令
表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎
查看表的创建语句,可以看到engine=innodb
# 选择数据库
use 数据库名
# 查看表名
show create table goods;
开始事务
begin
或者
start transaction
提交事务
- 将缓存中的数据变更维护到屋里表中
commit;
回滚事务
- 放弃缓存中变更的数据
rollback
注意
- 1、修改数据的命令会自动的触发事务,包括insert、update、delete
- 2、在SQL语句中有手动开始事务的原因:可以进行多次数据修该,如果成功一起成功,否则一起回滚到之前的数据
索引
加快数据库的查找速度
- 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),他们包含对数据表李所有记录的引用指针
- 通俗来说:数据库索引就好比是一本书面前的目录,能加快数据库的查询速度
索引的原理
索引的使用
查看索引
show index from 表名
创建索引
* 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
* 字段类型如果不是字符串,可以不填长度
create index 索引名称 on 表名(字段名称(长度));
# 注意!!! 字段类型如果不是字符串,可以不写长度
删除索引
drop index 索引名称 on 表名;
开启运行时间监测
set profiling=1;
查看执行时间
show profiles;
注意!!!
要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
建立索引会占用磁盘空间
账户管理
1、查看所有用户
- 所有用户及权限信息存储在mysql数据库的user表中
- 查看user表的结构
- 主要字段说明:
- Host 表示允许访问的主机
- User表示用户名
- authentication_string 表示密码,为加密后的值
查看所有用户
select host,user authentication_string from user
创建账户、授权
- 需要使用实例级账户登录后操作,以root为例
- 常用权限主要包括:create、alter、drop、insert、update、delete、select
- 如果分配所有权限,可以使用all privileges
创建账户&授权
# 在设置指定数据库时需要 “数据库名.表名”如果查看全部 “数据库名.*”
grant 权限列表 on 数据库 to '用户名' @'访问主机' identified by '密码';
- 访问主机通常使用 百分号% 表示此账户可以使用任何ip的主机登录访问此数据库
- 访问主机可以设置成 localhost或具体的ip,表示只允许本机或特定主机访问
查看用户有哪些权限
show grants for 登录名@访问地址;
修改权限
grant 权限名 on 数据库 to 账号@主机 with grant option;
修改密码
update user set authentication_string=password('新密码') where user='用户名';
- 注意修改后需要刷新权限
# 刷新权限
flush privileges;
删除账户
# 使用root登录
drop user '用户名'@'主机';
例:
drop user 'laowang'@'%';’
# 语法2:使用root登录,删除mysql数据库的user表中数据
delete from user where user='用户名';
例:
delete from user where user='laowang';
-- 操作结束之后需要刷新权限flush privileges
flush privileges
本文深入解析数据库中的视图、事务和索引概念,探讨它们如何提高数据查询效率、保证数据完整性和安全性。通过实际案例,阐述了视图的创建与使用、事务的ACID特性以及索引的优化作用。
350

被折叠的 条评论
为什么被折叠?



