Prepare, Execute, Deallocate是一個使用變數來執行的一個功能,主要目的是 : (1)在尚未寫入正式程式時做測試使用。 (2)當暫時需要做些重複動作時使用。 Prepare ~ 準備程序 Execute ~ 執行程序 Deallocate ~ 解除程序 範例 : mysql> PREPARE stmt1 FROM 'SELECT productCode, productName FROM products WHERE productCode = ?'; mysql> SET @pc = 'S10_1678'; mysql> EXECUTE stmt1 USING @pc; mysql> DEALLOCATE PREPARE stmt1; 範例 : mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'; mysql> SET @a = 3; mysql> SET @b = 4; mysql> EXECU…
需求~要列出符合【某個條件】的【某項資料】,應該如何寫出SQL指令呢? 第一步 : 找齊資料表。 【某項資料】是在哪個資料表? 以及【某個條件】中的判斷條件是在哪個資料表? 所以這個步驟 ,就可以把資料表都找齊了。 第二步 : 篩選出來【正確的資料表】。 但是許多情況,【某項資料】會存在許多資料表中,這個時候就要判斷,哪個資料表才是正確的。 方法就是把第一步找到的資料表,畫出關聯性,【某項資料】一定會存在具有關聯性的資料表中。所以就可以把不在關聯的資料表刪除。 第三步 : 套用再調整。 套用 SELECT 【某項資料】 FROM 【正確的資料表】 WHERE 【某個條件】AND 主鍵外鍵的關聯 其他部分 (如GROUP BY、HAVING、ORDER BY等等) 調整 看看那些欄位需要冠上 ~ 資料表.資料欄,例如 學生資料表.學生姓名 例如~ 要列出開課編號為o0001的「開課編號」、「學生姓名」。 由第一步,相關的欄位是 「 開課編號 」 、「學生姓名」。 「學生姓名」存在於學生資料庫, 「 開課編號 」存在於 選課資料表、 開課資料表、 時間資料表。 由第二 步,學生資料庫與 選課資料表,透過 學生編…
資料庫結構如下 : 學生資料表(學生編號, 身分證字號, 學生姓名, 科系編號, 年級, 班級) Student(sid, idno, sname, did, syear, sclass) 老師資料表(老師編號, 身分證字號, 老師姓名, 科系編號, 老師類別) Teacher(tid, idno, tname, did, ttype) 課程資料表(課程編號, 課程名稱, 科系代號, 學分數, 選修別) Course(cid, cname, did, ccredit, ctype) 開課資料表(開課編號, 課程編號, 老師編號, 修課年級限制, 教室編號) OpenCourse(oid, cid, tid, yearlimit, roomno) 時間資料表(開課編號, 開課時間編號) Schedule(oid, timeno) 選課資料表(學生編號, 開課編號, 成績) Roll(sid, oid, score) 科系資料表(科系編號, 科系名稱) Dept(did, dname) 資料內容如下 : 問題 : (1)請問如何找到學生s0001沒有衝堂…