1.
显示所有老师名字,左连接LEFT JOIN
SELECT t.name,d.name
FROM teacher t
LEFT JOIN dept d
ON t.dept=d.id;
2.
由于要优先显示所有老师名字,就算mobile是NULL也要显示,而这时用inner join 就会出现问题,inner join 是不理會沒有學系的老師及沒有老師的學系,所以如果老师的mobile为NULL,它就不会显示了。
而我们这里需要优先老师的name,就算mobile为NULL,所以才用left join
SELECT t.name,coalesce(t.mobile, '07986 444 2266')
FROM teacher t
LEFT JOIN dept d
ON t.dept=d.id;
coalesce(column,'0') 这列值为NULL就取0,这列值不是NULL就原值
(coalesce会有新的一张讲)
3.一些小点
count(1)和count(2)计算表的最多row的总数
<数字是浮云,都一样>
count(*)也是计算表格的最多row的总数
而count(mobile)是计算该列的有值的数量,如果为NULL,则不进入计数。
4.
有right join 能保证dept 中所有的name都进入,就算它没有老师,就算是NULL也会出现,比如说是engineering