• 沒有找到結果。

第 3 章 MySQL 教學範本

N/A
N/A
Protected

Academic year: 2021

Share "第 3 章 MySQL 教學範本"

Copied!
60
0
0

加載中.... (立即查看全文)

全文

(1)

第 3 章

MySQL 教學範本

(2)

本章宗旨

簡介伺服器連線與離線指令

簡介 MySQL 指令編輯方式

簡介資料庫建立、資料庫管理與資料處理常用 指令

簡介 MySQL 進階應用指令型式

(3)

大 綱

3-1 伺服器連線與離線 3-2 指令編輯方式

3-3 MySQL 常用指令 3-4 MySQL 進階應用

(4)

3-1 伺服器連線與離線

連線指令常用型式:

指令一: mysql –h Host – u User -pPassword

指令二: mysql –h Host – u User –p Enter password: ********

指令三: mysql

(5)

連線成功畫面

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.9-nt.

Type ‘help’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

(6)

連線失敗畫面

ERROR 1045 (28000) Access denied for ‘user’@’localhost’

(using password No) mysql>

(7)

3-1-2 離線

離線指令型式:

指令一: QUIT

指令二: \q

離線畫面:

mysql>QUIT Bye

(8)

3-2 指令編輯方式

一行指令一道命令:指令編輯完成後,直接 按【 Enter 】鍵執行命令

數行指令一道命令:指令佔滿一行時,按

【 Enter 】鍵換行(可不按),繼續編輯後 續指令

(9)

3-2 指令編輯方式

( 續 )

指令列若為標準 SQL 指令,必須加上 ” ;” 結 束指令

不管指令列跨越幾行,一道命令只能包含一個

” ;”

指令列若為 MySQL 內部指令,則不用加 上” ;” ,例如 Use, Quit 等

(10)

3-2 指令編輯方式

( 續 )

範例 mysql>Select User(), Current_date;

(a)

mysql>Select ->User()

->,

->Current_date;

mysql>Select ->User()

->\c

(c)

(11)

3-3 MySQL 常用指令

3-3-1 資料庫處理 3-2-2 資料表處理 3-3-3 索引表處理 3-3-4 載入資料 3-3-5 瀏覽資料 3-3-6 刪除資料 3-6-7 更新資料

(12)

3-3-1 資料庫處理 1. 建立資料庫

語法: Create Database 資料庫名稱 ;

範例: Create Database Temp; 建立一個名稱為

【 Temp 】之資料庫。

執行結果:

(13)

2. 顯示資料庫明細

語法: Show Databases;

執行結果:

(14)

3. 選用資料庫

語法: Use 資料庫名稱

範例: Use Temp;

螢幕會提示: Database Changed 之信息

(15)

4. 刪除資料庫

語法: Drop Database 資料庫名稱 ;

範例: Drop Database Temp;

(16)

3-2-2 資料表處理

1. 建立資料表

語法: Create Table 資料表名稱(欄位定義) ;

範例: CREATE TABLE pet (name

VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

(17)

1. 建立資料表

欄位定義之格式為

欄位名稱

資料型態

(寬度)

[Null | NOT Null]

[Default 值 ]

欄位間須以” ,” 間隔

(18)

2. 顯示資料表

語法: Show Tables;

執行結果:

(19)

3. 顯示資料表結構

語法: Describe 資料表名稱 ;

範例: Describe pet;

執行結果:

(20)

3-3-3 索引表處理 1. 建立索引表

語法: Create Index 索引表名稱 On 資料表名 稱 (欄位名稱) ;

範例: CREATE Index pet1 On pet (name, owner);

(21)

2. 顯示索引表

語法: Show Index From 資料表名稱 ;

範例: Show Index From pet;

結果:

(22)

3-3-4 載入資料

1. 批次載入:限定固定格式文字檔

載入指令: Load Data Local Infile “ 外部檔案 來源” Into Table 資料表名稱 Fields

Terminated By “,” ;

範例: Load Data Local Infile

“C:\\mysql\\data\\test\\pet.txt” Into Table pet Fields Terminated By “,”;

(23)

1. 批次載入說明

文字檔內容以列為單位,固定格式

欄位間須以逗號或空格間隔開來,若以空格間隔,需記

住空格個數

編輯檔案時,若每一列是以’ \r\n’ 符號換行的話,則輸 入命令需加上 [Line Terminated By ‘\r\n’] 參數

一筆紀錄若有部分欄位為空白資料時,對應欄位需加上

[’\N’] 記號, MySQL 會將此記號解譯為 Null

(24)

1. 批次載入說明

文字檔之欄數需和資料表欄數相同,否則會產生錯

若資料是從主控端上傳伺服端,則須加上 [Local] 參

檔案可置於其他路徑,命令列之檔案來源需加上檔 案路徑

(25)

2. 逐筆輸入

指令一: Insert Into 資料表名 Values ( 欄位 資料串 ) ;

範例: Insert Into pet Values (‘Puffball’,

’Diane’, ’hamster’, ’f’, ’1990-03-30’, Null);

指令二: Insert Into 資料表名 ( 欄位串列 ) Values ( 欄位資料串 ) ;

(26)

2. 逐筆輸入說明

若所有欄位都需要輸入資料時,使用指令一,

否則使用指令二

指令二需要指定欄名,欄名間以逗號間隔

除了數值資料外,欄位資料須以雙引號或單引 號夾住

欄位資料若為空值,請填入 Null

(27)

3-3-5 瀏覽資料

基本的指令格式

SELECT 欄位串列 FROM 資料來源 WHERE 資料範圍 ORDER BY 欄位串列 GROUP BY 欄位串列 ;

(28)

3-3-5 瀏覽資料說明

SELECT : 用來指定輸出欄位名稱,可用 * 表示全部 欄位,欄名間使用逗號間隔

FROM :用來指定資料來源,可同時查看兩個以上資 料表

WHERE :用來設定輸出資料範圍,常見格式為指定 欄名,再搭配關係運算子(諸如

=、 > 、 >= 、 < 、 <= 、 <>( 代表不等於 ) ),然後 輸入待比對之欄位條件值。若有需要,還可以設定第 二個比較欄位,但兩個欄位間要用邏輯運算子結合,

(29)

3-3-5 瀏覽資料說明

( 續 )

ORDER BY

用來指定資料要以升冪(修飾辭為 ASC )或 降冪(修飾辭為 DESC )順序輸出

需要排序之欄位,請在 BY 後面定義,資料排

序方式內定為升冪形式, ASC 修飾辭可省略。

若為降冪排列, DESC 修飾辭不能省略

同時指定兩個以上欄位排序時,欄位間需以逗

號間隔,排序順序可不相同

(30)

3-3-5 瀏覽資料說明 ( 續 )

GROUP BY

用來指定群組欄位,若資料表內相同鍵值紀錄

有多筆情況,而輸出資料需予以加總、平均、

計算筆數等時,需指定群組欄位

群組欄位可指定一個以上,欄位間以逗號間隔

(31)

1. 查看全部資料

指令: SELECT * FROM 單一資料表 ;

範例: SELECT * FROM pet;

執行結果:

(32)

2. 查看部份資料( 1 )

指令: SELECT * FROM 單一資料表 WHERE 資料 範圍 ;

範例: SELECT * FROM pet WHERE name =

’Bowser’;

執行結果:

(33)

3. 查看部份資料

範例 (2) :

Select * from pet Where birth >= "1998-1-1";

範例 (3) :

Select * from pet Where species ="dog" and sex="f";

範例 (4) :

Select * from pet Where species = "snake" Or species = "bird";

(34)

3. 查看部份資料

範例 (5) :

Select * from pet Where (species="cat" And sex="m") Or (species="dog" And sex="f");

(35)

7. 查看特定欄位資料

範例 (1) :

Select name, birth From pet;

範例 (2) :

Select owner From pet;

範例 (3) :

Select DISTINCT owner From pet;

範例 (4) :

Select name, species, birth From pet Where species = "dog" Or species = "cat";

(36)

10. 資料排序

升冪:

Select name, species, birth From pet Order By species,birth Desc;

降冪 :

Select name, birth From pet Order By birth desc;

混合排序 :

Select name, species, birth From pet Order By

(37)

13. 日期欄位計算

範例 (1) :

Select name, birth, curdate(),(year(curdate())- year(birth))-(right(curdate(),5) <right(birth,5)) as age From pet;

計算結果另存一欄,可使用 AS 修飾辭指定欄名

,本例欄名為” age” 。指令中之 curdate(), year(), right() 為 MySQL 內建函數,代表當日 系統日期

(38)

13. 日期欄位計算

範例 (2) :

Select name, birth, curdate(),(year(curdate())- year(birth))-(right(curdate(),5) <right(birth,5)) as age From pet Order By name;

範例 (3) :

Select name, birth, curdate(), (year(curdate())- year(birth))-(right(curdate(),5) <right(birth,5))

(39)

13. 日期欄位計算

範例 (4) :

Select name, birth, death, (year(death)-

year(birth))-(right(death,5) <right(birth,5)) as age From pet where death Is Not NULL

Order By age;

範例 (5) :

Select name, birth, month(birth) From pet;

month() 為 MySQL 內建函數,請注意欄名

(40)

13. 日期欄位計算

範例 (6) :

Select name, birth From pet Where month(birth) = 5;

此例以函數取值並據以當過濾條件

(41)

19 欄位資料與樣板值比較

範例 (1 )

Select * From pet where name LIKE "b%“ ;

LIKE 為條件值比較運算子,字母 b% 表示所 有 b 開頭之資料均符合

範例 (2) :

Select * From pet where name LIKE "%fy“ ;

%fy 表示所有字串尾有 fy 字母之資料均符合

(42)

19 欄位資料與樣板值比較

範例 (3)

Select * From pet where name LIKE "%w%“ ;

%w% 表示所有字串中有 w 字母之資料均符合

範例 (4) :

Select * From pet where name LIKE "_____“ ;

表示所有字串中字母個數等於指定空格數之資

料均符合

(43)

23. 紀錄筆數計算

範例 (1)

Select Count(*) From pet ;

Count() 為計算紀錄數之函數, * 為統計對象

範例 (2) :

Select owner, Count(*) From pet Group By owner ;

Count() 函數搭配其他欄位使用時,必須加上 GROUP BY 修飾辭來使用

(44)

23. 紀錄筆數計算

範例 (3)

Select owner, Count(*) AS “ 筆數” From pet Group By owner ;

以 AS 指定欄位別名,可用中文命名,但需以

引號夾住

範例 (4) :

Select species, sex, Count(*) From pet Group

(45)

23. 紀錄筆數計算

範例 (5)

Select species, sex, Count(*) From pet Where sex Is Not Null Group By species, sex ;

搭配過濾條件來統計筆數

(46)

3-3-6 刪除資料

基本指令型式:

DELETE

FROM 資料來源

WHERE 資料範圍 ;

(47)

3-3-6 刪除資料

( 續 )

刪除資料不需指定欄位串列,因為刪除資料時

,是將整筆紀錄刪除,而不能刪除部份欄位

刪除資料之時機通常是有時效性者

刪除資料和刪除資料表是不同性質的,刪除資 料時,資料表結構還留存在資料庫內,但刪除 資料表卻是將整個資料表從資料庫移除

(48)

3-3-6 刪除資料

( 續 )

範例

Delete From pet Where birth <’1993-01-01’ ; Delete From pet Where owner=’Gwen’ And

species=’cat’ ; Delete From pet;

(49)

3-3-6 刪除資料 ( 續 )

透過第二個資料表來挑選待刪除資料

DELETE t1 FROM t1, t2 WHERE t1.key_field = t2.key_filed ;

一道刪除指令同時刪除兩個表的資料

DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id1=t3.id1;

(50)

3-6-7 更新資料

基本指令型式:

UPDATE 資料表名稱

SET 欄位名稱 = 更新資料 , [ 後續欄位 ] WHERE 資料範圍 ;

(51)

3-6-7 更新資料

( 續 )

更新資料之時機 :

原輸入之資料錯誤,事後發現錯誤

時效過期

異動檔資料轉入主控檔(例如會計之過帳)

(52)

3-6-7 更新資料

( 續 )

將全部資料之死亡日期移除

Update pet SET death=NULL;

將名字叫” Bowser” 之死亡日期註記

Update pet SET death=’1995-07-29’ Where name =’ Bowser’;

將名字為 Slim 之出生日期及性別更改

Update pet SET birth=’1995-04-29’ , sex=’m’

(53)

3-4 MySQL 進階應用

3-4-1 連結兩個資料表

同時輸出兩個資料表之處理指令:

SELECT 欄位串列(可以間隔使用第一和第二資料 表之欄位)

FROM 第一資料表,第二資料表

WHERE 第一資料表 . 鍵值欄名 = 第二資料表 . 鍵 值欄名 ;

鍵值欄名通常是兩個表欄名相同者,鍵值欄名可指

(54)

同時輸出兩個資料表

範例:

Select pet.name (Year(date)-year(birth))- (Right(date,5)<Right(birth,5)) AS ' 年齡 ',

remark From pet, event Where pet.name = event.name And type= " 生產 "

(55)

3-4-2 同一資料表呼叫兩次

範例:

Select p1.name, p1.sex, p2.name, p2.sex,

p1.species From pet AS p1, pet As p2 Where p1.species = p2.species And p1.sex = 'f' And p2.sex = 'm';

(56)

3-4-3 線上資料分析

挑選商品中最大值

Select Max(article) AS article From shop;

以子查詢挑選單價最高之商品

Select article,dealer,price From shop Where price=(Select Max(price) From shop);

搭配【 LIMIT 】修飾辭來限定輸出紀錄筆數

Select article,dealer,price From shop Order By

(57)

3-4-3 線上資料分析

( 續 )

挑選各類商品中單價最高者

Select article, Max(price) AS price From shop Group By article;

挑選各類商品中單價最高並輸出商品資訊

Select article, dealer, price From shop s1 Where price=(Select Max(s2.price) From shop s2

Where s1.article=s2.article);

(58)

3-4-3 線上資料分析

( 續 )

與 Group By 搭配之常用分析函數

AVG() :求平均數

MIN() :挑最小值

MAX() :挑最大值

SUM() :求總數

STD() :樣本標準差,分母為紀錄數 -1

STDDEV() :標準差,分母為紀錄數,與

(59)

3-4-4 子查詢

依第 2 表之結果來過濾第 1 表

Select * From t1 Where column1 = (Select column1 From t2);

將挑選第 2 表資料新增至第 1 表

Insert Into t1 ( 欄位串列 ) Select ( 欄位串列 ) From t2 Where (t2 之過濾條件 );

兩個資料表之欄位串列之個數必須相同,對應

型態也須相同

(60)

3-4-4 子查詢

( 續 )

依第 2 表挑出之資料將第 1 表對應資料刪除

Delete From t1 Where column1 = (Select column1 From t2);

以 IN 運算子比對資料

Select column1,column2,column3 From t1

Where (column1,column2,column3) IN (Select column1,column2,column3 From t2);

參考文獻

相關文件

上傳證明文件檔 (PDF、JPG、PNG)

輸入grid on則會添加格線;而輸入grid off則會停止顯 示格線。當單獨使用的時候,grid會切換此功能開啟或 者關閉,但是你應該要使用grid

(二)每位學生接受巡迴輔導以每週一至兩次(每次一至兩節)為原則,惟

在數位系統中,若有一個以上通道的數位信號需要輸往單一的接收端,數位系統通常會使用到一種可提供選擇資料的裝置,透過選擇線上的編碼可以決定輸入端

選取本地根資料夾Æ右 1Æ開新檔案Æ輸入檔案名稱( index.html),Enter 鍵Æ右 1Æ設成 首頁 Æ重複〝右 1〝 本地根資料夾〞 Æ開新檔案Æ輸入檔案名稱,Enter

如圖1-16所示,NOT運算會改變邏輯準位。輸入為 HIGH (1) 時,輸出為LOW (0)。當輸入為LOW時,輸出

We compare the results of analytical and numerical studies of lattice 2D quantum gravity, where the internal quantum metric is described by random (dynamical)

• 也就是 ”我的dp是n^3”這句話本身不夠表示你的dp演算法,必須 要說“我的dp是個狀態n^2,轉移n”才夠精確. •