關于我們
書單推薦
新書推薦
|
MySQL 數(shù)據(jù)庫應用案例課堂
本書從零基礎講解起步,用實例引導讀者深入學習,采取“數(shù)據(jù)庫基礎→數(shù)據(jù)庫的基本操作→SQL查詢語句→數(shù)據(jù)庫高級管理→項目開發(fā)與案例設計”的講解模式,深入淺出地講解MySQL的各項技術及實戰(zhàn)技能。本書共分5篇,第1篇主要講解MySQL的基礎知識,MySQL的安裝與環(huán)境配置等;第2篇主要講解操作數(shù)據(jù)庫,創(chuàng)建、修改和刪除數(shù)據(jù)表,數(shù)據(jù)類型和運算符,索引的操作,視圖的操作等;第3篇主要講解插入、更新與刪除數(shù)據(jù),MySQL函數(shù),查詢數(shù)據(jù),存儲過程和函數(shù),MySQL觸發(fā)器等;第4篇主要講解MySQL安全性機制,MySQL數(shù)據(jù)備份與還原,管理MySQL日志,MySQL性能的優(yōu)化,MySQL的高級特性和使用MySQL Workbench管理數(shù)據(jù)庫;第5篇主要講解Java訪問MySQL數(shù)據(jù)庫,PHP操作MySQL數(shù)據(jù)庫,論壇管理系統(tǒng)數(shù)據(jù)庫設計、新聞發(fā)布系統(tǒng)數(shù)據(jù)庫設計。本書附贈光盤中包含豐富的資源,包括MySQL案例源代碼、教學幻燈片、精品教學視頻、MySQL常用命令速查手冊、數(shù)據(jù)庫工程師職業(yè)規(guī)劃、數(shù)據(jù)庫工程師面試技巧、數(shù)據(jù)庫工程師常見面試題、MySQL常見錯誤及解決方案、MySQL數(shù)據(jù)庫經(jīng)驗及技巧大匯總等。本書適合任何想學習MySQL的人員,無論您是否從事計算機相關行業(yè),無論您是否接觸過MySQL,通過學習本書均可快速掌握MySQL的管理方法和技巧。
本書從零基礎講解起步,用實例引導讀者深入學習,采取“數(shù)據(jù)庫基礎→數(shù)據(jù)庫的基本操作→SQL查詢語句→數(shù)據(jù)庫高級管理→項目開發(fā)與案例設計”的講解模式,深入淺出地講解MySQL的各項技術及實戰(zhàn)技能。本書共分5篇,第1篇主要講解MySQL的基礎知識,MySQL的安裝與環(huán)境配置等;第2篇主要講解操作數(shù)據(jù)庫,創(chuàng)建、修改和刪除數(shù)據(jù)表,數(shù)據(jù)類型和運算符,索引的操作,視圖的操作等;第3篇主要講解插入、更新與刪除數(shù)據(jù),MySQL函數(shù),查詢數(shù)據(jù),存儲過程和函數(shù),MySQL觸發(fā)器等;第4篇主要講解MySQL安全性機制,MySQL數(shù)據(jù)備份與還原,管理MySQL日志,MySQL性能的優(yōu)化,MySQL的高級特性和使用MySQL Workbench管理數(shù)據(jù)庫;第5篇主要講解Java訪問MySQL數(shù)據(jù)庫,PHP操作MySQL數(shù)據(jù)庫,論壇管理系統(tǒng)數(shù)據(jù)庫設計、新聞發(fā)布系統(tǒng)數(shù)據(jù)庫設計。本書附贈光盤中包含豐富的資源,包括MySQL案例源代碼、教學幻燈片、精品教學視頻、MySQL常用命令速查手冊、數(shù)據(jù)庫工程師職業(yè)規(guī)劃、數(shù)據(jù)庫工程師面試技巧、數(shù)據(jù)庫工程師常見面試題、MySQL常見錯誤及解決方案、MySQL數(shù)據(jù)庫經(jīng)驗及技巧大匯總等。本書適合任何想學習MySQL的人員,無論您是否從事計算機相關行業(yè),無論您是否接觸過MySQL,通過學習本書均可快速掌握MySQL的管理方法和技巧。
目 錄
第1篇 MySQL數(shù)據(jù)庫基礎 第1章 初識MySQL3 1.1 關于數(shù)據(jù)庫的基本概念4 1.1.1 數(shù)據(jù)庫4 1.1.2 表4 1.1.3 數(shù)據(jù)類型5 1.1.4 主鍵5 1.2 數(shù)據(jù)庫技術構成5 1.2.1 數(shù)據(jù)庫系統(tǒng)5 1.2.2 SQL語言6 1.2.3 數(shù)據(jù)庫訪問技術7 1.3 MySQL簡介8 1.3.1 客戶機-服務器軟件8 1.3.2 MySQL的版本8 1.3.3 MySQL的優(yōu)勢9 1.3.4 MySQL 5.6的新功能10 1.4 MySQL的工具10 1.4.1 MySQL的命令行實用工具11 1.4.2 MySQL Workbench11 1.5 高手甜點12 1.6 跟我學上機13 第2章 MySQL的安裝與環(huán)境配置15 2.1 Windows系統(tǒng)中安裝與配置MySQL16 2.1.1 安裝MySQL16 2.1.2 配置MySQL21 2.2 啟動服務并登錄MySQL數(shù)據(jù)庫26 2.2.1 查看和啟動MySQL服務26 2.2.2 登錄MySQL數(shù)據(jù)庫27 2.2.3 配置Path變量31 2.3 Linux系統(tǒng)中安裝與配置MySQL32 2.3.1 Linux操作系統(tǒng)下的MySQL 版本介紹32 2.3.2 安裝和配置MySQL的 RPM包34 2.3.3 安裝和配置MySQL的源碼包38 2.4 MySQL常用圖形管理工具39 2.5 高手甜點40 2.6 跟我學上機40 第2篇 MySQL數(shù)據(jù)庫的基本操作 第3章 操作數(shù)據(jù)庫43 3.1 創(chuàng)建數(shù)據(jù)庫44 3.2 刪除數(shù)據(jù)庫45 3.3 數(shù)據(jù)庫存儲引擎45 3.3.1 InnoDB存儲引擎47 3.3.2 MyISAM存儲引擎48 3.3.3 MEMORY存儲引擎48 3.3.4 存儲引擎的選擇49 3.4 綜合實例——數(shù)據(jù)庫的創(chuàng)建和刪除49 3.5 高手甜點51 3.6 跟我學上機52 第4章 創(chuàng)建、修改和刪除數(shù)據(jù)表53 4.1 創(chuàng)建數(shù)據(jù)表54 4.1.1 創(chuàng)建表的語法形式54 4.1.2 使用主鍵約束55 4.1.3 使用外鍵約束56 4.1.4 使用非空約束57 4.1.5 使用唯一性約束58 4.1.6 使用默認約束58 4.1.7 設置表的屬性值自動增加59 4.2 查看數(shù)據(jù)表結構60 4.2.1 查看表的基本結構語句 DESCRIBE60 4.2.2 查看表的詳細結構語句SHOW CREATE TABLE61 4.3 修改數(shù)據(jù)表62 4.3.1 修改表名62 4.3.2 修改字段的數(shù)據(jù)類型63 4.3.3 修改字段名64 4.3.4 添加字段65 4.3.5 刪除字段67 4.3.6 修改字段的排列位置68 4.3.7 更改表的存儲引擎69 4.3.8 刪除表的外鍵約束70 4.4 刪除數(shù)據(jù)表71 4.4.1 刪除沒有被關聯(lián)的表72 4.4.2 刪除被其他表關聯(lián)的主表72 4.5 綜合實例——數(shù)據(jù)表的基本操作74 4.6 高手甜點81 4.7 跟我學上機82 第5章 數(shù)據(jù)類型和運算符85 5.1 MySQL數(shù)據(jù)類型介紹86 5.1.1 整數(shù)類型86 5.1.2 浮點數(shù)類型和定點數(shù)類型88 5.1.3 日期與時間類型89 5.1.4 字符串類型100 5.1.5 二進制類型105 5.2 選擇數(shù)據(jù)類型的方法108 5.3 常見運算符介紹109 5.3.1 運算符概述109 5.3.2 算術運算符110 5.3.3 比較運算符111 5.3.4 邏輯運算符119 5.3.5 位運算符121 5.3.6 運算符的優(yōu)先級124 5.4 綜合實例——運算符的使用125 5.5 高手甜點127 5.6 跟我學上機128 第6章 索引的操作129 6.1 索引簡介130 6.1.1 索引的含義和特點130 6.1.2 索引的分類130 6.1.3 索引的設計原則131 6.2 創(chuàng)建索引132 6.2.1 創(chuàng)建表的時候創(chuàng)建索引132 6.2.2 在已有的表上創(chuàng)建索引137 6.3 刪除索引144 6.4 綜合實例——創(chuàng)建索引145 6.5 高手甜點148 6.6 跟我學上機148 第7章 視圖的操作151 7.1 視圖概述152 7.1.1 視圖的含義152 7.1.2 視圖的作用153 7.2 創(chuàng)建視圖153 7.2.1 創(chuàng)建視圖的語法形式153 7.2.2 在單表上創(chuàng)建視圖154 7.2.3 在多表上創(chuàng)建視圖155 7.3 查看視圖156 7.3.1 用DESCRIBE語句查看視圖的 基本信息156 7.3.2 用SHOW TABLE STATUS語句 查看視圖的基本信息157 7.3.3 用SHOW CREATE VIEW語句 查看視圖的詳細信息158 7.3.4 在views表中查看視圖的詳細 信息158 7.4 修改視圖160 7.4.1 用CREATE OR REPLACE VIEW 語句修改視圖160 7.4.2 用ALTER語句修改視圖161 7.5 更新視圖161 7.6 刪除視圖164 7.7 綜合實例——視圖應用165 7.8 高手甜點172 7.9 跟我學上機173 第3篇 SQL查詢語句 第8章 插入、更新與刪除數(shù)據(jù)177 8.1 插入數(shù)據(jù)178 8.1.1 為表的所有字段插入數(shù)據(jù)178 8.1.2 為表的指定字段插入數(shù)據(jù)180 8.1.3 同時插入多條記錄181 8.1.4 將查詢結果插入表中183 8.2 更新數(shù)據(jù)184 8.3 刪除數(shù)據(jù)186 8.4 綜合實例——記錄的插入、更新 和刪除188 8.5 高手甜點192 8.6 跟我學上機193 第9章 MySQL函數(shù)195 9.1 MySQL中的函數(shù)分類196 9.2 數(shù)學函數(shù)196 9.2.1 絕對值函數(shù)ABS(x)和返回 圓周率的函數(shù)PI()196 9.2.2 平方根函數(shù)SQRT(x)和求余函數(shù) MOD(x,y)197 9.2.3 獲取整數(shù)的函數(shù)CEIL(x)、CEILING(x)和FLOOR(x)197 9.2.4 獲取隨機數(shù)的函數(shù)RAND() 和RAND(x)198 9.2.5 四舍五入函數(shù)ROUND(x)、 ROUND(x,y)和 TRUNCATE(x,y)198 9.2.6 符號函數(shù)SIGN(x)200 9.2.7 冪運算函數(shù)POW(x,y)、 POWER(x,y)和EXP(x)200 9.2.8 對數(shù)運算函數(shù)LOG(x)和 LOG10(x)201 9.2.9 角度與弧度相互轉(zhuǎn)換的函數(shù) RADIANS(x)和DEGREES(x)201 9.2.10 正弦函數(shù)SIN(x)和反正弦 函數(shù)ASIN(x)202 9.2.11 余弦函數(shù)COS(x)和反余弦函數(shù) ACOS(x)202 9.2.12 正切函數(shù)、反正切函數(shù)和余切 函數(shù)203 9.3 字符串函數(shù)204 9.3.1 計算字符串中字符數(shù)的函數(shù) 和字符串長度的函數(shù)204 9.3.2 合并字符串函數(shù)CONCAT(s1,s2,…)、 CONCAT_WS(x,s1,s2,…)204 9.3.3 替換字符串的函數(shù) INSERT(s1,x,len,s2)205 9.3.4 字母大小寫轉(zhuǎn)換函數(shù)206 9.3.5 獲取指定長度字符串的函數(shù) LEFT(s,n)和RIGHT(s,n)206 9.3.6 填充字符串的函數(shù)LPAD(s1,len,s2) 和RPAD(s1,len,s2)207 9.3.7 刪除空格的函數(shù)LTRIM(s)、 RTRIM(s)和TRIM(s)208 9.3.8 刪除指定字符串的函數(shù)TRIM (s1 FROM s)208 9.3.9 重復生成字符串的函數(shù) REPEAT(s,n)209 9.3.10 空格函數(shù)SPACE(n)和替換函數(shù) REPLACE(s,s1,s2)209 9.3.11 比較字符串大小的函數(shù) STRCMP(s1,s2)210 9.3.12 獲取子串的函數(shù)SUBSTRING(s,n,len) 和MID(s,n,len)210 9.3.13 匹配子串開始位置的函數(shù)211 9.3.14 字符串逆序的函數(shù) REVERSE(s)211 9.3.15 返回指定位置的字符串的函數(shù) ELT(N,字符串1,字符串2,字符 串3,...,字符串N)212 9.3.16 返回指定字符串位置的函數(shù) FIELD(s,s1,s2,…)212 9.3.17 返回子串位置的函數(shù) FIND_IN_SET(s1,s2)212 9.3.18 選取字符串的函數(shù) MAKE_SET(x,s1,s2,…)213 9.4 日期和時間函數(shù)213 9.4.1 獲取當前日期的函數(shù)和獲取當前 時間的函數(shù)214 9.4.2 獲取當前日期和時間的函數(shù)214 9.4.3 UNIX時間戳函數(shù)215 9.4.4 返回UTC日期的函數(shù)和返回 UTC時間的函數(shù)215 9.4.5 獲取月份的函數(shù)MONTH(date) 和MONTHNAME(date)216 9.4.6 獲取星期的函數(shù)DAYNAME(d)、 DAYOFWEEK(d)和 WEEKDAY(d)216 9.4.7 獲取星期數(shù)的函數(shù)WEEK(d) 和WEEKOFYEAR(d)217 9.4.8 獲取天數(shù)的函數(shù)DAYOFYEAR(d) 和DAYOFMONTH(d)218 9.4.9 獲取年份、季度、小時、分鐘和 秒鐘的函數(shù)219 9.4.10 獲取日期的指定值的函數(shù) EXTRACT(type FROM date)220 9.4.11 時間和秒鐘轉(zhuǎn)換的函數(shù)220 9.4.12 計算日期和時間的函數(shù)221 9.4.13 格式化日期和時間的函數(shù)224 9.5 條件判斷函數(shù)227 9.5.1 IF(expr,v1,v2)函數(shù)227 9.5.2 IFNULL(v1,v2)函數(shù)227 9.5.3 CASE函數(shù)228 9.6 系統(tǒng)信息函數(shù)229 9.6.1 獲取MySQL版本號、連接數(shù)和 數(shù)據(jù)庫名的函數(shù)229 9.6.2 獲取用戶名的函數(shù)231 9.6.3 獲取字符串的字符集和排序方式 的函數(shù)231 9.6.4 獲取最后一個自動生成的ID值 的函數(shù)232 9.7 加密和解密函數(shù)234 9.7.1 加密函數(shù)PASSWORD(str)234 9.7.2 加密函數(shù)MD5(str)234 9.7.3 加密函數(shù)ENCODE (str,pswd_str)234 9.7.4 解密函數(shù)DECODE (crypt_str,pswd_str)235 9.8 其他函數(shù)235 9.8.1 格式化函數(shù)FORMAT(x,n)235 9.8.2 不同進制的數(shù)字進行轉(zhuǎn)換的 函數(shù)236 9.8.3 IP地址與數(shù)字相互轉(zhuǎn)換的 函數(shù)236 9.8.4 加鎖函數(shù)和解鎖函數(shù)237 9.8.5 重復執(zhí)行指定操作的函數(shù)238 9.8.6 改變字符集的函數(shù)238 9.8.7 改變數(shù)據(jù)類型的函數(shù)239 9.9 綜合實例——MySQL函數(shù)的使用239 9.10 高手甜點242 9.11 跟我學上機243 第10章 查詢數(shù)據(jù)245 10.1 基本查詢語句246 10.2 單表查詢248 10.2.1 查詢所有字段248 10.2.2 查詢指定字段249 10.2.3 查詢指定記錄250 10.2.4 帶IN關鍵字的查詢252 10.2.5 帶BETWEEN AND的范圍 查詢254 10.2.6 帶LIKE的字符匹配查詢255 10.2.7 查詢空值256 10.2.8 帶AND的多條件查詢258 10.2.9 帶OR的多條件查詢259 10.2.10 查詢結果不重復260 10.2.11 對查詢結果排序261 10.2.12 分組查詢264 10.2.13 使用LIMIT限制查詢結果的 數(shù)量269 10.3 使用集合函數(shù)查詢270 10.3.1 COUNT()函數(shù)271 10.3.2 SUM()函數(shù)272 10.3.3 AVG()函數(shù)273 10.3.4 MAX()函數(shù)274 10.3.5 MIN()函數(shù)275 10.4 連接查詢276 10.4.1 內(nèi)連接查詢276 10.4.2 外連接查詢279 10.4.3 復合條件連接查詢281 10.5 子查詢282 10.5.1 帶ANY、SOME關鍵字的 子查詢282 10.5.2 帶ALL關鍵字的子查詢283 10.5.3 帶EXISTS關鍵字的子查詢283 10.5.4 帶IN關鍵字的子查詢285 10.5.5 帶比較運算符的子查詢286 10.6 合并查詢結果288 10.7 為表和字段取別名290 10.7.1 為表取別名290 10.7.2 為字段取別名292 10.8 使用正則表達式查詢293 10.8.1 查詢以特定字符或字符串開頭 的記錄294 10.8.2 查詢以特定字符或字符串結尾 的記錄295 10.8.3 替代字符串中的任意一個 字符295 10.8.4 匹配多個字符296 10.8.5 匹配指定字符串297 10.8.6 匹配指定字符中的任意一個298 10.8.7 匹配指定字符以外的字符299 10.8.8 指定字符串連續(xù)出現(xiàn)的次數(shù)299 10.9 綜合實例——數(shù)據(jù)表查詢操作300 10.10 高手甜點307 10.11 跟我學上機308 第11章 存儲過程和函數(shù)309 11.1 創(chuàng)建存儲過程和函數(shù)310 11.1.1 創(chuàng)建存儲過程310 11.1.2 創(chuàng)建存儲函數(shù)312 11.1.3 變量的使用313 11.1.4 定義條件和處理程序314 11.1.5 光標的使用317 11.1.6 流程控制的使用318 11.2 調(diào)用存儲過程和函數(shù)322 11.2.1 調(diào)用存儲過程323 11.2.2 調(diào)用存儲函數(shù)323 11.3 查看存儲過程和函數(shù)324 11.3.1 查看存儲過程和函數(shù)的狀態(tài)324 11.3.2 查看存儲過程和函數(shù)的定義325 11.3.3 查看存儲過程和函數(shù)的信息326 11.4 修改存儲過程和函數(shù)327 11.5 刪除存儲過程和函數(shù)329 11.6 綜合實例——綜合應用存儲過程 和函數(shù)329 11.7 高手甜點332 11.8 跟我學上機333 第12章 MySQL觸發(fā)器335 12.1 創(chuàng)建觸發(fā)器336 12.1.1 創(chuàng)建只有一個執(zhí)行語句的 觸發(fā)器336 12.1.2 創(chuàng)建有多個執(zhí)行語句的 觸發(fā)器337 12.2 查看觸發(fā)器339 12.2.1 用SHOW TRIGGERS語句 查看觸發(fā)器信息339 12.2.2 在triggers表中查看觸發(fā)器 信息341 12.3 觸發(fā)器的使用342 12.4 刪除觸發(fā)器343 12.5 綜合實例——觸發(fā)器的應用343 12.6 高手甜點345 12.7 跟我學上機346 第4篇 MySQL數(shù)據(jù)庫高級管理 第13章 MySQL安全性機制349 13.1 權限表350 13.1.1 user表350 13.1.2 db表和host表352 13.1.3 tables_priv表和 columns_priv表354 13.1.4 procs_priv表356 13.2 賬戶管理356 13.2.1 登錄和退出MySQL服務器356 13.2.2 新建普通用戶358 13.2.3 刪除普通用戶361 13.2.4 root用戶修改自己的密碼363 13.2.5 root用戶修改普通用戶密碼364 13.2.6 普通用戶修改密碼365 13.2.7 root用戶密碼丟失的解決 辦法366 13.3 權限管理367 13.3.1 MySQL的各種權限368 13.3.2 授權370 13.3.3 收回權限372 13.3.4 查看權限373 13.4 訪問控制373 13.4.1 連接核實階段374 13.4.2 請求核實階段374 13.5 綜合實例——綜合管理用戶權限375 13.6 高手甜點378 13.7 跟我學上機378 第14章 數(shù)據(jù)備份與還原381 14.1 數(shù)據(jù)備份382 14.1.1 使用mysqldump命令備份382 14.1.2 直接復制整個數(shù)據(jù)庫目錄388 14.1.3 使用mysqlhotcopy工具快速 備份388 14.2 數(shù)據(jù)還原389 14.2.1 使用mysql命令還原389 14.2.2 直接復制到數(shù)據(jù)庫目錄390 14.2.3 mysqlhotcopy快速恢復390 14.3 數(shù)據(jù)庫遷移391 14.3.1 相同版本的MySQL數(shù)據(jù)庫 之間的遷移391 14.3.2 不同版本的MySQL數(shù)據(jù)庫 之間的遷移391 14.3.3 不同數(shù)據(jù)庫之間的遷移392 14.4 表的導出和導入392 14.4.1 用SELECT…INTO OUTFILE 導出文本文件392 14.4.2 用mysqldump命令導出文本 文件395 14.4.3 用mysql命令導出文本文件397 14.4.4 使用LOAD DATA INFILE 方式導入文本文件400 14.4.5 使用mysqlimport命令導入 文本文件402 14.5 綜合實例——數(shù)據(jù)的備份與恢復404 14.6 高手甜點408 14.7 跟我學上機409 第15章 管理MySQL日志411 15.1 日志簡介412 15.2 二進制日志412 15.2.1 啟動和設置二進制日志412 15.2.2 查看二進制日志413 15.2.3 刪除二進制日志415 15.2.4 使用二進制日志還原數(shù)據(jù)庫417 15.2.5 暫時停止記錄二進制日志的 功能417 15.3 錯誤日志418 15.3.1 啟動和設置錯誤日志418 15.3.2 查看錯誤日志418 15.3.3 刪除錯誤日志419 15.4 通用查詢?nèi)罩?20 15.4.1 啟動和設置通用查詢?nèi)罩?20 15.4.2 查看通用查詢?nèi)罩?20 15.4.3 刪除通用查詢?nèi)罩?20 15.5 慢查詢?nèi)罩?21 15.5.1 啟動和設置慢查詢?nèi)罩?21 15.5.2 查看慢查詢?nèi)罩?22 15.5.3 刪除慢查詢?nèi)罩?22 15.6 綜合實例——MySQL日志的綜合 管理422 15.7 高手甜點428 15.8 跟我學上機428 第16章 MySQL性能的優(yōu)化429 16.1 優(yōu)化簡介430 16.2 優(yōu)化查詢430 16.2.1 分析查詢語句431 16.2.2 索引對查詢速度的影響433 16.2.3 使用索引查詢434 16.2.4 優(yōu)化子查詢436 16.3 優(yōu)化數(shù)據(jù)庫結構437 16.3.1 將字段較多的表分解成 多個表437 16.3.2 增加中間表438 16.3.3 增加冗余字段440 16.3.4 優(yōu)化插入記錄的速度440 16.3.5 分析、檢查和優(yōu)化表442 16.4 優(yōu)化MySQL服務器443 16.4.1 優(yōu)化服務器硬件444 16.4.2 優(yōu)化MySQL的參數(shù)444 16.5 綜合實例——全面優(yōu)化MySQL 服務器445 16.6 高手甜點447 16.7 跟我學上機448 第17章 MySQL的高級特性449 17.1 MySQL查詢緩存450 17.1.1 認識查詢緩存450 17.1.2 監(jiān)控和維護查詢緩存455 17.1.3 檢查緩存命中456 17.1.4 優(yōu)化查詢緩存457 17.2 合并表和分區(qū)表458 17.2.1 合并表458 17.2.2 分區(qū)表460 17.3 事務控制469 17.4 MySQL分布式事務473 17.4.1 分布式事務的原理473 17.4.2 分布式事務的語法473 17.5 高手甜點474 17.6 跟我學上機475 第18章 使用MySQL Workbench 管理數(shù)據(jù)庫477 18.1 MySQL Workbench簡介478 18.1.1 MySQL Workbench的優(yōu)勢478 18.1.2 安裝MySQL Workbench478 18.2 SQL Development的基本操作480 18.2.1 創(chuàng)建數(shù)據(jù)庫連接480 18.2.2 創(chuàng)建和刪除新的數(shù)據(jù)庫482 18.2.3 創(chuàng)建和刪除新的數(shù)據(jù)表483 18.2.4 添加、修改表記錄486 18.2.5 查詢表記錄487 18.2.6 修改表結構488 18.3 Data Modeling的基本操作489 18.3.1 建立ER模型489 18.3.2 導入ER模型493 18.4 Server Administration的基本操作495 18.4.1 管理MySQL用戶495 18.4.2 備份MySQL數(shù)據(jù)庫498 18.4.3 還原MySQL數(shù)據(jù)庫500 18.5 高手甜點501 18.6 跟我學上機501 第5篇 MySQL開發(fā)與案例設計 第19章 Java訪問MySQL 數(shù)據(jù)庫505 19.1 JDBC概述506 19.2 下載與安裝MySQL Connector/J506 19.2.1 下載MySQL Connector/J506 19.2.2 安裝MySQL Connector/J 驅(qū)動507 19.3 Java連接MySQL數(shù)據(jù)庫507 19.4 Java操作MySQL數(shù)據(jù)庫509 19.4.1 創(chuàng)建Statement對象509 19.4.2 使用SELECT語句查詢數(shù)據(jù)509 19.4.3 插入、更新和刪除數(shù)據(jù)510 19.4.4 執(zhí)行任意SQL語句510 19.4.5 關閉創(chuàng)建的對象511 19.5 Java備份和還原MySQL數(shù)據(jù)庫512 19.5.1 備份MySQL數(shù)據(jù)庫512 19.5.2 還原MySQL數(shù)據(jù)庫512 19.6 高手甜點512 19.7 跟我學上機513 第20章 PHP操作MySQL 數(shù)據(jù)庫515 20.1 PHP訪問MySQL數(shù)據(jù)庫的一般 步驟516 20.2 連接數(shù)據(jù)庫前的準備工作516 20.2.1 在Windows系統(tǒng)下配置 PHP516 20.2.2 在Linux系統(tǒng)下配置PHP517 20.3 PHP操作MySQL數(shù)據(jù)庫所用的 函數(shù)517 20.3.1 通過mysqli類庫訪問MySQL 數(shù)據(jù)庫517 20.3.2 使用mysqli_connect()函數(shù)連接 MySQL服務器519 20.3.3 使用mysqli_select_db()函數(shù) 選擇數(shù)據(jù)庫文件520 20.3.4 使用mysqli_query()函數(shù) 執(zhí)行SQL語句520 20.3.5 使用mysqli_fetch_assoc ()函數(shù) 從數(shù)組結果集中獲取信息521 20.3.6 使用mysqli_fetch_object()函數(shù) 從結果中獲取一行作為對象521 20.3.7 使用mysqli_num_rows()函數(shù) 獲取查詢結果集中的記錄數(shù)521 20.3.8 使用mysqli_free_result()函數(shù) 釋放資源522 20.3.9 使用mysqli_close()函數(shù)關閉 連接522 20.4 綜合實例1——使用insert語句動態(tài) 添加用戶信息522 20.5 綜合實例2——使用select語句查詢 數(shù)據(jù)信息524 20.6 高手甜點526 20.7 跟我學上機527 第21章 論壇管理系統(tǒng)數(shù)據(jù)庫設計529 21.1 系統(tǒng)概述530 21.2 系統(tǒng)功能530 21.3 數(shù)據(jù)庫設計和實現(xiàn)531 21.3.1 設計方案圖表531 21.3.2 設計表533 21.3.3 設計索引537 21.3.4 設計視圖538 21.3.5 設計觸發(fā)器538 第22章 新聞發(fā)布系統(tǒng)數(shù)據(jù)庫設計541 22.1 系統(tǒng)概述542 22.2 系統(tǒng)功能542 22.3 數(shù)據(jù)庫設計和實現(xiàn)543 22.3.1 設計表543 22.3.2 設計索引548 22.3.3 設計視圖549 22.3.4 設計觸發(fā)器549
第1章
初識MySQL MySQL是一個開放源代碼的數(shù)據(jù)庫管理系統(tǒng)(DBMS),它是由MySQL AB公司開發(fā)、發(fā)布并支持的。MySQL是一個跨平臺的開源關系型數(shù)據(jù)庫管理系統(tǒng),廣泛地應用于Internet上的中小型網(wǎng)站開發(fā)。本章主要介紹數(shù)據(jù)庫的基礎知識,通過本章的學習,讀者可以了解數(shù)據(jù)庫的基本概念、數(shù)據(jù)庫的構成和MySQL的基本知識。 學習目標(已掌握的在方框中打鉤) 了解數(shù)據(jù)庫的基本概念 了解表、數(shù)據(jù)類型和主鍵 熟悉數(shù)據(jù)庫的技術構成 熟悉MySQL 掌握常見的MySQL工具 1.1 關于數(shù)據(jù)庫的基本概念 數(shù)據(jù)庫(Database,DB)是由一批數(shù)據(jù)構成的有序集合,這些數(shù)據(jù)被存放在結構化的數(shù)據(jù)表里。數(shù)據(jù)表之間相互關聯(lián),反映了客觀事物間的本質(zhì)聯(lián)系。數(shù)據(jù)庫系統(tǒng)提供對數(shù)據(jù)的安全控制和完整性控制。本節(jié)將介紹數(shù)據(jù)庫中的一些基本概念,包括數(shù)據(jù)庫的定義、數(shù)據(jù)表的定義和數(shù)據(jù)類型等。 1.1.1 數(shù)據(jù)庫 隨著信息技術和市場的快速發(fā)展,數(shù)據(jù)庫技術層出不窮;隨著應用的拓展和深入,數(shù)據(jù)庫的數(shù)量和規(guī)模越來越大。數(shù)據(jù)庫的誕生和發(fā)展給計算機信息管理帶來了一場巨大的革命。 數(shù)據(jù)處理技術的發(fā)展大致劃分為人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段和高級數(shù)據(jù)庫階段。數(shù)據(jù)庫的種類大概有層次式數(shù)據(jù)庫、網(wǎng)絡式數(shù)據(jù)庫和關系式數(shù)據(jù)庫三種,不同種類的數(shù)據(jù)庫按不同的數(shù)據(jù)結構來聯(lián)系和組織。 對于數(shù)據(jù)庫的概念,沒有一個完全固定的定義,隨著數(shù)據(jù)庫歷史的發(fā)展,定義的內(nèi)容也有很大的差異。其中一種比較普遍的觀點認為,數(shù)據(jù)庫是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合。數(shù)據(jù)庫是一個按數(shù)據(jù)結構來存儲和管理數(shù)據(jù)的計算機軟件系統(tǒng),即數(shù)據(jù)庫包含兩層含義:既可指保管數(shù)據(jù)的“倉庫”,又可指數(shù)據(jù)管理的方法和技術。 數(shù)據(jù)庫具有如下特點:①實現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余;②采用特定的數(shù)據(jù)類型;③具有較高的數(shù)據(jù)獨立性;④具有統(tǒng)一的數(shù)據(jù)控制功能。 1.1.2 表 在關系數(shù)據(jù)庫中,數(shù)據(jù)庫表是一系列二維數(shù)組的集合,用來存儲數(shù)據(jù)和操作數(shù)據(jù)的邏輯結構。它由縱向的列和橫向的行組成,行被稱為記錄,是組織數(shù)據(jù)的單位;列被稱為字段,每一列表示記錄的一個屬性,都有相應的描述信息,如數(shù)據(jù)類型、數(shù)據(jù)寬度等。 例如,一個有關作者信息的名為authors的表中,每一列包含所有作者的某個特定類型的信息,比如“姓名”,而每一行則包含某個特定作者的所有信息,如編號、姓名、性別、專業(yè),如圖1-1所示。 編號 姓名 性別 專業(yè) 100 張三 f 計算機 101 李芬 m 會計 102 岳陽 f 園林 圖1-1 authors表的結構與記錄 1.1.3 數(shù)據(jù)類型 數(shù)據(jù)類型決定了數(shù)據(jù)在計算機中的存儲格式,代表不同的信息類型。常用的數(shù)據(jù)類型有整數(shù)數(shù)據(jù)類型、浮點數(shù)數(shù)據(jù)類型、精確小數(shù)類型、二進制數(shù)據(jù)類型、日期/時間數(shù)據(jù)類型和字符串數(shù)據(jù)類型。 表中的每一個字段就是某種指定數(shù)據(jù)類型,比如圖1-1中“編號”字段為整數(shù)數(shù)據(jù),“性別”字段為字符型數(shù)據(jù)。 1.1.4 主鍵 主鍵(Primary Key)又稱主碼,用于唯一地標識表中的每一條記錄。可以定義表中的一列或多列為主鍵,主鍵列上不能有兩行相同的值,也不能為空值。假如,定義authors表,該表給每一個作者分配一個“作者編號”,該編號作為數(shù)據(jù)表的主鍵,如果出現(xiàn)相同的值,將提示錯誤,因為系統(tǒng)不能確定查詢的究竟是哪一條記錄;如果把作者的“姓名”作為主鍵,則不能出現(xiàn)重復的名字,這與現(xiàn)實不相符,因此“姓名”字段不適合作為主鍵。 1.2 數(shù)據(jù)庫技術構成 數(shù)據(jù)庫系統(tǒng)由硬件部分和軟件部分共同構成。硬件主要用于存儲數(shù)據(jù)庫中的數(shù)據(jù),包括計算機、存儲設備等;軟件部分則主要包括DBMS、支持DBMS運行的操作系統(tǒng),以及支持多種語言進行應用開發(fā)的訪問技術等。本節(jié)將介紹數(shù)據(jù)庫的技術構成。 1.2.1 數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫系統(tǒng)有3個主要的組成部分。 (1) 數(shù)據(jù)庫(Database):提供了一個存儲空間用以存儲各種數(shù)據(jù),可以將數(shù)據(jù)庫視為一個存儲數(shù)據(jù)的容器。一個數(shù)據(jù)庫可能包含許多文件,一個數(shù)據(jù)庫系統(tǒng)中通常包含許多數(shù)據(jù)庫。 (2) 數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS):用戶創(chuàng)建、管理和維護數(shù)據(jù)庫時所使用的軟件,位于用戶與操作系統(tǒng)之間,對數(shù)據(jù)庫進行統(tǒng)一管理。DBMS能定義數(shù)據(jù)存儲結構,提供數(shù)據(jù)的操作機制,維護數(shù)據(jù)庫的安全性、完整性和可靠性。 (3) 數(shù)據(jù)庫應用程序(Database Application):雖然已經(jīng)有了DBMS,但是在很多情況下,DBMS無法滿足對數(shù)據(jù)管理的要求。數(shù)據(jù)庫應用程序的使用可以滿足對數(shù)據(jù)管理的更高要求,還可以使數(shù)據(jù)管理過程更加直觀和友好。數(shù)據(jù)庫應用程序負責與DBMS進行通信,訪問和管理DBMS中存儲的數(shù)據(jù),允許用戶插入、修改、刪除數(shù)據(jù)庫中的數(shù)據(jù)。 數(shù)據(jù)庫系統(tǒng)如圖1-2所示。 圖1-2 數(shù)據(jù)庫系統(tǒng) 1.2.2 SQL語言 對數(shù)據(jù)庫進行查詢和修改操作的語言叫作SQL。SQL的中文含義是結構化查詢語言(英文全稱是Structured Query Language)。SQL有許多不同的類型,有3個主要的標準:①ANSI(美國國家標準機構) SQL,對ANSI SQL修改后在1992年采納的標準,稱為SQL-92或SQL2;②SQL-99標準,SQL-99標準從SQL2擴充而來并增加了對象關系特征和許多其他新功能;③各大數(shù)據(jù)庫廠商提供的不同版本的SQL,這些版本的SQL不但能包括原始的ANSI標準,而且在很大程度上支持新推出的SQL-92標準。 SQL語言包含以下4個部分。 (1) 數(shù)據(jù)定義語言(DDL):包括DROP、CREATE、ALTER等語句。 (2) 數(shù)據(jù)操縱語言(DML):包括INSERT(插入)、UPDATE(修改)、DELETE(刪除)等語句。 (3) 數(shù)據(jù)查詢語言(DQL):包括SELECT語句等。 (4) 數(shù)據(jù)控制語言(DCL):包括GRANT、REVOKE、COMMIT、ROLLBACK等語句。 下面是SQL語句的例子,該語句聲明創(chuàng)建一個students表: CREATE TABLE students ( student_id INT UNSIGNED, name VARCHAR(30), sex CHAR(1), birth DATE, PRIMARY KEY (student_id) ); 該表包含4個字段,分別為student_id、name、sex、birth,其中student_id定義為表的主鍵。 現(xiàn)在只是定義了一張表格,而沒有任何數(shù)據(jù),接下來用下面這條SQL聲明語句,在students表中插入一條數(shù)據(jù)記錄: INSERT INTO students (student_id, name, sex, birth) VALUES (41048101, 'Lucy Green', '1', '1990-02-14'); 執(zhí)行完上面的SQL語句之后,students表中就會增加一行新記錄,該記錄中字段student_id的值為41048101,name字段的值為Lucy Green,sex字段的值為1,birth字段的值為1990-02-14。 再使用SELECT查詢語句獲取剛才插入的數(shù)據(jù),結果如下: SELECT name FROM students WHERE student_id = 41048101; +--------------+ | name | +--------------+ | Lucy Green | +--------------+ 上面簡單列舉了常用的數(shù)據(jù)庫操作語句,只是為了給讀者一個直觀的印象,讀者可能還不能理解,接下來會在學習MySQL的過程中詳細介紹這些知識。 1.2.3 數(shù)據(jù)庫訪問技術 不同的程序設計語言會有各自不同的數(shù)據(jù)庫訪問技術,程序語言通過這些技術,執(zhí)行SQL語句,進行數(shù)據(jù)庫管理。主要的數(shù)據(jù)庫訪問技術如下。 1.ODBC ODBC(Open Database Connectivity,開放式數(shù)據(jù)庫連接)技術為訪問不同的SQL數(shù)據(jù)庫提供了一個共同的接口。這一接口提供了最大限度的互操作性:一個應用程序可以通過共同的一組代碼訪問不同的 SQL 數(shù)據(jù)庫管理系統(tǒng)(DBMS)。 基于ODBC的應用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應的DBMS的ODBC驅(qū)動程序完成。也就是說,不論是Access、MySQL還是Oracle數(shù)據(jù)庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。 2.JDBC JDBC(Java Database Connectivity,Java數(shù)據(jù)庫連接)是Java應用程序連接數(shù)據(jù)庫的標準方法,是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問。JDBC由一組用Java語言編寫的類和接口組成。 3.ADO.NET ADO.NET是微軟在.NET框架下開發(fā)設計的一組用于和數(shù)據(jù)源進行交互的面向?qū)ο箢悗。ADO.NET提供了對關系數(shù)據(jù)、XML和應用程序數(shù)據(jù)的訪問,允許和不同類型的數(shù)據(jù)源以及數(shù)據(jù)庫進行交互。 4.PDO PDO(PHP Data Object,PHP數(shù)據(jù)對象)為PHP訪問數(shù)據(jù)庫定義了一個輕量級的、一致性的接口,提供了一個數(shù)據(jù)訪問抽象層,這樣,無論使用什么數(shù)據(jù)庫,都可以通過一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)。PDO是PHP 5新加入的一個重大功能。 針對不同的程序語言,MySQL提供了不同的數(shù)據(jù)庫訪問連接驅(qū)動,讀者可以在相關網(wǎng)站的下載頁面(http://dev.mysql.com/downloads/)下載相關驅(qū)動。 1.3 MySQL簡介 MySQL是一個小型關系數(shù)據(jù)庫管理系統(tǒng),與其他大型數(shù)據(jù)庫管理系統(tǒng)(如Oracle、DB2、SQL Server)等相比,MySQL的規(guī)模小、功能有限。但是由于MySQL的體積小、速度快、成本低,且提供的功能對稍微復雜的應用來說已經(jīng)夠用,因此使得MySQL成為世界上最受歡迎的開放源代碼數(shù)據(jù)庫。本節(jié)將介紹MySQL的特點。 1.3.1 客戶機-服務器軟件 主從式架構(Client-Server Model)或客戶端/服務器(Client/Server)結構簡稱C/S結構,它是一種網(wǎng)絡架構,通常在該網(wǎng)絡架構下,軟件分為客戶端(Client)和服務器(Server)兩部分。 服務器是整個應用系統(tǒng)資源的存儲與管理中心,多個客戶端則各自處理相應的功能,共同實現(xiàn)完整的應用。在客戶/服務器結構中,客戶端用戶的請求被傳送到數(shù)據(jù)庫服務器,數(shù)據(jù)庫服務器進行處理后,將結果返回給用戶,從而減少了網(wǎng)絡數(shù)據(jù)傳輸量。 用戶使用應用程序時,首先啟動客戶端通過有關命令告知服務器進行連接以完成各種操作,而服務器則按照此請示提供相應的服務。每一個客戶端軟件的實例都可以向一個服務器或應用程序服務器發(fā)出請求。 這種系統(tǒng)的特點就是,客戶端和服務器程序不在同一臺計算機上運行,它們歸屬于不同的計算機。 主從式架構通過不同的途徑應用于很多不同類型的應用程序,比如,現(xiàn)在人們最熟悉的在因特網(wǎng)(Internet)上使用的網(wǎng)頁。例如,當顧客想要在當當網(wǎng)站上買書的時候,電腦和網(wǎng)頁瀏覽器就被當作一個客戶端,同時,組成當當網(wǎng)的電腦、數(shù)據(jù)庫和應用程序就被當作服務器。當顧客的網(wǎng)頁瀏覽器向當當網(wǎng)請求搜尋某種圖書時,當當網(wǎng)服務器就從當當網(wǎng)的數(shù)據(jù)庫中找出所有該類型的圖書信息,結合成一個網(wǎng)頁,再發(fā)送回顧客的瀏覽器。服務器端一般使用高性能的計算機,并配合使用不同類型的數(shù)據(jù)庫,比如Oracle、Sybase、MySQL等;客戶端需要安裝專門的軟件,比如瀏覽器。 1.3.2 MySQL的版本 針對不同用戶,MySQL分為兩個不同的版本: * MySQL Community Server(社區(qū)版):該版本完全免費,但是官方不提供技術支持。 * MySQL Enterprise Server(企業(yè)版服務器):它能夠以很高的性價比為企業(yè)提供數(shù)據(jù)倉庫應用,支持滿足ACID屬性的事務處理,提供完整的提交、回滾、崩潰恢復和行級鎖定功能。但是該版本需付費使用,官方提供電話技術支持。 MySQL Cluster主要用于架設集群服務器,需要在社區(qū)版或企業(yè)版的基礎上使用。 MySQL的命名機制由3個數(shù)字組成,例如,mysql-5.6.10。 (1) 第1個數(shù)字(5)是主版本號,描述了文件格式,所有版本為5的發(fā)行版都有相同的文件格式。 (2) 第2個數(shù)字(6)是發(fā)行級別,主版本號和發(fā)行級別組合在一起便構成了發(fā)行序列號。 (3) 第3個數(shù)字(10)是此發(fā)行系列中的版本號,隨每次新分發(fā)版本遞增。 在MySQL的開發(fā)過程中,同時存在多個發(fā)布系列,每個發(fā)布處在成熟度的不同階段。 (1) MySQL 5.6是最新開發(fā)的穩(wěn)定(GA)發(fā)布系列,是將執(zhí)行新功能的系列,目前已經(jīng)可以正常使用。 (2) MySQL 5.5是比較穩(wěn)定(GA)發(fā)布系列。只是針對漏洞修復后重新發(fā)布,沒有增加會影響穩(wěn)定性的新功能。 (3) MySQL 5.1是前一穩(wěn)定(產(chǎn)品質(zhì)量)發(fā)布系列。只是針對嚴重漏洞修復和安全修復后重新發(fā)布,沒有增加會影響該系列的重要功能。 對于MySQL 4.1、4.0和3.23等低于5.0的老版本,官方將不再提供支持。而所有發(fā)布的MySQL(Current Generally Available Release)版本已經(jīng)經(jīng)過嚴格標準的測試,可以保證其安全可靠地使用。針對不同的操作系統(tǒng),讀者可以在MySQL的官方下載頁面(http://dev.mysql.com/downloads/)下載到相應的安裝文件。 1.3.3 MySQL的優(yōu)勢 MySQL的主要優(yōu)勢如下。 (1) 速度:運行速度快。 (2) 價格:MySQL對大多數(shù)個人用戶來說是免費的。 (3) 容易使用:與其他大型數(shù)據(jù)庫的設置和管理相比,其復雜程度較低,易于學習。 (4) 可移植性:能夠工作在眾多不同的系統(tǒng)平臺上,例如,Windows、Linux、Unix、Mac OS等。 (5) 豐富的接口:提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等語言的API。 (6) 支持查詢語言:MySQL可以利用標準的SQL語法和支持ODBC的應用程序。 (7) 安全性和連接性:具有十分靈活和安全的權限和密碼系統(tǒng),允許基于主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼安全。并且由于MySQL是網(wǎng)絡化的,因此可以在連接因特網(wǎng)的任何地方訪問,從而提高了數(shù)據(jù)共享的效率。 1.3.4 MySQL 5.6的新功能 和MySQL 5.5相比,MySQL 5.6的新功能主要包括以下幾個方面。 (1) 子查詢優(yōu)化:通過優(yōu)化子查詢,可以提高執(zhí)行效率,主要表現(xiàn)在查詢的結果集合、分類和返回的執(zhí)行次數(shù)上。 (2) 強化Optimizer Diagnostics(優(yōu)化診斷)功能:運用EXPLAIN執(zhí)行INSERT、UPDATE和DELETE,EXPLAIN以JSON格式輸出,提供更精確的最佳化指標和絕佳的可讀性。Optimizer Traces(優(yōu)化追蹤)功能還可以追蹤最佳化決策過程。 (3) 通過強化InnoDB存儲引擎,提升效能處理量和應用軟件的可用性:提升處理和只讀量高達230%,InnoDB重構得以盡量減少傳統(tǒng)線程、沖洗和凈化互斥的沖突和瓶頸,在高負載的OLTP系統(tǒng)展現(xiàn)更優(yōu)異的數(shù)據(jù)同步性,顯著提升只讀和交易工作負載的處理量。 (4) 大幅提升可用性:數(shù)據(jù)庫管理員運用在線數(shù)據(jù)定義語言作業(yè),可執(zhí)行新增索引和窗體變更功能,并同時更新應用程序。 (5) 新增Index Condition Pushdown (ICP,索引條件下推)和Batch Key Access (BKA,批鍵訪問)功能:提升特定查詢量高達280倍。 (6) InnoDB全文檢索功能:開發(fā)人員可以在InnoDB窗體上建立全文索引功能,以呈現(xiàn)文字搜尋結果,加快搜尋單字和語句。 (7) 自我修復復制叢集:新增的Global Transaction Identifiers and Utilities(全局事務識別與應用)可以簡化自動偵測和復原功能。當數(shù)據(jù)庫發(fā)生毀損時,數(shù)據(jù)庫管理員無須介入,即可運用Crash-Safe Replication功能,自動將二進制記錄和備份數(shù)據(jù)恢復至正確位置。Checksums可通過自動偵測和警示錯誤的功能,跨叢集保持數(shù)據(jù)的完整性。 (8) 高效能復制叢集:通過Multi-Threaded Slaves(多線程從庫),Binlog Group Commit(二進制日志文件成組提交)和Optimized Row-Based Replication(優(yōu)化的基于行的復制)可以將復制能力提高5倍之多。用戶向外擴充其跨商品系統(tǒng)的工作負載時,可以大幅提升復制的效能和效率。 (9) 時間延遲復制:可以防止主計算機的作業(yè)失誤,例如意外刪除窗體。 (10) 強化的PERFORMANCE_SCHEMA:協(xié)助用戶得以監(jiān)控使用最多資源的密集查詢指令、對象、用戶和應用程序,并可將查詢、用戶、主機和對象的統(tǒng)計數(shù)據(jù)匯整成新的摘要頁面。新增功能可以使預設配置更加簡易,而且耗費不到5%的成本。 (11) MySQL?5.6納入的新功能包含精確空間操作的地理信息系統(tǒng)(Geographic Information System)、強化的IPv6設備以及最佳化的服務器默認值。 1.4 MySQL的工具 MySQL數(shù)據(jù)庫管理系統(tǒng)提供了許多命令行工具,這些工具可以用來管理MySQL服務器、訪問控制數(shù)據(jù)庫、管理MySQL用戶以及進行數(shù)據(jù)庫備份和恢復等。而且MySQL提供了圖形化的管理工具,這使得對數(shù)據(jù)庫的操作更加簡單。本節(jié)將為讀者介紹這些工具的作用。 1.4.1 MySQL的命令行實用工具 MySQL服務器端的實用工具程序如下。 (1) mysqld:SQL后臺程序(即MySQL服務器進程)。該程序必須運行之后,客戶端才能通過連接服務器來訪問數(shù)據(jù)庫。 (2) mysqld_safe:服務器啟動腳本。在UNIX和NetWare中推薦使用mysqld_safe來啟動mysqld服務器。mysqld_safe增加了一些安全特性,例如當出現(xiàn)錯誤時,會重啟服務器并向錯誤日志文件寫入運行時間信息。 (3) mysql.server:服務器啟動腳本。它調(diào)用mysqld_safe來啟動MySQL服務器。 (4) mysqld_multi:服務器啟動腳本,可以啟動或停止系統(tǒng)上安裝的多個服務器。 (5) myisamchk:描述、檢查、優(yōu)化和維護MyISAM表的實用工具。 (6) mysql.server:服務器啟動腳本。UNIX中的MySQL分發(fā)版包括mysql.server腳本。 (7) mysqlbug:MySQL缺陷報告腳本?梢杂盟鼇硐騇ySQL郵件系統(tǒng)發(fā)送缺陷報告。 (8) mysql_install_db:該腳本用默認權限創(chuàng)建MySQL授權表。通常只是在系統(tǒng)上首次安裝MySQL時執(zhí)行一次。 MySQL客戶端的實用工具程序如下。 (1) myisampack:壓縮MyISAM表以產(chǎn)生更小的只讀表的一個工具。 (2) mysql:交互式輸入SQL語句或以批處理模式執(zhí)行它們的命令行工具。 (3) mysqlaccess:檢查訪問權限的主機名、用戶名和數(shù)據(jù)庫組合。 (4) mysqladmin:執(zhí)行管理操作的客戶程序,例如創(chuàng)建或刪除數(shù)據(jù)庫,重載授權表,將表刷新到硬盤上,以及重新打開日志文件。mysqladmin還可以用來檢索版本、進程,以及服務器的狀態(tài)信息。 (5) mysqlbinlog:從二進制日志讀取語句的工具。在二進制日志文件中包含執(zhí)行過的語句,可用來幫助系統(tǒng)從崩潰中恢復。 (6) mysqlcheck:檢查、修復、分析以及優(yōu)化數(shù)據(jù)表。 (7) mysqldump:將MySQL數(shù)據(jù)庫轉(zhuǎn)儲到一個文件(例如SQL語句或Tab分隔符文本文件)的客戶程序。 (8) mysqlhotcopy:當服務器在運行時,快速備份MyISAM或ISAM表的工具。 (9) mysql import:使用LOAD DATA INFILE將文本文件導入相關表的客戶程序。 (10) mysqlshow:顯示與數(shù)據(jù)庫、表、列以及索引相關的信息的客戶程序。 (11) perror:顯示系統(tǒng)或MySQL錯誤代碼的含義的工具。 1.4.2 MySQL Workbench MySQL Workbench是下一代可視化數(shù)據(jù)庫設計軟件,它為數(shù)據(jù)庫管理員和開發(fā)人員提供了一整套可視化數(shù)據(jù)庫操作環(huán)境,主要功能如下。 * 數(shù)據(jù)庫設計和模型建立。 * SQL開發(fā)(取代MySQL Query Browser)。 * 數(shù)據(jù)庫管理(取代MySQL Administrator)。 MySQL Workbench有兩個版本: (1) MySQL Workbench Community Edition(也叫MySQL Workbench OSS,社區(qū)版),它是在GPL證書下發(fā)布的開源社區(qū)版本。 (2) MySQL Workbench Standard Edition(也叫MySQL Workbench SE,商業(yè)版),它是按年收費的商業(yè)版本。 截至本書完稿時,最新版本為MySQL Workbench 5.2.34。一些出版時間較早的MySQL教程中會提到圖形化的工具MySQL Query Browser和MySQL Administrator。隨著MySQL的發(fā)展,Oracle使用更高效、便捷的Workbench替換掉了這兩個工具,目前官方已經(jīng)不再提供MySQL Query Browser和MySQL Administrator的技術支持和更新,但是仍然可以在使用舊版本MySQL時使用它們。 1.5 高 手 甜 點 甜點1:如何快速掌握MySQL? 在學習MySQL數(shù)據(jù)庫之前,很多讀者都會問如何才能更好地掌握MySQL的相關技能呢?下面就來講述學習MySQL的方法。 (1) 培養(yǎng)興趣。興趣是最好的老師,不論學習什么知識,興趣都可以極大地提高學習效率,當然學習MySQL也不例外。 (2) 夯實基礎。計算機領域的技術非常強調(diào)基礎,剛開始學習可能還認識不到這一點,隨著技術應用的深入,就會發(fā)現(xiàn)只有具有扎實的基礎功底,才能在技術的道路上走得更快、更遠。對于MySQL的學習來說,SQL語句是其中最為基礎的部分,很多操作都是通過SQL語句來實現(xiàn)的。所以在學習的過程中,讀者要多編寫SQL語句,對于同一個功能,可以使用不同的實現(xiàn)語句來完成,從而能夠深刻理解其不同之處。 (3) 及時學習新知識。正確、有效地利用搜索引擎,可以搜索到很多關于MySQL的相關知識。同時,參考別人解決問題的思路,也可以吸取別人的經(jīng)驗,及時獲取最新的技術資料。 (4) 多實踐操作。數(shù)據(jù)庫系統(tǒng)具有極強的操作性,需要多動手上機操作。在實際操作的過程中才能發(fā)現(xiàn)問題,并思考解決問題的方法和思路,只有這樣才能提高實戰(zhàn)能力。 甜點2:如何選擇數(shù)據(jù)庫? 選擇數(shù)據(jù)庫時,需要考慮運行的操作系統(tǒng)和管理系統(tǒng)的實際情況。一般情況下,要遵循以下原則: (1) 如果是開發(fā)大型的管理系統(tǒng),可以在Oracle、SQL Server、DB2中選擇;如果是開發(fā)中小型的管理系統(tǒng),可以在Access、MySQL、PostgreSQL中選擇。 (2) Access和SQL Server數(shù)據(jù)庫只能運行在Windows系列的操作系統(tǒng)上,其與Windows系列的操作系統(tǒng)有很好的兼容性。Oracle、DB2、MySQL和PostgreSQL除了可以在Windows平臺上運行外,還可以在Linux和UNIX平臺上運行。 (3) Access、MySQL和PostgreSQL都非常容易使用,Oracle和DB2相對比較復雜,但是其性能比較好。 1.6 跟我學上機 (1) 上網(wǎng)查詢常用的數(shù)據(jù)庫系統(tǒng)有哪些? (2) 上網(wǎng)了解MySQL 5.6的新功能和應用。 (3) 學習常見的SQL語句。
你還可能感興趣
我要評論
|