第 10 章 MySQL 資料庫系統的基本使用 10-1 網頁資料庫的基礎 10-2 MySQL 資料庫系統 10-3 使用 phpmyadmin 建立 MySQL 資料庫 10-4 新增 MySQL 資料表 10-5 匯入與匯出 MySQL 資料庫 10-6 變更 MySQL 管理者密碼
10-1 網頁資料庫的基礎 10-1-1 資料庫系統 10-1-2PHP 與資料庫
10-1-1 資料庫系統 資料庫 PHP 伺服端網頁技術的主要目的是建立 Web 網站 事實上, 大部分 PHP 建立的網站都屬於網頁資料庫 (Web Database) 的應用, 在伺服端提供資料來源的資料庫系統 (Database System) 資料庫 (Database) 是一種資料儲存單位, 一些經過組織的資料集合, 眾多出勤管理系統 倉庫管理系統 進銷存系統或小至錄影帶店管理系統, 這些應用程式都屬於不同應用的資料庫系統
10-1-1 資料庫系統 資料庫系統 資料庫系統是由資料庫和資料庫管理系統所組成, 資料庫管理系統是一套管理資料庫的應用程式 關聯式資料庫系統 (Relational Database System) 是目前資料庫系統的主流, 巿面上大部分資料庫管理系統都屬於關聯式資料庫管理系統 (Relational Database Management System), 例如 : Access MySQL SQL Server 和 Oracle 等 在實作上, 使用者下達 SQL 結構化查詢語言, 透過資料庫管理系統來儲存和管理資料庫儲存的資料 開發資料庫系統就是在設計資料庫 建立應用程式使用介面和決策架構, 針對需求設計資料庫, 資料庫管理系統本身只負責管理和存取資料庫, 作為應用系統的資料來源
10-1-1 資料庫系統 關聯式資料庫 關聯式資料庫是由一個或多個資料表所組成, 在多個資料表間使用欄位的資料值來建立連接, 以便實作資料表間的關聯性 在關聯式資料庫是使用二維表格的資料表來儲存記錄資料, 在各資料表間使用欄位值建立關聯性, 透過關聯性來存取其他資料表的資料 例如 : 使用 學號 欄位值建立兩個資料表間的關聯性, 如右圖所示 :
10-1-1 資料庫系統 關聯式資料庫的組成 : 資料表 記錄與欄位 關聯式資料庫的資料是儲存在資料庫的 資料表 (Tables), 每一個資料表使用 欄位 ( Fields) 分類成多個群組, 每一個群組是一筆 記錄 (Records), 例如 : 通訊錄資料表的記錄, 如下表所示 :
10-1-1 資料庫系統 資料表主鍵與索引 在資料表需要選擇 主鍵 (Primary Key), 這是用來識別資料表唯一記錄的欄位資料, 可以是一到多個欄位的集合 例如 : 在 通訊錄 資料表選擇 編號 欄位作為主鍵 資料庫儲存資料的目的是為了提昇排序和查詢效率, 在資料表可以使用 索引 (Index) 將資料系統化整理, 以便在大量記錄中快速找到記錄或進行排序 例如 : 在資料表建立主鍵就是建立此欄位的索引, 換句話說, 我們可以使用主鍵欄位來加速記錄的搜尋和排序
10-1-2 PHP 與資料庫 PHP 提供函數可以配合不同資料庫系統來建立網頁資料庫, 換句話說,PHP 程式如同檔案讀寫一般, 可以直接在伺服端存取資料庫的記錄資料, 其架構如下圖所示 :
10-2 MySQL 資料庫系統 10-2-1 認識 MySQL 與 MariaDB 10-2-2 啟動與停止 MySQL 伺服器
10-2-1 認識 MySQL 與 MariaDB MySQL 資料庫系統 MySQL 是一套開放原始碼 (Open Source) 的關聯式資料庫管理系統,MySQL AB 公司開發與提供技術支援, 這是 David Axmark Allan Larsson 和 Michael Monty Widenius 在瑞典設立的公司, 其官方網址為 :http://www.mysql.com MySQL 源於 msql,msql 全名 Mini SQL 是一套功能陽春的關聯式資料庫管理系統, 其執行速度差且擴充性不足, 所以 MySQL AB 公司使用 msql 的 API 為基礎, 建立一套全新 SQL 介面的資料庫管理系統, 名為 :MySQL
10-2-1 認識 MySQL 與 MariaDB MariaDB 資料庫系統 MariaDB 是 MySQL 原開發團隊開發的資料庫系統, 而且保證永遠開放原始碼, 目前已經成為最普遍使用的資料庫伺服器之一,Facebook 和 Google 公司都已經改用 MariaDB 來取代 MySQL 資料庫伺服器, 其官方網址是 :https://mariadb.org/. 在本書使用的 XAMPP 套件, 其安裝的 MySQL 是 MariaDB 資料庫系統, 不過, 因為完全相容,PHP 程式完全不用任何修改就可以存取 MariaDB 資料庫
10-2-2 啟動與停止 MySQL 伺服器 管理介面 在第 1 章安裝 XAMPP 整合套件時已經安裝 MySQL 資料庫管理系統 ( 正確的說是 MariaDB, 為了方便說明本書仍然稱為 MySQL), 請啟動 XAMPP 控制面板後, 就可以看到 MySQL 伺服器的管理介面, 如下圖所示 :
10-2-2 啟動與停止 MySQL 伺服器 管理介面按鈕 在 MySQL 哪一列提供多個按鈕來管理 MySQL 資料庫, 相關按鈕的說明如下表所示 : 按鈕 Start Stop Config Admin Logs 說明啟動 MySQL 伺服器停止 MySQL 伺服器設定 MySQL 伺服器啟動 phpmyadmin 管理工具檢視 MySQL 錯誤記錄檔
10-3 使用 phpmyadmin 建立 MySQL 資料庫 10-3-1 啟動與結束 phpmyadmin 10-3-2 在 MySQL 建立與刪除資料庫
10-3 使用 phpmyadmin 建立 MySQL 資料庫 phpmyadmin 是一套免費 Web 介面功能強大的 MySQL 管理工具, 支援中文使用介面, 可以幫助我們管理 MySQL 資料庫系統, 簡單的說, 我們是使用 phpmyadmin 管理工具來建立本書所需的 MySQL 資料庫 XAMPP 安裝套件包含 phpmyadmin, 在第 1 章安裝 XAMPP 套件時, 就已經安裝 phpmyadmin 現在, 筆者準備使用 phpmyadmin 管理工具建立本書後各章節測試所需的 MySQL 資料庫
10-3-1 啟動與結束 phpmyadmin 啟動 phpmyadmin 請在 XAMPP 控制面板的 MySQL 哪一列, 如果埠號顯示 3306, 表示 MySQL 伺服器已經在啟動中, 請按之後 Admin 鈕, 可以啟動瀏覽器看到使用 root 使用者, 預設沒有密碼登入系統, 和看到 phpmyadmin 管理工具的頁面, 如下圖所示 :
10-3-1 啟動與結束 phpmyadmin 結束 phpmyadmin 結束 phpmyadmin 非常容易, 只需關閉瀏覽器, 就可以離開 phpmyadmin 管理工具
10-3-2 在 MySQL 建立資料庫 phpmyadmin 提供完整操作介面, 可以在 MySQL 建立資料庫 定義資料表和新增記錄資料 現在我們準備使用 phpmyadmin, 在 MySQL 建立本書後所需的 myschool 資料庫, 如下圖所示 :
10-4 新增 MySQL 資料表 10-4-1 MySQL 欄位的資料型態 10-4-2 新增資料表 10-4-3 新增記錄資料
10-4-1 MySQL 欄位的資料型態 資料類型 說明 TINYINT 最小的整數, 有符號整數 -128~127; 無符號是 0~255 SMALLINT 短整數, 有符號整數 -32768~32767; 無符號是 0~65535 MEDIUMINT 中型整數, 有符號整數 -8388608~8388607; 無符號是 0~16777215 INT 或 INTEGER 整數, 有符號整數 -2147483648~2147483647; 無符號是 0~4294967295 BIGINT 長整數, 有符號整數 -922337203685475808~922337203685475807; 無符號是 0~188446744073709550615 FLOAT 單精浮點數, 精確度小於等於 24 FLOAT(M,D) DOUBLE(M,D) DECIMAL(M,D) CHAR(M) VARCHAR(M) TINETEXT TEXT LONGTEXT 單精浮點數,M 為最大長度,D 是小數點數 雙精浮點數,M 為最大長度,D 是小數點數 數值,M 為最大長度,D 是小數點數 固定長度字串,M 為最大長度 1~255 位元組, 表示其佔用的空間 變動長度字串,M 為最大長度 1~255 位元組, 依實際長度儲存, 但是不超過 M 字串, 最大長度 255 位元組 字串, 最大長度 65535 位元組 長字串, 最大長度 4294967295 位元組 DATE 日期資料, 其範圍 1000-01-01~9999-10-31 DATETIME 日期 / 時間資料, 其範圍 1000-01-0100:00:00~9999-10-3123:59:59 TIMESTAMP 時間刻記, 其範圍 1970-01-0100:00:00~2037-10-3123:59:59 TIME 時間資料
10-4-2 新增資料表 欄位定義資料 在這一節筆者準備繼續第 10-3-2 節建立 myschool 資料庫的步驟, 新增 students 資料表, 資料表的欄位說明, 如下表所示 : 資料表 :students 欄位名稱 MySQL 資料類型大小欄位說明 sno VARCHAR 5 學號 ( 主鍵 ) name VARCHAR 12 姓名 address VARCHAR 50 地址 birthday DATE N/A 生日 username VARCHAR 12 使用者名稱 password VARCHAR 12 使用者密碼
10-4-2 新增資料表 輸入欄位定義資料
10-4-3 新增記錄資料 現在我們已經使用 phpmyadmin 管理工具在 MySQL 的 myschool 資料庫新增 students 資料表, 接下來就可以新增資料表的記錄資料, 以便新增之後章節所需的測試記錄
10-5 匯入與匯出 MySQL 資料庫 10-5-1 匯出資料庫 10-5-2 匯入資料庫
10-5-1 匯出資料庫 在 phpmyadmin 首頁提供輸出功能, 可以將指定資料庫匯出成為 SQL 指令碼檔案 例如 : 將前幾節建立的 myschool 資料庫匯出成為 myschool.sql 檔案, 如下圖所示 :
10-5-2 匯入資料庫 - 說明 為了方便讀者建立本書使用的範例資料庫, 筆者已經將 myschool 資料庫輸出成 SQL 指令檔案 myschool.sql 在 phpmyadmin 管理工具提供執行 SQL 指令檔的功能, 可以直接匯入 SQL 指令檔案來建立資料庫 ( 在執行前, 請先刪除之前建立的 myschool 資料庫 )
10-5-2 匯入資料庫 - 內容 在資料庫匯入的 myschool 資料庫, 包含三個資料表 students courses 和 classes, 其關聯性欄位如下圖所示 :
10-5-2 匯入資料庫 -courses 資料表 courses 資料表是課程資料表, 儲存課程資料, 其定義如下表所示 : 資料表 :courses 欄位名稱 MySQL 資料類型大小欄位說明 cno VARCHAR 5 課程編號 ( 主鍵 ) pname VARCHAR 12 教授姓名 title VARCHAR 30 課程名稱 credits INT 11 學分數
10-5-2 匯入資料庫 -classes 資料表 classes 資料表是儲存學生的選課資料, 其定義如下表所示 : 資料表 :classes 欄位名稱 MySQL 資料類型大小欄位說明 sno VARCHAR 5 學號 cno VARCHAR 5 課程編號
10-6 變更 MySQL 管理者密碼 - 變更 MySQL 管理者密碼 phpmyadmin 管理工具提供介面更改管理者密碼, 例如 : 將管理者 root 密碼改為 A12345678, 如下圖所示 :
10-6 變更 MySQL 管理者密碼 - 更改 phpmyadmin 的密碼設定 當更改 phpmyadmin 管理工具 root 的密碼後, 我們就無法成功登入 phpmyadmin, 因為需要同步修改 phpmyadmin 的密碼設定
10-6 變更 MySQL 管理者密碼 - 更改 phpmyadmin 的密碼設定 在 XAMPP 控制面板執行 Apache 的 Config/phpMyAdmin (config.inc.php) 指令, 可以開啟設定檔來更改密碼設定, 不過, 因為 記事本 無法正確顯示換行, 我們需要自行開啟 config.inc.php 檔案來更改密碼, 如下圖所示 :