MySQL 基础之十六:视图、DBA 命令和三范式
![MySQL基础之十六:视图、DBA命令和三范式](https://static001.geekbang.org/infoq/d9/d918f8a6016d9bc91e2e538cd4d43ebb.jpeg)
主要内容:
本篇内容做为 MySQL 基础的收尾工作,主要讲解一下视图、几个 DBA 命令和数据库设计三范式。注意:MySQL 基础系列并不是 MySQL 的所有东西,它还有很多东西,等待着你去探索,系列文章只是起个抛砖引玉的作用,是很基础的东西。
视图(view):
首先搞清楚什么是视图?
初中的时候我们经常做立体图形的三视图,有什么主视图、左视图、俯视图。它实际上就是站在不同角度看同一个东西得到的结果。在 MySQL 中也是一样的,站在不同角度看数据。
如何创建视图,删除视图呢?
创建视图:create view myview as select empno,ename from emp;
mysql> show tables;
+-----------------------+
| Tables_in_test |
+-----------------------+
| dept |
| emp |
| flyway_schema_history |
| hibernate_sequence |
| myview |
| salgrade |
| t_class |
| t_student |
| t_user |
| user |
+-----------------------+
10 rows in set (0.00 sec)
从上面结果可以看出,数据库 test 中多了一个 myview 表。让我们看看这个表中都有什么:
mysql> select * from myview;
+-------+--------+
| empno | ename |
+-------+--------+
| 7369 | SMITH |
| 7499 | ALLEN |
| 7521 | WARD |
| 7566 | JONES |
| 7654 | MARTIN |
| 7698 | BLAKE |
| 7782 | CLARK |
| 7788 | SCOTT |
| 7839 | KING |
| 7844 | TURNER |
| 7876 | ADAMS |
| 7900 | JAMES |
| 7902 | FORD |
| 7934 | MILLER |
+-------+--------+
14 rows in set (0.00 sec)
从查询出来的结果可以看出:创建视图是把 empno 和 ename 两列数据单独摘出来生成了一个新表。
小贴士:
只有 DQL 语句才可以以视图对象的方式创建出来
可以对视图进行 CRUD 操作。
对视图进行增删改查操作,会对原数据产生影响。也就是说通过视图影响原表数据,但是不是直接操作原表。
那如何删除一个视图呢?
drop view myview;
DBA 命令:
现在来简单介绍两个常用的 DBA 命令:
导出数据库
注意在 cmd 命令中进行操作
导出整个数据库:
F:\database>mysqldump -uroot -p333 test>test.sql
导出数据库中的某个表:
F:\database>mysqldump -uroot -p333 test emp>emp.sql
导入数据:
create database test1;
use test1;
source sql 文件路径
数据库设计三范式:
首先搞清楚什么是设计范式?
它就是设计表的依据,规则。按照范式要求设计出的表结构不会出现冗余。
三范式:
第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。
第二范式:在第一范式的基础上,所有非主键字段完全依赖主键,不能产生部分依赖
当我们有表中字段关系是多对多的时候,一般是创建三张表,一个关系表,两个外键表
第三范式:在二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/35c4eb1c286c16b337b09f00a】。文章转载请联系作者。
评论