158纺涤、MySQL入門(八):使用NULL

Sqlzoo習(xí)題練習(xí):Using NULL

習(xí)題鏈接:<u>http://sqlzoo.net/wiki/Using_Null</u>

一所學(xué)校會包括許多部門撼班。大多數(shù)教師只為一個(gè)部門工作斑唬。有些老師沒有部門胯舷。

下面是Using NULL習(xí)題中要用到數(shù)據(jù)庫中的兩個(gè)表格teacher和dept(部門),分別存儲著老師的信息及老師所在的部門信息谋旦。


1.表格teacher和dept.png

下面為Using NULL 習(xí)題內(nèi)容:

知識點(diǎn):NULL 值

NULL 值是遺漏的未知數(shù)據(jù)剩失。

默認(rèn)地屈尼,表的列可以存放 NULL 值。

如果表中的某個(gè)列是可選的拴孤,那么我們可以在不向該列添加值的情況下插入新記錄或更新已有的記錄脾歧。這意味著該字段將以 NULL 值保存。

NULL 值的處理方式與其他值不同演熟。

NULL 用作未知的或不適用的值的占位符鞭执。

注釋:無法比較 NULL 和 0;它們是不等價(jià)的芒粹。

測試 NULL 值時(shí)蚕冬,必須使用 IS NULL 和 IS NOT NULL 操作符。

--#1
/*
List the teachers who have NULL for their department. 
*/
SELECT teacher.name
FROM teacher 
WHERE dept IS NULL;

知識點(diǎn):內(nèi)連接(INNER JOIN)
INNER JOIN 關(guān)鍵字
在表中存在至少一個(gè)匹配時(shí)是辕,INNER JOIN 關(guān)鍵字返回行。
INNER JOIN 關(guān)鍵字語法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋:INNER JOIN 與 JOIN 是相同的猎提。

--#2
/*
Note the INNER JOIN misses the teachers with no department and the departments with no teacher. 
*/
SELECT teacher.name AS teacher_name,
       dept.name AS dept_name
FROM teacher INNER JOIN dept 
ON (teacher.dept = dept.id);

知識點(diǎn):LEFT JOIN 關(guān)鍵字
LEFT JOIN 關(guān)鍵字會從左表 (table_name1) 那里返回所有的行获三,即使在右表 (table_name2) 中沒有匹配的行。
LEFT JOIN 關(guān)鍵字語法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋:在某些數(shù)據(jù)庫中锨苏, LEFT JOIN 稱為 LEFT OUTER JOIN疙教。

--#3
/*
Use a different JOIN so that all teachers are listed. 
*/
SELECT teacher.name AS teacher_name,
       dept.name AS dept_name
FROM teacher LEFT JOIN dept
ON (teacher.dept = dept.id);

知識點(diǎn):RIGHT JOIN 關(guān)鍵字
RIGHT JOIN 關(guān)鍵字會從右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒有匹配的行伞租。
RIGHT JOIN 關(guān)鍵字語法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋:在某些數(shù)據(jù)庫中贞谓, RIGHT JOIN 稱為 RIGHT OUTER JOIN。

--#4
/*
Use a different JOIN so that all departments are listed. 
*/
SELECT teacher.name AS teacher_name,
       dept.name AS dept_name
FROM teacher RIGHT JOIN dept
ON (teacher.dept = dept.id);

知識點(diǎn):COALESCE用法
COALESCE返回其參數(shù)中第一個(gè)非空表達(dá)式葵诈。
語法
COALESCE (expression [ ,...n ] )
參數(shù)
Expression表示任何類型的表達(dá)式裸弦。
返回類型
返回?cái)?shù)據(jù)類型優(yōu)先級最高的 expression 的數(shù)據(jù)類型。如果所有表達(dá)式都不可為 Null作喘,則結(jié)果的類型也不可為 Null理疙。
注釋
如果所有參數(shù)均為 NULL,則 COALESCE 返回 NULL泞坦。

--#5
/*
Use COALESCE to print the mobile number. Use the number '07986 444 2266' if there is no number given. Show teacher name and mobile number or '07986 444 2266'
*/
SELECT name,
COALESCE(mobile,'07986 444 2266')
FROM teacher;

--#6
/*
Use the COALESCE function and a LEFT JOIN to print the teacher name and department name. Use the string 'None' where there is no department. 
*/
SELECT teacher.name,
COALESCE(dept.name,'None')
FROM teacher LEFT JOIN dept
ON (teacher.dept = dept.id);

--#7
/*
Use COUNT to show the number of teachers and the number of mobile phones. 
*/
SELECT COUNT(name),COUNT(mobile)
FROM teacher ;

--#8
/*
Use COUNT and GROUP BY dept.name to show each department and the number of staff. Use a RIGHT JOIN to ensure that the Engineering department is listed. 
*/
SELECT dept.name,COUNT(teacher.name)
FROM teacher RIGHT JOIN dept
ON (teacher.dept = dept.id)
GROUP BY dept.name;

知識點(diǎn):Case When用法
Case具有兩種格式窖贤。簡單Case函數(shù)和Case搜索函數(shù)。
第一種 格式 : 簡單Case函數(shù) :
格式說明
    case 列名
    when 條件值1 then 選擇項(xiàng)1
    when 條件值2 then 選項(xiàng)2.......
    else 默認(rèn)值 end
第二種 格式 :Case搜索函數(shù)
格式說明
    case
    when 列名= 條件值1 then 選擇項(xiàng)1
    when 列名=條件值2 then 選項(xiàng)2.......
    else 默認(rèn)值 end

--#9
/*
Use CASE to show the name of each teacher followed by 'Sci' if the teacher is in dept 1 or 2 and 'Art' otherwise. 
*/
SELECT teacher.name,
CASE 
   WHEN teacher.dept IN (1,2) 
   THEN 'Sci'
   ELSE 'Art'
END
FROM teacher;

--#10
/*
Use CASE to show the name of each teacher followed by 'Sci' if the teacher is in dept 1 or 2, show 'Art' if the teacher's dept is 3 and 'None' otherwise. 
*/
SELECT teacher.name,
CASE 
   WHEN teacher.dept IN (1,2) 
   THEN 'Sci'
   WHEN teacher.dept = 3 
   THEN 'Art'
   ELSE 'None'
END
FROM teacher;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贰锁,一起剝皮案震驚了整個(gè)濱河市赃梧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豌熄,老刑警劉巖授嘀,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锣险,居然都是意外死亡粤攒,警方通過查閱死者的電腦和手機(jī)所森,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夯接,“玉大人焕济,你說我怎么就攤上這事泻仙±送簦” “怎么了损话?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵片挂,是天一觀的道長姿骏。 經(jīng)常有香客問我鸠窗,道長尺借,這世上最難降的妖魔是什么顶岸? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任芯丧,我火速辦了婚禮芍阎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缨恒。我一直安慰自己谴咸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布骗露。 她就那樣靜靜地躺著岭佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萧锉。 梳的紋絲不亂的頭發(fā)上珊随,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音柿隙,去河邊找鬼叶洞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛禀崖,可吹牛的內(nèi)容都是我干的京办。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼帆焕,長吁一口氣:“原來是場噩夢啊……” “哼惭婿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叶雹,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤财饥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后折晦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钥星,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年满着,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谦炒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贯莺。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宁改,靈堂內(nèi)的尸體忽然破棺而出缕探,到底是詐尸還是另有隱情,我是刑警寧澤还蹲,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布爹耗,位于F島的核電站,受9級特大地震影響谜喊,放射性物質(zhì)發(fā)生泄漏潭兽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一斗遏、第九天 我趴在偏房一處隱蔽的房頂上張望山卦。 院中可真熱鬧,春花似錦诵次、人聲如沸账蓉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至视译,卻和暖如春嬉荆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酷含。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工鄙早, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椅亚。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓限番,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呀舔。 傳聞我的和親對象是個(gè)殘疾皇子弥虐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 5,459評論 0 33
  • SQL:結(jié)構(gòu)化查詢語言 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng)SQL可以分為兩個(gè)部分:數(shù)據(jù)操作語言(DML)和數(shù)...
    HerbGuo閱讀 255評論 0 0
  • SQL 語法大全 標(biāo)簽(空格分隔): SQL DB2 SQL語法大全 SQL SELECT SQL SELECT ...
    lumicinta閱讀 12,681評論 3 196
  • 先總結(jié) sql語句按W3Cschool上分類有數(shù)據(jù)庫操作語言和數(shù)據(jù)庫定義語言兩個(gè)部分組成媚赖,根據(jù)那那種分法可以讓我們...
    一介文夫閱讀 5,655評論 1 22
  • 1霜瘪、MySQL啟動(dòng)和關(guān)閉(安裝及配置請參照百度經(jīng)驗(yàn),這里不再記錄惧磺。MySQL默認(rèn)端口號:3306颖对;默認(rèn)數(shù)據(jù)類型格式...
    強(qiáng)壯de西蘭花閱讀 654評論 0 1