從表檢索信息 在前面,我, 創建了一個資料庫test 進入資料庫 創建了一個表pet 插入了一些數據。那麼問題來了,我要是想要瞅一瞅我的表中的數據腫麽辦呢?莫著急,待我一一道來 SELECT語句 語句的一般格式: SELECT what_to_select FROM which_table WHER ...
從表檢索信息
在前面,我, 創建了一個資料庫test 進入資料庫 創建了一個表pet 插入了一些數據。那麼問題來了,我要是想要瞅一瞅我的表中的數據腫麽辦呢?莫著急,待我一一道來
SELECT語句
語句的一般格式:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
這是一個簡單的SELECT語句的基本格式了,詳細複雜的以後再說。
選擇所有數據
SELECT最簡單的形式是從一個表中檢索所有記錄:
mysql> SELECT * FROM pet;
+----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+--------+---------+------+------------+------------+
9 rows in set (0.00 sec)
mysql>
沒錯!就是有這種操作,厲不厲害。(๑•ᴗ•๑)
簡單講一講(其實沒講)UPDATE語句
現在能看見表中的所有數據了,你就何以檢查表中的數據有沒有錯誤了。
這時候你突然發現(書上提示的),Bowser的出生日期不對呀,應該是1989年出生的,而不是1979年。
So,你就想怎麼更改這條數據。於是你在某一個月光下的夜晚,你悄悄的刪除(DELETE)了表中的所有數據,又在pet.txt文件中更改了回來,重新將pet.txt導入(LOAD DATA)到表中。這樣做顯然是非常愚蠢的。
然而,在很久很久以前上神們曾經創造過這樣的一個命令 UPDATE 用於更改有問題的記錄用的。
mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
Query OK, 1 row affected (0.18 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
這樣就更改了錯誤的數據。
選擇特殊行
舉個慄子:剛纔我用上神賜予我的UPDATE語句,更改了Bowser的生日,我想看一看有木有更改成功。
操作如下:
SELECT * FROM pet WHERE name = 'Bowser';
mysql> SELECT *
-> FROM pet
-> WHERE name = 'Bowser';
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
1 row in set (0.00 sec)
mysql>
嗯。。。看來上神沒有騙我們
接著舉個例子:我想要知道哪個動物在1998年以後出生的
操作如下:
SELECT * FROM pet WHERE birth > '1998-1-1';
mysql> SELECT *
-> FROM pet
-> WHERE birth > '1998-01-01';
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
+----------+-------+---------+------+------------+-------+
2 rows in set (0.14 sec)
mysql>
接著舉個慄子:我想要給我們家李狗蛋找一個小母狗交配,我就要找一個小母狗 作為李狗蛋的交配對象。
操作如下:
SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
mysql> SELECT *
-> FROM pet
-> WHERE species = 'dog' AND sex = 'f';
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
1 row in set (0.00 sec)
mysql>
很好,我們李家有後了。
還是一個慄子:沒有故事了
操作如下:
SELECT * FROM get WHERE species = 'snake' OR species = 'bird';
mysql> SELECT *
-> FROM pet
-> WHERE species = 'snake' OR species = 'bird';
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+-------+---------+------+------------+-------+
3 rows in set (0.00 sec)
mysql>
又是一個慄子:真的沒有故事了 只是想說AND 和OR 可以混用,but AND 比 OR 具有更高的優先順序,So像我這樣的老司機都是加括弧的(為了方便愚蠢的凡人們閱讀)。
操作如下:
SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') OR (species = 'dog' AND sex = 'f');
mysql> SELECT *
-> FROM pet
-> WHERE (species = 'cat' AND sex = 'm')
-> OR (species = 'dog' AND sex = 'f');
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
2 rows in set (0.00 sec)
mysql>
好氣呀,後面還有很多沒有講完。