为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。
create view "chkadmin" as select name, pwd from tb_admin
创建视图
create view scoreinfo as select sno,sname,
yw,wy,sx from tb_student,tb_score where tb_student.id=tb_score.sid
多张表(表tb_student及tb_score)建立视图,条件为id值相等。
LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。
用法如下:
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
举个例子 A表
ID | VAL
1001 | 100
1002 | 200
1003 | 300
B表
ID | val
1002 | 500
1004 | 600
那么
select a.id,b.id,a.val,b.val
from a left join b
on a.id=b.id
出来便是
1001 | null | 100 | null
1002 | 1002 | 200 | 500
1003 | null |300 | null
举个LEFT JOIN 常用的情景:
算出该营业部所有客户的交易量、资金、市值,假设客户信息表(下称A表)里是所有的客户,100W人;交易量表(下称B表)里有当天成交的客户,10W人;资金表(下称C表)里有当天发生资金的客户,20W人;市值表(下称D表)里有当天市值信息,50W人。
那么写SQL的话就要以A表为主表,分别左关联B C D 表。
select a.*,b.jyl,c.zjye,d.zxsz
from a left join b on a.khh=b.khh and b的条件
left join c on a.khh=c.khh and c的条件
left join d on a.khh=d.khh and d的条件
where a的条件。
如果A的条件写在ON里也行,但你就要写3遍了,还不如在外面写一遍即可。