写点什么

MySQL 基础之十六:视图、DBA 命令和三范式

用户头像
打工人!
关注
发布于: 3 小时前
MySQL基础之十六:视图、DBA命令和三范式

主要内容:

本篇内容做为 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 文件路径

数据库设计三范式:

  • 首先搞清楚什么是设计范式?

它就是设计表的依据,规则。按照范式要求设计出的表结构不会出现冗余。

  • 三范式:

  • 第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。

  • 第二范式:在第一范式的基础上,所有非主键字段完全依赖主键,不能产生部分依赖

当我们有表中字段关系是多对多的时候,一般是创建三张表,一个关系表,两个外键表

  • 第三范式:在二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。


发布于: 3 小时前阅读数: 2
用户头像

打工人!

关注

打工人! 2019.11.10 加入

InfoQ年度最佳内容获得者。 本人打工人一枚,自动化和控制专业入坑人一枚。目前在研究深度强化学习(DRL)技术。准备入坑互联网小白一枚。喜欢了解科技前沿技术,喜欢拍照。

评论

发布
暂无评论
MySQL基础之十六:视图、DBA命令和三范式