# 第十五章 MySQL 數據庫
**學習要點:**
1.Web 數據庫概述
2.MySQL 的操作
3.MySQL 常用函數
4.SQL 語句詳解
5.phpMyadmin
**一.Web數據庫概述**
現在,我們已經熟悉了PHP 的基礎知識,這是我們想暫時離開PHP 一章,來重點介紹
一下關系型數據庫,讓大家了解數據庫比文件儲存的有點。這些優點包括:
1.關系型數據庫比普通文件的數據訪問速度更快。
2.關系型數據庫更容易查閱并提取滿足特定條件的數據。
3.關系型數據庫更具有專門的內置機制處理并發訪問,作為程序員,不需要為此擔心。
4.關系型數據庫可以提供對數據的隨即訪問。
5.關系型數據庫具有內置的權限系統。
關系數據庫的概念
至今為止,關系數據庫是最常用的數據庫類型。在關系代數方面,它們具有很好的理論
基礎。當使用關系數據庫的時候,并不需要了解關系理論(這是一件好事),但是還是需要
理解一些關于數據庫的基本概念。
1)表格
關系數據庫由關系組成,這些關系通常稱為表格。顧名思義,一個關系就是一個數據的
表格。電子數據表就是一種表格。

2)列
表中的每一列都有惟一的名稱,包含不同的數據。此外,每一列都有一個相關的數據類
型。
3)行
表中的每一行代表一個客戶。每一行具有相同的格式,因而也具有相同的屬性。行也成
為記錄。
4)值
每一行由對應每一列的單個值組成。每個值必須與該列定義的數據類型相同。
5)鍵
每一條數據所對應的唯一的標識。
6)模式
數據庫整套表格的完整設計成為數據庫的模式。
7)關系
外鍵標識兩個表格數據的關系。
如何設計Web 數據庫
1)考慮要建模的實際對象。
2)避免保存冗余數據。
3)使用原子列值(對每一行的每個屬性只存儲一個數據。)
4)選擇有意義的鍵。
5)考慮需要詢問數據庫的問題。
6)避免多個空屬性的設計
Web 數據庫架構
瀏覽器和Web 服務器之間的通信:

瀏覽器和PHP&MySQL 服務器之間的通信

1)用戶的Web 瀏覽器發出HTTP 請求,請求特定Web 頁面。
2)Web 服務器收到.php 的請求獲取該文件,并將它傳到PHP 引擎,要求它處理。
3)PHP 引擎開始解析腳本。腳本中有一條連接數據庫的命令,還有執行一個查詢的命令。
PHP 打開通向MYSQL 數據庫的連接,發送適當的查詢。
4)MYSQL 服務器接收數據庫查詢并處理。將結果返回到PHP 引擎。
5)PHP 以你去哪干完成腳本運行,通常,這包括將查詢結果格式化成HTML 格式。然
后再輸出HTML 返回到Web 服務器。
6)Web 服務器將HTML 發送到瀏覽器。
**二.MySQL操作**
登錄到MySQL
1)打開MySQL Command Line Client
2)輸入root 的設置密碼
MySQL 常規命令
1)顯示當前數據庫的版本號和日期。
SELECT VERSION(),CURRENT_DATE();
2)通過AS 關鍵字設置字段名。
SELECT VERSION() AS version; //可設置中文,通過單引號
3)通過SELECT 執行返回計算結果
SELECT (20+5)*4;
4)通過多行實現數據庫的使用者和日期
>SELECT
>USER()
>,
>NOW()
>;
5)通過一行顯示數據庫使用者和日期
>SELECT USER();SELECT NOW();
6)命令的取消
>\c
7)MySQL 窗口的退出
>exit;
MySQL 常用數據類型
整數型:TINYINT,SMALLINT,INT,BIGINT
浮點型:FLOAT,DOUBLE,DECIMAL(M,D)
字符型:CHAR,VARCHAR
日期型:DATETIME,DATE,TIMESTAMP
備注型:TINYTEXT,TEXT,LONGTEXT





MySQL 數據庫操作
1)顯示當前存在的數據庫
>SHOW DATABASES;
2)選擇你所需要的數據庫
>USE guest;
3)查看當前所選擇的數據庫
>SELECT DATABASE();
4)查看一張表的所有內容
>SELECT * FROM guest; //可以先通過SHOW TABLES;來查看有多少張表
5)根據數據庫設置中文編碼
>SET NAMES gbk; //set names utf8;
6)創建一個數據庫
>CREATE DATABASE book;
7)在數據庫里創建一張表
>CREATE TABLE users (
>username VARCHAR(20), //NOT NULL 設置不允許為空
>sex CHAR(1),
>birth DATETIME);
8)顯示表的結構
>DESCIRBE users;
9)給表插入一條數據
>INSERT INTO users (username,sex,birth) VALUES ('Lee','x',NOW());
10)篩選指定的數據
> SELECT * FROM users WHERE username = 'Lee';
11)修改指定的數據
>UPDATE users SET sex = '男' WHERE username='Lee';
12)刪除指定的數據
> DELETE FROM users WHERE username='Lee';
13)按指定的數據排序
> SELECT * FROM users ORDER BY birth DESC; //正序
14)刪除指定的表
>DROP TABLE users;
15)刪除指定的數據庫
>DROP DATABASE book;
**三.MySQL常用函數**





**四.SQL語句詳解**
1.創建一個班級數據庫school,里面包含一張班級表grade,包含編號(id)、姓名(name)、
郵件(email)、評分(point)、注冊日期(regdate)。
mysql>CREATE DATABASE school; //創建一個數據庫
mysql> CREATE TABLE grade (
//UNSIGNED 表示無符號,TINYINT(2) 無符號整數0-99,NOT NULL 表示不能為
空,AUTO_INCREMENT 表示從1 開始沒增加一個字段,累計一位
-> id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
-> name VARCHAR(20) NOT NULL,
-> email VARCHAR(40),
-> point TINYINT(3) UNSIGNED NOT NULL,
-> regdate DATETIME NOT NULL,
-> PRIMARY KEY (id) //表示id 為主鍵,讓id 值唯一,不得重復。
-> );
2.給這個班級表grade 新增5-10 條學員記錄
mysql> INSERT INTO grade (name,email,point,regdate) VALUES
('Lee','yc60.com@gmail.com',95,NOW());
3.查看班級所有字段的記錄,查看班級id,name,email 的記錄
mysql> SELECT * FROM grade;
mysql> SELECT id,name,email FROM grade;

4.姓名等于'Lee'的學員,成績大于90 分的學員,郵件不為空的成員,70-90 之間的成員
mysql> SELECT * FROM grade WHERE name='Lee';
mysql> SELECT * FROM grade WHERE point>90;
mysql> SELECT * FROM grade WHERE email IS NOT NULL;
mysql> SELECT * FROM grade WHERE point BETWEEN 70 AND 90;
mysql> SELECT * FROM grade WHERE point IN (95,82,78);
5.查找郵件使用163 的學員,不包含yc60.com 字符串的學員
mysql> SELECT * FROM grade WHERE email LIKE '%163.com';
mysql> SELECT * FROM grade WHERE email NOT LIKE '%yc60.com%';
6.按照學員注冊日期的倒序排序,按照分數的正序排序
mysql> SELECT * FROM grade ORDER BY regdate DESC;
mysql> SELECT * FROM grade ORDER BY point ASC;
7.只顯示前三條學員的數據,從第3 條數據開始顯示2 條
mysql> SELECT * FROM grade LIMIT 3;
mysql> SELECT * FROM grade LIMIT 2,2;
8.修改姓名為'Lee'的電子郵件
mysql> UPDATE grade SET email='yc60.com@163.com' WHERE name='Lee';
9.刪除編號為4 的學員數據
mysql> DELETE FROM grade WHERE id=4;

10.過一遍以上的分組函數
? ?略。
11.檢查這個表的信息
mysql> SHOW TABLE STATUS \G;
12.優化一張表
mysql> OPTIMIZE TABLE grade;
**五.PhpMyAdmin**
phpMyAdmin(簡稱PMA)是一個用PHP 編寫的,可以通過互聯網在線控制和操作
MySQL。他是眾多MySQL 管理員和網站管理員的首選數據庫維護工具,通過phpMyAdmin
可以完全對MySQL 數據庫進行操作。
創建數據庫scholl
創建一個數據庫->選擇utf8 字符集
導出另一個數據庫SQL
1.選擇另一個數據庫->導出
2.選擇需要導出的表->全選
3.選擇Add DROP TABLE / DROP VIEW (基本表一旦刪除,表中的數據以及相應建立
的索引和視圖都將自動被刪除)
4.選擇另存為文件
5.選擇執行,保存sql 文件
導入數據庫
1.選擇被導入的數據庫
2.選擇Import(導入),選擇sql 文件
3.執行即可

重建表
1.找到sql 文件中的剛才輸出的建表語句.
2.復制建表語句
3.然后選擇sql,選擇粘貼,執行即可
修復數據表
1.選擇要修復的表
2.在選中項中,選擇修復表,即可
優化數據表
1.選擇要優化的表
2.在選中項中,選擇優化表,即可
修改,刪除,插入表記錄
執行SQL 語句
**?注:文章出自李炎恢PHP視頻教程,本文僅限交流使用,不得用于商業用途,否則后果自負。**
- 介紹
- HTML/CSS 教程
- 第 1 章 HTML5 概述
- 第 2 章 基本格式
- 第 3 章 文本元素
- 第 4 章 超鏈接和路徑
- 第 5 章 分組元素
- 第 6 章 表格元素
- 第 7 章 文檔元素
- 第 8 章 嵌入元素
- 第 9 章 音頻和視頻
- 第 10 章 表單元素[上]
- 第 10 章 表單元素[中]
- 第 10 章 表單元素[下]
- 第 11 章 全局屬性和其他
- 第 12 章 CSS 入門
- 第 13 章 CSS 選擇器[上]
- 第 14 章 CSS 顏色與度量單位
- 第 15 章 CSS 文本樣式[上]
- 第 15 章 CSS 文本樣式[下]
- 第 16 章 CSS 盒模型[上]
- 第 16 章 CSS 盒模型[下]
- 第 17 章 CSS 邊框與背景[上]
- 第 17 章 CSS 邊框與背景[下]
- 第 18 章 CSS 表格與列表
- 第 19 章 CSS 其他樣式
- 第 20 章 CSS3 前綴和 rem
- 第 21 章 CSS3 文本效果
- 第 21 章 CSS3 文本效果
- 第 23 章 CSS3 邊框圖片效果
- 第 24 章 CSS3 變形效果[下]
- 第 25 章 CSS3 過渡效果
- 第 26 章 CSS3 動畫效果
- 第 27 章 CSS 傳統布局[上]
- 第 27 章 CSS 傳統布局[下]
- 第 28 章 CSS3 多列布局
- 第 29 章 CSS3 彈性伸縮布局[上]
- 第 29 章 CSS3 彈性伸縮布局[中]
- 第 29 章 CSS3 彈性伸縮布局[下]
- 第 30 章 使用 Emmet 插件
- Bootstrap 教程
- 第 1 章 Bootstrap 介紹
- 第 2 章 排版樣式
- 第 3 章 表格和按鈕
- 第 4 章 表單和圖片
- 第 5 章 柵格系統
- 第 6 章 輔組類和響應式工具
- 第 7 章 圖標菜單按鈕組件
- 第 8 章 輸入框和導航組件
- 第 9 章 路徑分頁標簽和徽章組件
- 第 10 章 巨幕頁頭縮略圖和警告框組件
- 第 11 章 進度條媒體對象和 Well 組件
- 第 12 章 列表組面板和嵌入組件
- 第 13 章 模態框插件
- 第 14 章 下拉菜單和滾動監聽插件
- 第 15 章 標簽頁和工具提示插件
- 第 16 章 彈出框和警告框插件
- 第 17 章 按鈕和折疊插件
- 第 18 章 輪播插件
- 第 19 章 附加導航插件
- 第 20 章 項目實戰--響應式導航[1]
- 第 20 章 項目實戰--響應式輪播圖[2]
- 第 20 章 項目實戰--首頁內容介紹[上][3]
- 第 20 章 項目實戰--首頁內容介紹[下][4]
- 第 20 章 項目實戰--資訊內容[5,6]
- 第 20 章 項目實戰--案例和關于[7]
- javaScript 教程
- javascript快速入門1--JavaScript前世今生,HelloWorld與開發環境
- javascript快速入門2--變量,小學生數學與簡單的交互
- javascript快速入門3--分支判斷與循環
- javascript快速入門4--函數與內置對象
- javascript快速入門5--數組與對象
- javascript快速入門6--Script標簽與訪問HTML頁面
- javascript快速入門7--ECMAScript語法基礎
- javascript快速入門8--值,類型與類型轉換
- javascript快速入門9--引用類型
- javascript快速入門10--運算符,語句
- javascript快速入門11--正則表達式
- javascript快速入門12--函數式與面向對象
- javascript快速入門13--BOM——瀏覽器對象模型(Browser Object Model)
- javascript快速入門14--DOM基礎
- javascript快速入門15--節點
- javascript快速入門15--表單
- javascript快速入門16--表格
- javascript快速入門17--事件
- javascript快速入門18--樣式
- javascript快速入門19--定位
- javascript快速入門20--Cookie
- javascript快速入門21--DOM總結
- javascript快速入門22--Ajax簡介
- javascript快速入門23--XHR—XMLHttpRequest對象
- javascript快速入門24--XML基礎
- javascript快速入門25--瀏覽器中的XML
- javascript快速入門26--XPath
- javascript快速入門27--XSLT基礎
- PHP 教程
- 第一章 如何加載運行已發布的PHP項目
- 第二章 PHP基礎
- 第三章 操作符與控制結構
- 第四章 數學運算
- 第五章 數組
- 第六章 目錄與文件
- 第七章 自定義函數
- 第八章 字符串處理
- 第九章 正則表達式
- 第十章 日期與時間
- 第十一章 表單與驗證
- 第十二章 會話控制
- 第十三章 上傳文件
- 第十四章 處理圖像
- 第十五章 MySQL 數據庫
- 第十六章 PHP 操作MySQL
- 第十七章 面向對象基礎
- 第十八章 面向對象的特性
- 第十九章 面向對象的工具