|
11-5
資料插入
– Insert into
內容:
11-5-1 Insert into
語法
將資料插入資料表則使用
Insert 命令達成,但它每次增加一筆記錄,格式如下:
Insert into
資料表名稱
<欄位串列>
Value (<資料串列>); |
11-5-2
範例研討
–
增加監護人資料
(A)
系統功能:Ex11_4
請新增 3
位學生的監護人資料到
guardian 資料表內。(請先建立
guardian 資料表)
(B)
利用
SQL
命令
在 AppServ
的
SQL 介面下輸入下列命令即可:(如已刪除
guardian
表請再新增)
Insert
Into guardian
values("90211304", "陳媽媽",
"0923111223", "高雄市苓雅區建國路
30
號",
"母女");
Insert
Into guardian
values("90211305", "吳爸爸",
"0923111341", "高雄市新興區民族路
40
號",
"父女");
Insert
Into guardian
values("90211306", "陳爸爸",
"0945675223", "高雄市三民區九如路
10
號",
"父子");
![](../MySQL_插圖/chap11/圖%2011-6.png) |
11-5-3
範例研討
–
新增學生資料
(A)
系統功能:Ex11_5
教務處希望有一個可供登錄學生資料的網頁,期望輸入網頁的格式如下:
![](../MySQL_插圖/chap11/圖%2011-7.png)
執行網頁的結果如下:
![](../MySQL_插圖/chap11/圖%2011-8.png)
如果重複插入,則會出現此視窗:
![](../MySQL_插圖/chap11/圖%2011-9.png)
(B) SQL
系統分析
學生資料登錄於
students 表內,此題目須對該資料表做
Insert into 的動作。下圖是
students 與
classes 兩張資料表之間的關聯,兩張資料表內的
class_ID
欄位建立主鍵與外來鍵之關係,也就是說,當我們輸入 students
表內的
class_ID 欄位必須對應到
classes
表格,不可以隨意輸入,不然關聯就中斷了。因此,此 class_ID
與班級名稱(class_name)
之間的對應關係,就由表單網頁來達成,使用者選擇班級名稱後,它傳送 class_ID
給執行網頁。另外,student_ID
是
class_ID 加上座號(seat_num),在查詢網頁由使用者輸入座號,執行網頁再將
class_ID 與
seat_num 連結成為學號
(student_ID)(請參閱第三章說明)。表單網頁的關聯圖如下:
![](../MySQL_插圖/chap11/圖%2011-10.png)
『執行網頁』接收訊息後,將該筆資料插入
students
表內,SQL
程式如下:
Insert
Into students
values(‘$student_ID’, ‘$name’, ‘$class_ID’, ‘$sex’, ‘$tel’, ‘$mailbox’
‘$address’) |
(C)
網頁製作技巧
依照上述 SQL
分析,網頁設計如下:
![](../MySQL_插圖/chap11/圖%2011-11.png)
(D)
查詢網頁範例:Ex10_5-form.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登錄新生資料</title></head>
<body>
<p>
登錄新生資料
</p>
<form
name="表單"
method="post" action="Ex11_5-action.php">
班級名稱:
<select name="class_ID">
<?php
$select_db = mysqli_connect("localhost", "root", "12345678", "course_db")
or die("MySQL
伺服器連結失敗
<br>");
//
查詢班級名稱
$sql_query = "select class_ID, class_name
from classes";
$result = mysqli_query($select_db, $sql_query);
while($row=mysqli_fetch_row($result)) {
echo "<option value='$row[0]'> $row[1]
</option><BR>";
}
echo "</select>";
echo "<BR><BR>";
mysqli_close($select_db);
?>
學生座號(兩位數不可重複):
<input name="seat_num" type="text"><BR>
姓名:
<input name="name" type="text"><BR>
性別:
<select name="sex">
<option>男</option>
<option>女</option>
</select><BR><BR>
電話:
<input name="tel" type="text"><BR>
電子郵件:
<input name="mailbox" type="text"><BR>
地址:
<input name="address" type="text"><BR>
<input type="submit" value="送出">
</form>
</body>
</html> |
(1)
第 12 ~ 27
行:建立下拉式選單,讓使用者選擇班級名稱,再傳遞班級代碼
(class_ID) 給執行網頁。
(2)
第
30~38 行:直接輸入學生資料,包含座號。
(D)
執行網頁範例:Ex10_5-action.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 |
<?php
$class_ID = $_POST["class_ID"];
$seat_num
= $_POST["seat_num"];
$student_ID
= $class_ID.$seat_num; //連結產生學號
$name = $_POST["name"];
$sex
= $_POST["sex"];
$tel
= $_POST["tel"];
$mailbox = $_POST["mailbox"];
$address = $_POST["address"];
$select_db
= mysqli_connect("localhost", "root", "12345678", "course_db")
or die("MySQL
伺服器連結失敗
<br>");
$sql_query = "insert into students values(
$student_ID, '$name', '$class_ID',
'$sex', '$tel', '$mailbox', '$address')";
$result = mysqli_query($select_db, $sql_query);
//
測試是否登錄成功
if (!$result){
echo "學生資料登錄失敗(可能學號重複,請進入
AppServ
觀察)
! <ER>";
exit();
}
//
查詢新增學生資料
$sql_query = "select *
from students
where student_ID = $student_ID";
$result = mysqli_query($select_db, $sql_query);
echo
"登錄新生資料如下:<BR><BR>";
$items = array("學號",
"姓名",
"班級代碼",
"性別",
"電話",
"郵件",
"地址");
echo "<table border = '2'><tr align='center'>";
//
利用
foreach
迴圈印出陣列
$item
foreach ($items as $value) {
echo "<td> $value </td>";
}
echo "</tr>";
while($row=mysqli_fetch_row($result)) {
echo "<tr>";
for($j=0; $j<mysqli_num_fields($result); $j++) {
echo "<td>$row[$j]</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_close($db_link);
?> |
(1)
第
18~21 行:插入學生資料。
(2)
第 28~40
行:顯示新增學生資料的內容。
11-5-4
範例研討
–
新增課程
(B)
系統功能:Ex11_6
教務處需要一個可供新增課程的網頁,期望查詢網頁如下:
![](../MySQL_插圖/chap11/圖%2011-12.png)
執行網頁的結果如下:
![](../MySQL_插圖/chap11/圖%2011-13.png)
(B) SQL
系統分析
課程資料是登錄於
all_course 資料表,須對它執行
Insert into 命令動作。下圖是
all_course 與
department 兩張資料表之間關聯,它們是利用
dep_ID
來識別哪一系所規劃的課程。我們在查詢網頁上製作下拉式選單,並傳送 dep_ID
訊息給直行網頁。在執行網頁方面,其課程代碼(course_ID)
編碼方式是:學制(sys_ID,日間四技=40、進修部四技=90)+系別代碼(如資管系=
11)+課程編碼(如網路程式設計=002,每一系編碼不可重複
) (請參閱第三章說明)。
![](../MySQL_插圖/chap11/圖%2011-14.png)
(C)
網頁設計技巧
吾人依照上述 SQL
分析,網頁設計如下:
![](../MySQL_插圖/chap11/圖%2011-15.png)
(D)
表單網頁的程式範例:Ex10_6-form.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 |
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>新增課程資料</title></head>
<body>
<p>
新增課程資料
</p>
<form name="表單"
method="post" action="Ex11_6-action.php">
系別名稱:
<select name = "dep_ID">
<?php
$select_db = mysqli_connect("localhost", "root",
"12345678", "course_db")
or die("MySQL
伺服器連結失敗
<br>");
//
查詢系別名稱
$sql_query = "select *
from department";
$result = mysqli_query($select_db, $sql_query);
while($row=mysqli_fetch_row($result)) {
echo "<option value='$row[0]'> $row[1]
</option><BR>";
}
echo "</select>";
echo "<BR><BR>";
mysqli_close($select_db);
?>
學制:
<select name="sys_ID">
<option value = "40">
日間部四技
</option>
<option value = "90">
進修部四技
</option>
</select> <BR><BR>
課程編碼(3
碼數不可重複):
<input name="num" type="text"><BR><BR>
課程名稱:
<input name="course_name" type="text"><BR><BR>
必選修:
<select name="required">
<option>必修</option>
<option>選修</option>
</select><BR><BR>
學分數:
<select name="credit">
<option> 1 </option>
<option> 2 </option>
<option> 3 </option>
<option> 4 </option>
</select><BR><BR>
<input type="submit" value="送出">
</form>
</body>
</html> |
(D)
執行網頁的程式範例:Ex10_6-action.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 |
<?php
$sys_ID = $_POST["sys_ID"];
$dep_ID = $_POST["dep_ID"];
$num
= $_POST["num"];
$course_name
= $_POST["course_name"];
$required= $_POST["required"];
$credit = $_POST["credit"];
$course_ID
= $sys_ID.$dep_ID.$num; //連結產生課程代碼
$select_db
= mysqli_connect("localhost", "root", "12345678", "course_db")
or die("MySQL
伺服器連結失敗
<br>");
$sql_query = "insert into all_course values(
$course_ID, '$course_name', '$dep_ID',
'$required', '$credit')";
$result = mysqli_query($select_db, $sql_query);
//
測試是否登錄成功
if (!$result){
echo "課程登錄登錄失敗(可能編碼重複,請進入
AppServ
觀察)
! <ER>";
exit();
}
//
查詢新增課程資料
$sql_query = "select *
from all_course
where course_ID = $course_ID";
$result = mysqli_query($select_db, $sql_query);
echo
"新增課程資料如下:<BR><BR>";
$items = array("課程代碼",
"課程名稱",
"系別編碼",
"必選修",
"學分數");
echo "<table border = '2'><tr align='center'>";
//
利用
foreach
迴圈印出陣列
$item
foreach ($items as $value) {
echo "<td> $value </td>";
}
echo "</tr>";
while($row=mysqli_fetch_row($result)) {
echo "<tr>";
for($j=0; $j<mysqli_num_fields($result); $j++) {
echo "<td>$row[$j]</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_close($db_link);
?> |
|
![](../../images/tsnien.jpg)
翻轉工作室:粘添壽
course_db 關聯圖
資料庫程式設計:
翻轉電子書系列:
|