1.视图和索引
- 一张虚拟表,运行过程中动态从基表中获取数据。
视图没有真正物理存在(文件),本质从表中获取数据并展示。
视图的操作和表的操作一致,一般视图只做查询。
create view emp_ten
as
select * from emp1 where deptno=10 with check option;
with check option:限制视图无法修改创建视图的条件字段值。
销毁视图
Drop view emp_ten;
- 视图优点:
- 简化开发。
- 安全性(权限)。
- 定制化数据。
- 什么是索引:
提升查询效率创建的一组数据结构(表)。
索引经常使用BTREE索引(B+树)。
索引选择:
记录数较多。
增删改操作不能较多。
高基数列。
不能添加索引:
不要添加过多索引。
创建索引:
Create index index_name on tname(col);
修改索引:
Alter table stu add index(col);
组合索引:
Create index index_name on tname(col,col2);
唯一索引:
Create unique index index_name on tname(col);
(主键 unique 外键)
删除索引:
Drop index index_name on tname;
2.数据库的设计
- 三大范式:
1NF: 域必须是原子性。不可分割。
2NF: 非主键字段与主键直接相关,不能与主键的部分相关(联合主键)。
3NF: 非主键字段必须与主键直接相关,非主键字段之间不要直接关联。
- 数据库设计步骤
- Er图绘制(powerdesigner)
- 实体关系
- 一对一关系:
外键添加唯一约束
主键做外键
- 一对多(多对一) 多方
- 多对多 student 和 course
添加关系维护表
添加联合主键
3.数据库的优化
避免使用*
索引失效状况
索引列使用not/!=/<>/null/not null,索引失效
索引列进行模糊查询(包含),使用函数索引失效
索引列进行计算导致索引失效
Union代替or
Exists和in选择
4.数据库备份和还原
Mysqldump -uroot -proot dbname > d:/t.sql; 备份
mysql -uroot -p < C:\backup.sql 还原
source c:/backup.sql