1. 程式人生 > >Mysql學習筆記003

Mysql學習筆記003

data 信息 3-0 which 真的 txt文件 logs 筆記 ati

從表檢索信息

在前面,我, 創建了一個數據庫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>

好氣呀,後面還有很多沒有講完。

技術分享

Mysql學習筆記003