mysql 刪除操作

2021-08-08 11:19:18 字數 2678 閱讀 8816

mysql 刪除操作 語法

單錶語法:

delete

[low_priority][

quick][

ignore

]from

tbl_name

[where where_definition][

order by ...][

limit row_count

]

多表語法:

delete

[low_priority][

quick][

ignore

]tbl_name[.*

][, tbl_name[.*

]...]

from

table_references

[where where_definition

]

delete

[low_priority][

quick][

ignore

]from tbl_name[.*]

[, tbl_name[.*

]...]

using table_references

[where where_definition

]

如果您編寫的delete語句中沒有where子句,則所有的行都被刪除。當您不想知道被刪除的行的數目時,有乙個更快的方法,就是用truncate table。

delete語句支援以下修飾符:

在myisam表中,被刪除的記錄被保留在乙個帶鏈結的清單中,後續的insert操作會重新使用舊的記錄位置。要重新使用未使用的空間並減小檔案的尺寸,則使用optimize table語句或myisamchk應用程式重新編排表。optimize table更簡便,但是myisamchk速度更快。

quick修飾符會影響到在刪除操作中索引端結點是否合併。當用於被刪除的行的索引值被來自後插入的行的相近的索引值代替時,delete quick最為適用。在此情況下,被刪除的值留下來的空間被重新使用。

未充滿的索引塊跨越某乙個範圍的索引值,會再次發生新的插入。當被刪除的值導致出現未充滿的索引塊時,delete quick沒有作用。在此情況下,使用quick會導致未利用的索引中出現廢棄空間。

如果您打算從乙個表中刪除許多行,使用delete quick再加上optimize table可以加快速度。這樣做可以重新建立索引,而不是進行大量的索引塊合併操作。

用於delete的mysql唯一的limit row_count選項用於告知伺服器在控制命令被返回到客戶端前被刪除的行的最大值。本選項用於確保乙個delete語句不會占用過多的時間。您可以只重複delete語句,直到相關行的數目少於limit值為止。

如果delete語句包括乙個order by子句,則各行按照子句中指定的順序進行刪除。此子句只在與limit聯用是才起作用。例如,以下子句用於查詢與where子句對應的行,使用timestamp_column進行分類,並刪除第一(最舊的)行:

delete

from somelog where

user='

jcole

'order

by timestamp_column limit 1;

可以同時刪除許多個表中的行,並使用其它的表進行搜尋:

delete t1, t2 from t1, t2, t3 where t1.id=t2.id and t2.id=

t3.id;

--或者

delete

from t1, t2 using t1, t2, t3 where t1.id=t2.id and t2.id=t3.id;

當搜尋待刪除的行時,這些語句使用所有三個表,但是只從表t1和表t2中刪除對應的行。

以上例子顯示了使用逗號操作符的內部聯合,但是多表delete語句可以使用select語句中允許的所有型別的聯合,比如left join,不過,您不能在乙個多表delete語句中使用order by或limit。

當引用表名稱時,您必須使用別名(如果已給定):

delete t1 from test as t1, test2 where ...

進行多表刪除時支援跨資料庫刪除,但是在此情況下,您在引用表時不能使用別名。舉例說明:

delete test1.tmp1, test2.tmp2 from test1.tmp1, test2.tmp2 where ...

目前,您不能從乙個表中刪除,同時又在子查詢中從同乙個表中選擇。

語法

truncate

[table

] tbl_name

truncate table用於完全清空乙個表。從邏輯上說,該語句與用於刪除所有行的delete語句等同,但是在有些情況下,兩者在使用上有所不同。

對於innodb表,如果有需要引用表的外來鍵限制,則truncate table被對映到delete上;否則使用快速刪減(取消和重新建立表)。使用truncate table重新設定auto_increment計數器,設定時不考慮是否有外來鍵限制。

對於其它儲存引擎,truncate table與delete from有以下幾處不同:

truncate table是在mysql中採用的乙個oracle sql擴充套件。

** 

MySQL 刪除外來鍵操作

1.顯現要刪除的外來鍵。show create table 表名 2.看到約束 3.刪除即可。alter table 表名 drop foreign key 約束名 補充 增加主鍵 alter table your table name add primary key your primary ke...

MySQL遠端操作記錄刪除 mysql常用操作記錄

登入 mysql u 使用者名稱 p 密碼 匯出sql檔案 匯出整個資料庫 包括資料 mysqldump u username p dbname dbname.sql 匯出資料庫結構 只有建表語句,不含資料 mysqldump u username p d dbname dbname.sql 匯出資...

python操作mysql 插入 查詢 刪除

塊語法遵循標準markdown 例如 usr bin env python coding utf 8 mysqldb查詢 import mysqldb conn mysqldb.connect host localhost port 3306,user root passwd 44570253 db...