视图
- 视图视图是一个虚拟表,从一个或者多个表中导出,视图的行为与表非常相似。
- 在视图中可以使用select语句查询数据,以及使用insert、update和delect语句修改记录。
- 视图操作、使用方便,而且可以保证数据库系统的安全(可以限制表中的机密数据)。
- 视图一经定义遍储存在数据库中,与其相应的数据并没有像表那样在数据库中再储存一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,对基本表中的数据进行修改的时候,这种变化也自动地反映到视图中。
- 视图的作用:
- 提高了重用性,就像一个函数
- 对数据库重构,却不影响程序的运行
- 提高了安全性能,可以对不同的用户
- 让数据更加清晰
- 创建视图:
- 单个表上创建视图、多个表上创建视图
- 创建的语法形式:
- creat view 视图名称 (视图的字段名称表) as select语句;
- 建议视图名称以 v_开头
# 示例一:
cteate view v_new_table (id, name, glass)
as select table1.id, table1.name, table2.glass
from table1, table2 where table1.g_id=table2.id;
# 示例二:
create view v_new_table
as select table1.*, table2.name
from table1 left join table2
on table1.g_id=table2.id;
- 查看数据库中所有表(show tables),会把视图表显示出来。
- 查看视图:
- select * from 视图表名称;
- 修改视图:
- create or replace view 语句修改视图
- 该语句与创建视图语句一样:
- 当视图存在的时候,修改语句对视图进行修改;
- 当视图不存在的时候,创建视图。
- alter 语句修改视图:
- alter view 视图名 as select语法;
- 删除视图:
- drop view [if exists] 视图名;
事务
- 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
- 例如:银行转账工作:从一个账号扣钱并使一个账号赠款,这两个操作要么都执行,要么都不执行。所以,应该把他们(扣款、赠款)看成一个事务。
- 事务是数据库维护数据一致性的单位,每个事务结束时,都能保持数据一致性。
- 事务四大特效(简称ACID):
- 原子性(Atomicity)
- 一个事务必须被视为一个不可分割的最小工作单元,整个事务中所有的操作要么全部执行,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。
- 一致性(Consistency)
- 数据库总是从一个一致性的状态转换到另一个一致性的状态。(相当于前面的例子,要么所有的操作要么全部执行,要么全部失败回滚)
- 隔离性(Isolation)
- 通常来说,一个事务所做的修改在最终提交以前,对其他的事务视而不见。
- 持久性(Durability)
- 一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)
事务命令
- 重点:数据表的引擎必须是innodb类型才可以使用事务,这是mysql表的默认引擎。
- 查看表的创建语句,就可以看到表的引擎engine。
- 开启事务:
- 开启事务后执行修改命令,变更会维护到本地缓存中,而不会维护到物理表中。
- begin; 或者 start transaction;
- 提交事务:
- 将缓存的书库提交变更维护到物理表中。
- commit;
- 回滚事务:
- 放弃缓存中的变更数据
- rollback;
索引操作
- 何为索引?
- 索引是一个单独的、存储在磁盘上的数据结构,包含对数据表李所有记录的引用指针。
- 更通俗一点来说,数据库索引就好比是一本XX字典的目录,能加快数据的查询速度。
- 查看索引:
- show index from 表名;
- 给表中某个字段创建索引:
- 注意:当数据表创建主键和外键的时候,会自动创建索引
- 因此用主键和外键搜索数据,相当快。
- create index 创建的索引名 on 表名(字段名(长度))
- 若字段名是字符串需要带上长度,且尽量与定义字段时的长度相同。
- alter table 表名 add index 索引名(字段名(长度))
- 删除索引:
- drop index 索引名称 on 表名;
- alter table 表名 drop index 索引名;