PHP與MySQL 入門學習指南 凱文瑞克 著 第 25 章 資料庫增刪作業
INSERT 語法: INSERT INTO [LOW_PRIORITY|DELAYED] Tbl_Name [(column_name,.......)] VALUES (expression,.......); 例如: INSERT INTO Customers VALUES(NULL,”Glen”,”brazil”) INSERT INTO Customers (Customer_ID, Last_Name, First_Name) VALUES (NULL, “Brazil”,”Glen”)
MySQL 中插入資料特別規定 字串型態 跳脫字元 意義 \0 ASCII 字元 0 \n 換行符號 \t 一個 TAB 字元 \r 換行字元 \b 倒退字元 \' 單引號字元 \" 雙引號字元 \\ 反斜線字元 \% 百分比字元 \_ 底線字元
MySQL 中插入資料特別規定 數字型態:小數點的資料欄位中填入整數資料,MySQL會自動將資料轉換為小數點的資料型態。 時間日期資料型態:後面的章節敘述。
REPLACE 的語法及功能 REPLACE [LOW_PRIORITY|DELAYED] Tbl_Name [(column_name,.......)] VALUES (expression,.......); REPLACE 的用法與 INSERT 非常接近,不同的地方是:在 INSERT 中如果你插入的欄位有唯一性質的索引,例如:PRIMARY KEY,AUTO_INCREMENT,UNIQUE,如果插入資料時真的發生唯一性質的欄位資料重複,那麼這個 INSERT 命令會被忽略而不執行,但是在 REPLACE 中的新資料卻會把重複資料中的舊資料蓋掉。因此 REPLACE 比 INSERT 更具強制性。
UPDATE UPDATE [LOW_PRIORITY] tbl_name SET col_name=expr1,col_name2=expr2,..[where expr] [limit #] col_name1=expr1 指定等號左邊的欄位名稱及右邊的值,只有 Where 條件子句的欄位才會被修改成 UPDATE 中的內容。LIMIT # 中的 # 代表整數 ,代表限制最多只能有 # 個資料列被更新。例如: UPDATE customers SET phone_no='99999999' address='台南市' where id=1;
DELETE DELETE [LOW_PRIORITY] FROM tbl_name [WHERE expr] [LIMIT #]; WHERE 是用來限制刪除的範圍,如果不加上 WHERE 子句則會將整個資料表刪除,因此在下此命令時,一定要特別小心,更謹慎的方式就是使用 LIMIT 關鍵字,LIMIT 後面接著的是數字,用來限制刪除的資料筆數,利用此指令先試著刪除一兩筆確定無誤後,再下一次 DELETE 進行完整的刪除動作 。
刪除資料的正確動作 先使用 SELECT 看看有多少筆資料準備被刪除: SELECT * FROM customers WHERE address='台北市'; 假設被刪除的筆數為 5 ,接下來利用 DELETE ....LIMIT 來分次刪除資料: DELETE FROM customers WHERE address='台北市' LIMIT 1 ;
OPTIMIZE DELETE 執行刪除命令之後,只是將資料的連結刪除,資料實際上仍然佔用硬碟的空間沒有釋放出來,會了增加搜尋速度及減少硬碟空間的浪費,MySQL 提供了一個最佳化的指令 OPTIMIZE ,用法如下: OPTIMIZE TABLE tbl_name ;
OPTIMIZE 使用時機 什麼時候最適合下 OPTIMIZE這個指令? 當資料庫使用過一段時間後 進行了相當多的新增或刪除 進行了相當大範圍的刪除動作 進行這個動作時,不能對資料庫進行修改或刪除的動作。