MySQL數據庫(5)----刪除或更新已有行


  有時候,會需要刪除某些行,或者修改其內容。這是候便需要用到DELETE語句和UPDATE語句。

1.  DELETE 語句的基本格式如下所示:

DELETE  FROM tbl_name
WHERE which rows to delete;

其中,WHERE子句是可選的,它用於指定需要刪除掉哪些行。如果沒有WHERE 子句,那么將刪除表里面的所有行。這意味着,越簡單的DELETE語句越危險,例如下面的語句:

DELETE FROM tbl_name

它會徹底刪除表里的內容,因此務必要小心使用。

如果不清楚某條DELETE語句到底會刪除哪些行,那么最好把這條語句的WHERE子句放到一條SELECT 語句里,看看這條SELECT 語句能查出哪些行。這有助於確認:它們的確是你想要刪除的那些行,而且只有這些,不能多也不能少。

如下是一個使用示例:

mysql> select * from student;
+--------+-----+------------+
| name   | sex | student_id |
+--------+-----+------------+
| Jim    | M   |          1 |
| Tom    | M   |          2 |
| Lily   | F   |          3 |
| Lucy   | F   |          4 |
| Travis | M   |          5 |
| Steve  | M   |          6 |
+--------+-----+------------+
6 rows in set (0.00 sec)

mysql> delete from student where sex='F';
Query OK, 2 rows affected (0.01 sec)

mysql> select * from student;
+--------+-----+------------+
| name   | sex | student_id |
+--------+-----+------------+
| Jim    | M   |          1 |
| Tom    | M   |          2 |
| Travis | M   |          5 |
| Steve  | M   |          6 |
+--------+-----+------------+
4 rows in set (0.00 sec)

 

2. 如果想要修改已有記錄行,則需要使用UPDATE語句,其基本格式如下:

UPDATE  tbl_name

SET which columns to change

WHERE which rows to update;

這里的WHERE子句的情況與DELETE語句里的相似,它是可選的,因此在沒有指定它時,會更新表里的每一行。例如,下面的語句會把每一位學生的 name 更改為 George:

mysql> UPDATE student SET name='George';

很顯然,必須謹慎對待這類查詢,所以通常情況下都需要加上一個WHERE子句,用它來更具體地指出需要更行那些行。

假設在 student 表里添加了一行,但忘記指定 sex 列的內容,默認地,該列會被設置為 'F':

mysql> INSERT INTO student (name) 
    -> VALUES('Julian');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM student;
+--------+-----+------------+
| name   | sex | student_id |
+--------+-----+------------+
| Jim    | M   |          1 |
| Tom    | M   |          2 |
| Travis | M   |          5 |
| Steve  | M   |          6 |
| Hellen | M   |          7 |
| Julian | F   |          8 |
+--------+-----+------------+
6 rows in set (0.00 sec)

此時,可以用一條UPDATE語句來進行修復,其中包含一條WHERE子句,用以標識需要更新的那一行:

mysql> UPDATE student
    -> SET sex='M'
    -> WHERE name='Julian';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM student;
+--------+-----+------------+
| name   | sex | student_id |
+--------+-----+------------+
| Jim    | M   |          1 |
| Tom    | M   |          2 |
| Travis | M   |          5 |
| Steve  | M   |          6 |
| Hellen | M   |          7 |
| Julian | M   |          8 |
+--------+-----+------------+
6 rows in set (0.00 sec)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM