本文主要是介绍数据库从入门到出门之四,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一:视图
二:索引
索引列的选择
三:数据库如何设计
四:数据库的简单优化
五:备份和还原
一:视图
#数据库对象,一个虚拟表,底层并非以键值的形式保存数据,在执行过程中
#动态从基表获取数据(视图以表为底层来查询)
视图其实就是提高查询效率的中间件,就像子查询 (select ename,deptno from emp) as wtf 查出来的作为 wtf表。
底层其实就是一条select 语句。
上demo 吧
create or replace view view_emp
as
select * from emp where deptno=20 with check option;
select * from view_emp;
update view_emp set deptno=10;#whit check option 保护视图数据,只能在视图范围之内进行数据的修改。
#修改视图会修改底层基表数据,视图一般只执行查询 不支持增删改
#优点:安全性:保密敏感字段 高效性:提高查询效率 定制化数据:可以将多张表中经常展示的数据放置在视图中
#销毁视图
drop view view_emp;
上边的demo 没办法修改deptno 因为 有限制 ,注意是deptno 不能修改,会报错,其他的一样的
create view view_emp
as
select * from emp;
所以就别对视图进行增删改操作。
二:索引
#为提升查询效率而创建数据结构
#B-Tree B+树索引 多路搜索树
#在 mysql中 默认采用 B+树方式来维护 索引列数据
#B+树是一个多路搜索树
#不同的存储引擎,对索引的存储策略不一样的
#Myisam 叶子节点中保存记录的地址
#innodb 叶子节点中直接保存相应的数据
#位图索引 哈希索引
上边看不懂也没关系:索引初学者,用就行了:
上demo吧
#普通索引system>const>eq_ref>ref>......>ALL;explain select * from emp where ename='scott';create index index_ename on emp (ename); #主键 和唯一约束 就是索引 特殊的唯一索引#唯一索引create unique index index_name on table(字段);
#全文索引
#空间索引
#复合索引 多列作为索引字段
#删除索引
drop index index_ename on emp;
索引列的选择
#索引需要单独的文件来保存维护
#表数据发生变化,需要维护索引表
#适合添加索引
#表数据量足够大
#增删改操作较少
#高基数列:不一样的数据比较多
#索引说明 :
#索引不适合添加过多
#经常作为查询条件的列适合作为索引列
#某些情况下索引会失效 or like-包含
三:数据库如何设计
#数据库设计的含义
#查询和项目的基础,数据库的优化前提就是数据库设计
#数据库设计步骤,
#1.需求分析 2.概念结构设计阶段 3.逻辑设计阶段 4.物理设计阶段 5.数据库实施 6.运行和维护
#数据库设计的三大(共六个)范式
#1NF
所有的域都是原子性的,域中的数据不可分割,比如地区 就可以分割为省市区
#2NF
非主键字段必须与主键相关(每张表只描述一类事物),而不能与主键不部分相关。
#3NF
非主键字段必须与主键直接相关,非主键字段之间不能相关。
#客观世界的模型展示。
实体:矩形框
关系:菱形框
属性:椭圆形框
连线:连接关系
#实体之间的关系
一对一 /多对一/多对多
#一对一:1.外键添加唯一约束 2.外键做主键
#一对多:雇员和部门
#多对多:添加第三张关系表设置外键和联合主键
四:数据库的简单优化
这里的优化只是对于sql而言的:
#数据库优化-----------------------------
#sql 优化
#避免用*,(*会转换为列名,然后再查询)
#索引失效的状况
#索引列不要使用 is null/is not null
#索引上 不要使用函数
#索引列不要计算
#索引列不要使用 not(!=/<>)
#索引列 不要使用 or 可以使用 union替换
#索引列不要使用 包含 like '%s%'
#EXISTS 和in 的选择
exists 先执行主查询,in 先执行子查询
先过滤再关联
五:备份和还原
#备份和还原------------------------
Mysqldump -uroot -proot dbname > /users/songqi/desktop/1.sql
mysql -uroot -proot < /users/songqi/desktop/1.sql
以上,数据库入门就到这里,如有不正,还请指出。
这篇关于数据库从入门到出门之四的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!