使用 NULL(缺失值)
老師和學(xué)部
一個(gè)學(xué)校中包含不同的學(xué)部史翘,大部分老師只為一個(gè)學(xué)部工作上課昙篙,部分老師不歸屬于任何學(xué)部焦蘑。
1.部門屬性是 NULL 的老師
SELECT name
FROM teacher
WHERE dept IS NULL
2.inner JOIN
SELECT teacher.name, dept.name
FROM teacher INNER JOIN dept
ON (teacher.dept=dept.id)
注意:inner JOIN
省略了 dept 是 NULL 的老師,以及沒有教師數(shù)據(jù)的學(xué)部
3.LEFT OUTER JOIN
SELECT teacher.name, dept.name
FROM teacher
LEFT OUTER JOIN dept
ON (teacher.dept=dept.id)
注意:LEFT OUTER JOIN
馒疹,列出所有教師名字
4.RIGHT OUTER JOIN
SELECT teacher.name, dept.name
FROM teacher
RIGHT OUTER JOIN dept
ON (teacher.dept=dept.id)
注意:RIGHT OUTER JOIN
谬泌,列出所有學(xué)部名稱
使用 COALESCE 函數(shù)
- 使用
COALESCE
函數(shù)
SELECT name ,COALESCE(mobile,'07986 444 2266')
FROM teacher
注意: COALESCE
函數(shù),可以方便更換對于缺省值 NULL的輸出滔韵。比如,本例中掌实,如果 Mobile 字段是 NULL陪蜻,則返回'07986 444 2266'
- 使用
COALESCE
函數(shù)和 LEFT JOIN
SELECT teacher.name ,COALESCE(dept.name ,'None')
FROM teacher
LEFT OUTER JOIN dept
ON (teacher.dept=dept.id)
- 使用
COUNT
函數(shù)
SELECT COUNT(name),COUNT(mobile)
FROM teacher
- 使用
COUNT
函數(shù)和 GROUP BY 語句
SELECT dept.name, COUNT(teacher.name)
FROM teacher
RIGHT JOIN dept ON (teacher.dept=dept.id)
GROUP BY dept.name
- 使用
CASE
函數(shù)
如果教師來自學(xué)部屬性為 1 或 2,那么后面跟上「SCI」贱鼻,否則一律跟上「Art」宴卖。
SELECT teacher.name
,CASE WHEN dept IN (1,2)
THEN 'Sci'
ELSE 'Art'
END
FROM teacher
LEFT OUTER JOIN dept
如果教師來自學(xué)部屬性為 1 或 2滋将,那么后面跟上「SCI」,如果教師來自學(xué)部屬性為 3症昏,那么后面跟上「Art」随闽,否則一律跟上「None」。
SELECT teacher.name
,CASE WHEN dept IN (1,2)
THEN 'Sci'
WHEN dept = 3
THEN 'Art'
ELSE 'None'
END
FROM teacher
LEFT OUTER JOIN dept
ON (teacher.dept=dept.id)