视图:

视图是用于包装sql查询语句的,有时候一条查询语句可能要写几十行,如果每次给服务器都要发送这么长的查询语句不太好,而且每次都要写这么长的语句也比较麻烦和消耗时间,所以视图就是用来解决这种问题的,视图将查询语句包装成一张表。所以视图又称为伪表、虚拟表,因为其实使用视图时和使用表差不多。


创建视图:

视图关键字是VIEW。

代码示例:

2905



2906


视图有三种引擎MERGE、TEMPTABLE、UNDEFINED:

2907

一般情况下大多数都是使用MERGE引擎,UNDEFINED引擎是mysql的一个算法引擎。

代码示例:

2908


修改视图:

修改视图使用修改关键字就可以了,跟修改表一样,只不过这张表里的数据是一条sql查询语句。

代码示例:

2909




删除视图:

删除视图和删除表格一样用DROOP删除。

代码示例:

2910


表格设计:

设计表格时在多方面考虑,并且表格设计下来后一般是不进行更改的,所以设计表格的时候就要思考,如何设计表格以后不会出改动表结构的情况,并且设计的表格需要有弹性,能够适应一些可能会出现的情况。

错误的表格设计方式示例:

2911

上图设计错误的地方有:1.不应该使用自动编号  2.性别不应该使用Boolean类型  3.电话号码不应该使用int类型  4.爱好不应该设计在此表中


问题1:使用int类型自动编号的话,万一哪一天数据量积累到一定程度int类型不够用了怎么办?一个系统会运作多久你不得而知,万一运作很多年积累的数据量可能会超出int类型能够存储的范围,所以在公司里开发不应该使用自动编号,可以使用varchar类型。


问题2:Boolean类型只有两个值true和false,虽然性别看上去只有男和女两个性别,但是万一需要一个保密的选项或者需要其他选项的情况呢?所以应该使用varchar类型会比较好一些,即便是使用枚举类型也不是太好,因为枚举类型也是定死了选项。


问题3:虽然国内的电话号码普遍是11位,但是万一需要存储国外的电话号码或者特别行政区的电话号码和座机号码呢?所以不能使用int类型,应该使用varchar类型。


问题4:一个人的爱好可以有很多的,如果所有的爱好都存储在一个字段里,需要修改、删除、更改某个爱好的时候无法单个的去操作。应该把爱好单独放在另一个表里,然后与学生这个表形成对应关系,这样才能更好的操作数据。


正确的表格设计方式示例:

2912




2913



设计思想

1.如何去设计表

1.必须有主键

2.每一行要能区分开来

3.一个列里面不能含有多种值

4.多用字符串类型

5.在表格设计的时候不要使用大数据类型

6.不能有重复值出现,其中一张表不能重复其他表格里已经存在的数据

2.我们怎么把业务形成表

一对多 一个主键对多个外键


一对一 主键对主键


多对多 需要三张表来维护

例如

一个人可以学习多门课程

一门课程可以给多个学生学习

一个角色可以有很多功能

一个功能可以分配到很多个角色