好亞首頁>>好亞論壇 論壇首頁 - 幫助 - 規則 - 聯係我們
好亞論壇
主題: 4,368
文章: 9,919
最新會員: Advannage
當前 15 用戶在綫!

Advertisement

返回   好亞論壇 > 好亞綜合論壇 > 文化科學 > 学者学术
幫助 會員 行事曆 搜尋 今日新文章 標記論壇已讀

回覆
 
主題工具 搜尋本主題 顯示模式
舊 2006-08-15, 01:01 PM   #1
asddas221
 
預設 MySQL:SQL 基本語法

我們將介紹基本的 SQL 語法。這些 SQL 語法包含了:SELECT、INSERT、UPDATE、DELETE等。我們使用這些語法對資料庫執行:查詢、新增、更新、以及刪除等工作。這些工作幾乎含括了資料庫大部分的資料查詢作業,所以,身為網站應用程式開發者,學會這些基本語法,是必備的技能。在這個課程中,我們專注於學習這些基本的 SQL 語法,在 mysql 的環境中,使用這些語法。在之後的課程,我們會將所學習到的 SQL 技能,整合在 PHP 的程式之中。

--------------------------------------------------------------------------------
SELECT
--------------------------------------------------------------------------------

說明:

SELECT 句型,是用來對資料庫作查詢之用。資料庫在執行 SELECT 命令之後,會傳回查詢的結果。以下分別介紹各種 SELECT 句型的用法:

基本句型
使用萬用字元
使用 WHERE 子句,作為過濾查詢的條件。
使用 ORDER BY 子句,來定義排序的欄位,以及排序的方式。
使用 LIMIT 子句,設定查詢結果的範圍。



一、基本句型
句型:

SELECT 欄位 1, 欄位 2, ...,欄位N FROM 資料表

說明:

上面的句型,表示選取資料表中所有紀錄,並按照:欄位 1, 欄位 2, ...,欄位N的方式,分欄位排列查詢的資料。
每個欄位以逗號區隔。
句型中的 SELECT 和 FROM 都是 SQL 的保留字。
SQL 語法,除了資料表名稱及欄位名稱之外,並不區隔字母的大小寫。所以,你也可以寫成:Select 欄位 1, 欄位 2, ...,欄位N from 資料表。


實作:
使用 PUTTY 連線,進入資料庫伺服主機。
在主機系統的命令提示下,輸入:mysql -p。
輸入密碼。
在 mysql 提示下,輸入:use 你的資料庫名稱,如:use lib13; 再按 Enter 鍵。選用你的資料庫。
在 mysql 提示下,輸入:
SELECT id, name, email, post_time FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。觀察查詢所得的結果。
練習:試著更改 SELECT 命令句中欄位的部分,執行 SQL 命令,再觀察查詢所得的結果。如果,不知道 Guestbook 資料表中有哪些欄位的話,可以使用 describe Guestbook; 或 show columns from Guestbook; 的命令句,顯示 Guestbook資料表各欄位的定義。


二、萬用字元
句型:

SELECT * FROM 資料表

說明:

星號 * ,代表所有欄位。
如果需要顯示所有欄位時,一一輸入欄位名稱的方式,不但麻煩,而且容易因為輸入錯誤,而產生問題。所以,使用星號可以簡化我們撰寫 SELECT 命令的工作。


實作:
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。


三、WHERE 子句
句型:

SELECT 欄位 FROM 資料表 WHERE 條件

說明:

WHERE子句,用來定義查詢所要過濾的條件。
只有符合 WHERE 子句條件的紀錄,才會被選取。
條件的內容,通常是以欄位來比對某特定的值。要特別注意的是,如果,被比對的值,其資料型態不是數值時,前後必須使用單引號框住。
以下是常用的比較運算子:
運算子 意義
= 等於
!= 或 <> 不等於
> 大於
>= 大於等於
< 小於
<= 小於等於
LIKE 字串的樣式比對。可用%萬用字元。


WHERE子句中的條件,可以用 AND、OR、NOT等邏輯運算子,來組合成更複雜的查詢條件。
條件中的欄位,不一定要出現在 SELECT 的欄位中。


實作:
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id=3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id!=3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id>3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id>=3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id<3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id<=3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id>2 AND fk_icon=2;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE id=1 OR id=4;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name FROM Guestbook WHERE email like 'au%';
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name, email FROM Guestbook WHERE email like '%e%';
按 Enter 鍵,執行 SQL 命令。


四、ORDER BY 子句
句型:

SELECT 欄位 FROM 資料表 [WHERE 子句] ORDER BY 欄位 [排序方式]

說明:

上面的句型中,[] 表示選用,不可以打入在 SQL 命令中,只是用來在這裡,說明句型的結構之用而已。
ORDER BY 後面必須接欄位,表示使用這個欄位來排序。
排序方式有兩種:昇冪 (ASC),和降冪(DESC)。
如果未指定排序方式時,預設是昇冪的排序。
欄位可以用資料表的欄位名稱,使用欄位名稱時,這個欄位不一定要出現在 SELECT 所列出來的欄位中。
欄位也可以用數字來表示。這個數字是 SELECT 所列出來的欄位順序,起始值為 1。


實作:
在 mysql 提示下輸入:
SELECT id, name, email FROM Guestbook ORDER BY fk_icon DESC;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name, email FROM Guestbook ORDER BY 2 DESC;
按 Enter 鍵,執行 SQL 命令。


五、LIMIT 子句
句型:

SELECT 欄位 FROM 資料表 [WHERE 子句] [ORDER BY 子句] LIMIT [起始值, ] 紀錄筆數

說明:

LIMIT 是用來限定傳回的紀錄筆數。
可以選用起始值,來指定從哪一筆記錄開始啟算。
查詢結果中第一筆紀錄的起始值為 0,以下依此類推。
這個功能在需要分頁顯示查詢資料時,特別有用。


實作:
在 mysql 提示下輸入:
SELECT id, name, email FROM Guestbook LIMIT 3;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT id, name, email FROM Guestbook LIMIT 1, 3;
按 Enter 鍵,執行 SQL 命令。



--------------------------------------------------------------------------------
INSERT
--------------------------------------------------------------------------------

說明:

INSERT 句型,是用來新增資料到資料表的命令。以下分別說明 INSERT的各種用法:

新增單筆資料(不指定欄位)。
新增單筆資料(指定欄位)。
新增多筆資料。


一、新增單筆資料(不指定欄位)
句型:

INSERT INTO 資料表 VALUES(值1, 值2, ..., 值N)

說明:

執行這個句型的命令,會新增一筆資料到資料表。
VALUES 括號中所列示的值的數目,必須與資料表中的欄位數相同。每個值以逗號分開。
VALUES 括號中的值,其順序與資料型態,必須與資料表欄位的順序與資料型態相符。
非數值的欄位,其新增的值,前後必須以單引號框住。


實作:
在 mysql 提示下輸入:
INSERT INTO Guestbook VALUES(10, 'george', 'george@igt.com.tw', 'www.test.com', 'hello there', NOW(), 2);
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。並觀察新增資料的結果。


二、新增單筆資料(指定欄位)
句型:

INSERT INTO 資料表(欄位1, 欄位2, ...,欄位N) VALUES(值1, 值2, ..., 值N)

說明:

資料表後面的括弧中的欄位列表,必須與 VALUES裡面的值列表,數目、順序、與資料型態配合。
資料表後面的括弧,不需要列示資料表中的所有欄位,順序也不需要和資料表本身的欄位相同。
資料表欄位的定義中,如果是 NOT NULL,非自動增量,又沒有設定預設值,同時又沒有定義 Default預設值的話,在新增時,一定要把這個欄位列示出來。


實作:
在 mysql 提示下輸入:
INSERT INTO Guestbook (name, fk_icon)VALUES('mary', 3);
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。並觀察新增資料的結果。


三、新增多筆資料
句型:

INSERT INTO 資料表[欄位列表] VALUES(值列表), (值列表)...

說明:

要新增多筆欄位時,在VALUES之後,每筆資料的值列表,前後以括號框住,並以逗號作區隔。


實作:
在 mysql 提示下輸入:
INSERT INTO Guestbook (name, fk_icon)VALUES('jay', 2), ('jolin', 1);
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。並觀察新增資料的結果。



--------------------------------------------------------------------------------
UPDATE
--------------------------------------------------------------------------------

說明:

UPDATE 句型,是用來更新資料的命令。以下是 UPDATE的用法:

更新所有資料。
更新特定資料。


一、更新所有資料
句型:

UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3

說明:

執行這個句型的命令,會更新資料表中所有的紀錄。
使用 UPDATE 更新資料時,一定要指定所要更新的欄位以及更新的值。
如果更新的欄位超過一個時,每組欄位=值,必須以逗號區隔。


實作:
在 mysql 提示下輸入:
UPDATE Guestbook SET fk_icon=2, web='www.twisu.com.tw';
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。並觀察新增資料的結果。


二、更新特定資料
句型:

UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3 WHERE 條件

說明:

要更新特定資料時,可以在後面加上 WHERE條件子句,來限定要更改的紀錄。


實作:
在 mysql 提示下輸入:
UPDATE Guestbook SET email=Concat(name, '@twisu.com.tw') WHERE id > 9;
按 Enter 鍵,執行 SQL 命令。
在 mysql 提示下輸入:
SELECT * FROM Guestbook;
按 Enter 鍵,執行 SQL 命令。並觀察新增資料的結果。



--------------------------------------------------------------------------------
DELETE
--------------------------------------------------------------------------------

說明:

DELETE 句型,是用來刪除資料的命令。以下是 DELETE的用法:

刪除所有資料。
刪除特定資料。


一、刪除所有資料
句型:

DELETE FROM 資料表

說明:

執行這個句型的命令,會刪除資料表中所有的紀錄。


實作:
我們的資料,以後還要用,所以,在這裡就不實作了。切記,除非你真的要刪除所有的紀錄,否則,除非有備份,不然要挽救這些資料,就很麻煩了。
二、刪除特定資料
句型:

DELETE FROM 資料表 WHERE 條件

說明:

要刪除特定資料時,可以在後面加上 WHERE條件子句,來限定要刪除的紀錄。


實作:
在 mysql 提示下輸入:
DELETE FROM Guestbook WHERE id = 2;
按 Enter 鍵,執行 SQL 命令。
asddas221 當前離線   回覆時引用這篇文章
回覆


主題工具 搜尋本主題
搜尋本主題:

進階搜尋
顯示模式

發表規則
不可以發表新主題
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼開放
[IMG] 代碼開放
HTML 代碼關閉
論壇轉頁


所有時間均為格林尼治標準時間 +10, 現在的時間是 09:05 PM.

Powered by: vBulletin 3.5.2
版權所有 ©2000 - 2014, Jelsoft Enterprises Ltd.
版權所有 ©1995-2013 HAOYAH.COM PTY/LTD