PHP5&MySQL 程式設計 第 11 章資料庫存取導論
11-1 認識資料庫 資料庫 (database) 係指依照一定格式存放在一起的資料記錄檔案 資料庫管理系統 (DBMS,database management system) 則是用來操作與管理資料庫的軟體 資料庫 : 適合記錄大量資料 Cookie: : 適合記錄瀏覽者的個別資訊 Session: : 適合記錄瀏覽者的個別資訊 伺服器端檔案存取 : 適合記錄少量資料
假設關聯式資料庫裡面有如下四個資料表, 名稱分別為 學生資料 國文成績 數學成績 自然成績, 其中 座號 欄位為共通的欄位 : 座號 姓名 生日 通訊地址 11 小丸子 1984/1/1 台北市羅斯福路三段 9 號 9 樓 12 花輪 1985/5/6 台北市師大路 20 號 3 樓 13 藤木 1984/12/20 台北市溫州街 42 巷 7 號之 1 14 小玉 1985/3/17 台北市龍泉街 3 巷 12 弄 28 號 15 丸尾 1984/8/11 台北市金門街 100 號 5 樓 16 永澤 1984/10/22 台北市和平東路二段 85 巷 109 號 15 樓之 3
座號 國文分數 11 80 12 95 13 88 14 98 15 93 16 81 座號 數學分數 11 75 12 100 13 90 14 92 15 97 16 92 座號 自然分數 11 82 12 97 13 85 14 88 15 100 16 94
透過共通的欄位還可以產生新的資料表, 例如結合 學生資料 國文成績 數學成績 自然成績 四個資料表, 進而產生 總分 資料表 : 座號 姓名 總分 通訊地址 11 小丸子 237 台北市羅斯福路三段 9 號 9 樓 12 花輪 292 台北市師大路 20 號 3 樓 13 藤木 263 台北市溫州街 42 巷 7 號之 1 14 小玉 278 台北市龍泉街 3 巷 12 弄 28 號 15 丸尾 290 台北市金門街 100 號 5 樓 16 永澤 267 台北市和平東路二段 85 巷 109 號 15 樓之 3
MySQL 資料庫伺服器的管理介面
11-2 PHP 與資料庫 資料庫 作業系統 授權方式 Adabas D Unix Windows 商業用途 (commercial) DBA/DBM Unix 商業用途 開放原始碼 (open source) dbase Windows 商業用途 Empress Unix Windows 商業用途 filepro Unix Windows 商業用途 IBM DB2 Unix Windows 商業用途 Informix Unix Windows 商業用途 Interbase Unix Windows 商業用途 Microsoft Access Windows 商業用途 Microsoft SQL Server Windows 商業用途 msql Unix 共享軟體 (shareware) MySQL Unix Windows 商業用途 開放原始碼 Oracle Unix Windows 商業用途 PostgreSQL Unix 開放原始碼 Solid Unix Windows 商業用途 SQLite Unix Windows 開放原始碼 Sybase Unix Windows 商業用途
11-3 使用 phpmyadmin 管理 MySQL 資料庫 11-3-1 安裝與設定 phpmyadmin 一 安裝 phpmyadmin 1. 將隨書光碟的 \setup\phpmyadmin\phpmyadmin-2.9.0.2-all- languages.zip 解壓縮至硬碟, 解壓縮後會產生 phpmyadmin-2.9.0.2 2.9.0.2-all-languageslanguages 資料夾, 裡面包含眾多網頁 PHP 程式及組態檔, 這就是 phpmyadmin 2. phpmyadmin-2.9.0.2 2.9.0.2-all-languageslanguages 資料夾名稱後半部的 - 2.9.0.2-all all-languageslanguages 代表 2.9.0.2 多國語言版, 這串名稱在使用上沒有什麼意義, 所以請將 phpmyadmin-2.9.0.2 2.9.0.2- all-languages languages 更名為 phpmyadmin 3. 將 phpmyadmin 資料夾複製到 Apache 的網站主目錄 C:\Program Files\Apache Software Foundation\Apache2.2 Apache2.2\htdocshtdocs
二 設定 phpmyadmin 1. 將 phpmyadmin\libraries libraries\config.default.php 複製到 phpmyadmin 資料夾, 並將之更名為 config.inc.php,, 然後使用 UltraEdit 開啟 config.inc.php 2. 在第 31 行處找到一行設定為 $cfg['pmaabsoluteuri'] = '';, 請將之變更為如下 : $cfg[ PmaAbsoluteUri PmaAbsoluteUri ] ] = http://localhost/phpmyadmin/ http://localhost/phpmyadmin/ ; 在第 71 ~ 73 行處可以看到以下三行設定 : 3. 在第 $cfg['servers'][$i]['auth_type'] = cookie; $cfg[ Servers Servers ][$i][ ][$i][ user ] = ''; $cfg[ Servers Servers ][$i][ ][$i][ password ]] = ''; 在第 45 行處找到一行設定為 $cfg[ blowfish_secret blowfish_secret ] ] = ;, 將之變更如下 4. 在第 $cfg[ blowfish_secret blowfish_secret ] ] = 'secretword'; 5. 儲存 config.inc.php 檔案
三 測試 phpmyadmin 啟動瀏覽器, 在網址列輸入 http://localhost/phpmyadmin/,, 然後按 [Enter]
11-3-2 新增 移除 修改登入帳號 1. 與密碼
2.
3.
4.
11-3-3 建立資料庫
11-3-4 建立資料表 一 數值型態 (numeric types) 資料型態空間範圍 TINYINT[(M)] SMALLINT[(M)] MEDIUNINT[(M)] INT[(M)] INTEGER[(M)] BIGINT[(M)] 1byte 2bytes 3bytes 4bytes 8bytes 有號 :-128 ~ 127 (-2 7 ~ 2 7-1) 無號 :0 ~ 255 (0 ~ 2 8-1) 雖然 MySQL 目前尚無 BOOLEAN 型態, 但如果要存放布林值, 可以使用 TINYINT(1), 值為 0, 表示 FALSE, 值不為 0, 表示 TRUE (M 表示 最大顯示寬度 ) 有號 :-32768 ~ 32767 (-2 15 ~ 2 15-1) 無號 :0 ~ 65535 (0 ~ 2 16-1) 有號 :-8388608 ~ 8388607 (-2 23 ~ 2 23-1) 無號 :0 ~ 16777215 (0 ~ 2 24-1) 有號 :-2147483648 ~ 2147483647 (-2 31 ~ 2 31-1) 無號 :0 ~ 4294967295 (0 ~ 2 32-1) 有號 :-9223372036854775808 ~ 9223372036854775807 (- 2 63 ~ 2 63-1) 無號 :0 ~ 18446744073709551615 (0 ~ 2 64-1)
資料型態空間範圍 FLOAT(p) 4bytes 8bytes 如果 p <= 24, 視為 FLOAT ( 單倍精確浮點數 ) 如果 25 <= p <= 53, 視為 DOUBLE ( 雙倍精確浮點數 ) FLOAT[(M,D)] ( 單倍精確浮點數 ) DOUBLE[(M,D)] REAL[(M,D)] ( 雙倍精確浮點數 ) DECIMAL[(M[,D])] DEC[(M[,D])] NUMERIC[(M[,D])] FIXED[(M[,D])] 4bytes 8bytes 不一定 -3.402823466E+38 ~ -1.175494351E-38 0 1.175494351E-38 ~ 3.402823466E+38-1.7976931348623157E+308~- 2.2250738585072014E-308 0 2.2250738585072014E- 308~1.7976931348623157E+308 (M 表示 最大顯示寬度,D 表示 小數位數 ) 最大儲存範圍與 DOUBLE 相同, 實際儲存範圍視 M 與 D 的值而定,M 若省略, 預設值為 10,D 若省略, 預設值為 0 如果 D > 0, 空間為 M + 2bytes, 如果 D = 0, 空間為 M + 1byte, 如果 M < D, 空間為 D + 2bytes
二 日期與時間型態 (date and time types) 資料型態空間範圍 DATE 3bytes 日期型態, 儲存範圍為 '1000-01-01' ~ '9999-12-31', MySQL 的日期格式為 'YYYY-MM-DD' DATETIME 3bytes 日期時間型態, 儲存範圍為 '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59',MySQL 的日期時間格式為 'YYYY- MM-DD HH:MM:SS' TIMESTAMP[(M)] TIME 8bytes 4bytes 時間戳記, 儲存範圍為 '1970-01-01 00:00:00' 到 2037 年的某時 (M 表示 最大顯示寬度 ) 時間型態, 儲存範圍為 '-838:59:59' ~ '838:59:59', MySQL 的時間格式為 'HH:MM:SS' YEAR[(2 4)] 1byte 以 2 或 4 位數字格式來儲存年份, 預設值為 4 4 位數 :1901 ~ 2155 及 0000 2 位數 :70 ~ 69, 表示 1970 ~ 2069
三 字串型態 (string types) 資料型態空間範圍 CHAR(M) Mbytes 固定長度字串,0 ~ 255 個字元 (M 表示最大儲存長度 ) CHAR 1byte 固定長度字串,1 個字元, 同 CHAR(1) VARCHAR(M) TINYBLOB TINYTEXT BLOB TEXT MEDIUMBLOB MEDIUMTEXT LONGBLOB LONGTEXT L+1byte L+1byte L+2bytes L+3bytes L+4bytes 可變長度字串,0 ~ 255 個字元 (L 表示實際儲存資料的長度 ) 可變長度字串, 最多可以儲存 255 (2 8-1) 個字元 可變長度字串, 最多可以儲存 65535 (2 16-1) 個字元 可變長度字串, 最多可以儲存 16,777,215 (2 24-1) 個字元 可變長度字串, 最多可以儲存 4,294,967,295 (2 32-1) 個字元
在瞭解 MySQL 提供的資料型態後, 我們將為您示範如何建立 friend_club 資料表, 這個資料表包含下列 8 個欄位 : 欄位名稱 資料型態 長度 主索引鍵 說明 no SMALLINT - 編號欄位 name VARCHAR 10 姓名欄位 sex CHAR 2 性別欄位 age VARCHAR 10 年齡欄位 star_signs VARCHAR 6 星座欄位 height VARCHAR 10 身高欄位 weight VARCHAR 10 體重欄位 career VARCHAR 10 職業欄位
1.
2.
3.
4.
5.
6.