Database System 20171228 01 02 Join Subquery 03
資料庫系統 Database System 施莉萍 2017/12/28
01. 02. Join Subquery 03. Union 01
資料表範例 學生資料 (Std_data) 教室資料 (Course_data) 課程資料 (Classroom_data) 學生住宿資料 (Dormitory_data) 選課資料 (Std_course) Std_id(學號) Course_id(課程代碼) C_id(課程代碼) S_id(學號) Std_name(姓名) Course_name(課程名稱 Course_day(上課星期) Building(宿舍代碼) Course_id(課程代碼) Gender(性別) ) Course_period(節) Room_id(房號代碼) Major(科系) Teacher(教師) Course_room(上課教室 Class(班級) Credits(學分數) ) 02
Join 分為: l. Natural Join l. Inner Join l. Outer Join n Left Join (Left Outer Join) n Right Join (Right Outer Join) 03
Join - Natural Join SELECT course_data. course_name, course_data. teacher FROM std_course NATURAL JOIN course_data WHERE S_id = ‘B 00001’ 選課資料 課程資料 列出學生B 00001選課的名稱與授課老師 05
Join - Inner Join SELECT std_name , dormitory_data. room_id , dormitory_data. building FROM std_data INNER JOIN dormitory_data ON std_data. std_id = dormitory_data. S_id; 列出學生姓名、宿舍代碼、房號代碼 07
Join – Full Join(補充) 學生資料 學生住宿資料 My. SQL並不支援Full Join (Full outer Join) 13
Join – Full Join(補充) 14
Subquery SELECT course_name, teacher 列出學生B 00001選課的名稱與授課老師 FROM course_data WHERE course_id IN (SELECT course_id FROM std_course WHERE S_id = ‘ B 00001 ’) 16
Subquery 列出星期一可以修的課程代碼與名稱 SELECT course_id as 課程代碼 , course_name as 課程名稱 FROM course_data WHERE course_id IN ( SELECT C_id FROM classroom_data WHERE course_day = '星期一') 17
Union SELECT course_id AS 課程代碼, course_name AS 課程名稱 FROM course_data WHERE course_id IN ( SELECT C_id FROM classroom_data WHERE course_day = '星期一') UNION SELECT course_id AS 課程代碼, course_name AS 課程名稱 FROM course_data WHERE course_id IN ( SELECT C_id FROM classroom_data WHERE course_day = '星期二') 19
補充( Union , Intersect , Minus ) Union(聯集) Intersect(交集) Minus(差集) = difference My. SQL不支援Intersect、Minus 20
- Slides: 26