数据库视图的创建思路

需求

在这里插入图片描述

数据库表信息关联

这里数据库就不复现了,但是提供一下数据库中表的相对关联关系

表名称表中某些特定字段
t_useruser_id 和user_name
t_user_infouser_id 和 chn_name 和 eng_name
t_user_deptuser_id 和 dept_code
t_deptdept_code 和 dept_name

以上表中对应关系关联就是需求中的用户视图的需求

思路

创建视图要明白需求的前后关系,是看用户所关联的信息还是看包含某些字段属性的人
这里的需求是看用户的基本信息来找对应的字段属性,所以得出基础数据库表就是t_user表

#前面的u、ui、、ud、d 是 t_user u 和 t_user_info ui 和 t_user_dept ud 和 t_dept d 的别名
select 
  u.user_id,             #需求的用户id字段
  u.user_name,           #需求的账号字段
  ui.chn_name,           #需求的姓名字段(中文名)
  ui.eng_name,           #需求的姓名字段(英文名)
  ud.dept_code,          #需求的所属机构代码字段
  d.dept_name            #需求的所属机构名称字段
from t_user u
left join t_user_info ui on u.user_id = ui.user_id
left join t_user_dept ud on u.user_id = ud.user_id
left join t_dept d on ud.dept_code = d.dept_code

left join :左连接 这里表示关联表以t_user 字段为主 ON:表示连接条件 也就是2个不同表之间公共的字段

这里一共四个表关联,所以有三个left join关系

执行操作

在这里插入图片描述
编写sql语句:
在这里插入图片描述

点击预览,如果有语法错误会在下面提示框给出对应的语法错误提示,需要进行调整修改
,无语法错误则能正常查询出对应的数据。
在这里插入图片描述

最后可以对sql语句进行自动美化,以及对相应的条件进行过滤

SELECT
	u.user_id,
	u.user_name,
	ui.chn_name,
	ui.eng_name,
	ud.dept_code,
	d.dept_name 
FROM
	(((
	t_user u
	LEFT JOIN t_user_info ui ON ((
	u.user_id = ui.user_id 
	)))
	LEFT JOIN t_user_dept ud ON ((
	u.user_id = ud.user_id 
	)))
	LEFT JOIN t_dept d ON (((
	ud.dept_code 
	) :: TEXT = ( d.dept_code ) :: TEXT 
	))) 
WHERE
	(((
	u.status 
	) :: TEXT = '0' :: TEXT               #一个状态值 标识
	) 
	AND (( u.user_name ) :: TEXT <> 'admin' :: TEXT )    #过滤掉admin用户
	AND (( u.user_name ) :: TEXT ~~ 'TY%' :: TEXT ))     #过滤只允许TY%开头的用户账号

在这里插入图片描述

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页