MySQL 基礎教程-03 從表中檢索數據

1. 向表中加載數據
建立表以後,須要向其中填充數據,能夠用LOAD DATA 和 INSERT 語句作這件事。
假設你的寵物記錄以下表所示:mysql

MySQL 基礎教程-03 從表中檢索數據

由於開始是一張空表,一種簡單的填充數據方式就是建立一個文本文件,每一個動物對應一行信息,而後用一條語句將文件內容加載到表中。
例如:能夠建立一個pet.txt 文件,文件中每行包含一條記錄信息,每條記錄中各值以TAB鍵分隔,值的內容按照CREATE TABLE語句中建立列指定的順序給出,對於缺失的值(例如未知的性別或者活着的動物的死亡日期)能夠設置NULL值,在文本文件中用\N(反斜槓加大寫N),例如:sql

Whistler        Gwen    bird    \N      1997-12-09      \N

要將文本文件pet.txt中的內容加載到pet表中,使用以下語句:編輯器

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;

若是文件是在Windows系統中建立,編輯器使用的是\r\n換行符,則應使用以下語句:ide

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';

(在運行MacOS的蘋果機器上,應該使用LINES TERMINATED BY '\r')
能夠在LOAD DATA語句中明確指定列分隔符和行結束符,默認值是tab和換行符。
對於用語句正確讀取pet.txt文件來講,以上信息就足夠了。
若是語句執行失敗,多是你的MySQL安裝程序並無默認啓用本地文件功能。
若是須要每次添加一條新記錄,這時能夠用INSERT語句。簡單的使用形式就是按照建立表時提供的列順序爲每列賦值,例如:3d

mysql> INSERT INTO pet VALUES ('Puffball', 'Diane', 'hamster', 'f', '1999-03-30', NULL);

字符值和日期用引號包含,用INSERT語句能夠直接插入NULL表示缺失數據,不須要LOAD DATA 中使用的\N。code

2. 從表中檢索數據
SELECT 語句用於從表中檢索數據,該語句的通用格式以下:blog

SELECT what_to_select 
FROM which_table 
WHERE conditions_to_satisfy;

what_to_select 表示須要查什麼信息,能夠是多個列,或者用 * 表示全部列。
which_table 指定查詢的表,WHERE 子句是可選的,用於指定各個行須要知足的條件。排序

2.1 選擇所有數據
SELECT 語句的最簡單形式就是從表中查詢所有數據:
MySQL 基礎教程-03 從表中檢索數據教程

當查詢數據後,若是發現有些數據錯了,這時該怎麼處理呢?有2種方法可供選擇:
·編輯pet.txt文件,改正錯誤信息,清空pet表,從新加載數據:ci

mysql> DELETE FROM pet; 
mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

·使用UPDATE 語句修復錯誤記錄

mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

2.2 選擇特定行
前面講過,若是不加WHERE子句查詢將返回所有信息,可是通常來講,咱們不須要查看全表信息,尤爲是當表數據量很大的時候更是如此。下面看一些選擇查詢例子。
驗證剛剛修改過的 Bowser 的生日:
MySQL 基礎教程-03 從表中檢索數據

字符串比較一般是不區分大小寫的,所以指定名字爲 ‘bowser’或者’BOWSER’ 結果是相同的。
查詢時能夠在任何列上指定條件,例如:
MySQL 基礎教程-03 從表中檢索數據

還能夠使用組合條件:

MySQL 基礎教程-03 從表中檢索數據

以前的查詢使用了AND邏輯操做符,還能夠使用 OR 操做符:

MySQL 基礎教程-03 從表中檢索數據

AND 和 OR 也可混合使用,固然,混合使用時最好使用括號以明確指定條件分組狀況:
MySQL 基礎教程-03 從表中檢索數據

2.3 選擇特定列
查詢信息時能夠只查特定列,列名間以逗號分隔,例如僅查詢動物名稱和出生日期:

MySQL 基礎教程-03 從表中檢索數據
如只想查出動物主人:
MySQL 基礎教程-03 從表中檢索數據

上例中咱們發現有的主人因有多個寵物屢次出現,若是咱們想讓每一個主人都不重複,則能夠使用關鍵字 DISTINCT :

MySQL 基礎教程-03 從表中檢索數據

能夠使用WHERE子句將行選擇與列選擇結合起來查詢:

MySQL 基礎教程-03 從表中檢索數據

2.4 行排序
你們可能注意到了,以前例子中的查詢結果並無以特定順序排序,若是以某種有意義的方式對結果排序,更利於咱們檢查結果,要對結果排序,能夠使用ORDER BY子句:

MySQL 基礎教程-03 從表中檢索數據

能夠對多個列進行排序,每一個列能夠指定不一樣的排序方式,例如,能夠對動物種類進行升序排序,而後對同種類內的動物生日進行降序排序(幼小的動物排在前面),查詢示例以下:
MySQL 基礎教程-03 從表中檢索數據

DESC 關鍵字僅影響它前面緊跟的列(birth),對species沒有影響。

相關文章
相關標籤/搜索