Daichong'blog

 上篇简单的介绍了视图的概念,那么这篇将告诉大家如何创建、修改、删除视图,也就是视图的基本操作了!

一、在单表上创建视图

1
2
3
4
5
6
7
8
# 创建表 user
create table user (id int,name varchar(10),age tinyint(3));
# 插入数据
insert into user values(1,'张三',20),(2,'李四',20);
# 创建视图-并计算他们两年之后多少岁
create view view_user as select id,name,age+2 as age from user;
# 第二种写法
create view view_user_1(user_id,user_name,user_age) as select id,name,age from user;

一、视图的含义

 1.视图是从一个或多个表中导出的,视图的行为与表非常的相似,但视图是一个虚拟的表。在视图中可以使用Select语句进行查询,也可以使用InsertUpdateDelete,视图还可以从已经存在的视图的基础上定义(也就是视图上再做视图)。

两张多对多关系的表进行数据关联查询,有两种常见的写法(我只知道两种,嘿嘿):
(1) 从主表中查出来所关联的字段,例如order_id,然后循环数组将order_id用逗号隔开;副表进行in查询(当然这种写法比较low,新手使用的比较多)

(2) 使用leftJoin关联,左边为主表
以上仅举例

有些情况下只能使用先查再in的写法,那么怎么简化它呢(就不想先查再循环连接)?

那么一个mysql的函数就能使用上了,他就是GROUP_CONCAT().这个函数就是把某个字段的值用字符串连接成A,B,C这样的格式

mysql on duplicate key update 对于不是很常用的人来说是比较陌生的。那么他到底是用来干什么的呢?下面就介绍一下:

比如在我们做一个点击量的功能,程序的逻辑是这样的:
在用户点击的时候我们首先要判断数据表中已经存在了这个人的数据,如果存在日志表对应的用户点击次数加1,如果不存在新增一条数据。

那么按照正常的编程需要有两条sql

先查询数据表中是否有,有了执行修改操作,没有执行添加操作。一条查询一条修改或添加。

那么有了这个on duplicate key update 之后就可以把这两个sql简化为一条,减少了数据的查询次数、避免了数据重复而且少打一些代码,可谓是一举三得!