MySQL中聯(lián)表更新與刪除的語法介紹
前言
相信大家在日常使用mysql,可能會遇到需要同時更新兩張表時,我會采用在同一個事務(wù)中使用2句sql語句分別進行更新。其實,這種需要發(fā)送2句sql語句的方法效率相對來說是比較低的,有沒有只用1句sql語句就可以完成這個操作的呢?
答案是有的,下面將是代碼記錄:
假設(shè)有2張表:
1,user表,字段為:id,user_name
2,user_role表,字段為:id,role_name,user_id
關(guān)聯(lián)關(guān)系是 user.id = user_role.user_id
現(xiàn)要更改某一條user表的數(shù)據(jù)的的user_name字段以及該user對應(yīng)的user_role表中的數(shù)據(jù)的role_name字段,那么用下面的sql就可以實現(xiàn)這個目的了:
update user, user_role set user.user_name = ?, user_role.role_name = ? where user.id = ? and user.id = user_role.user_id
上面寫到聯(lián)表更新,那么有沒有聯(lián)表刪除呢?
答案也是有的,下面將是代碼記錄:
假設(shè)有2張表:
1,user表,字段為:id,user_name
2,user_role表,字段為:id,role_name,user_id
關(guān)聯(lián)關(guān)系是 user.id = user_role.user_id
現(xiàn)要刪除某一條user表的數(shù)據(jù)以及該user對應(yīng)的user_role表中的數(shù)據(jù),那么用下面的sql就可以實現(xiàn)這個目的了:
delete u, u_r from user u, user_role u_r where u.id = ? and u.id = u.user_id
上述sql中,u是user的別名,u_r是user_role的別名,from語句前面要附上別名,這個別名適用于指定刪除哪張表數(shù)據(jù)的,如果只有u或者u_r,那么僅刪除對應(yīng)的那張表上的數(shù)據(jù)。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
MySQL分頁Limit的優(yōu)化過程實戰(zhàn)
在mysql中進行分頁查詢時,一般會使用limit查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL分頁Limit優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09linux mysql忘記密碼的多種解決或Access denied for user ''root''@''local
linux mysql忘記密碼的多種解決方法。2009-07-07Mysql ERROR 1067: Invalid default v
這篇文章主要介紹了Mysql ERROR 1067: Invalid default value for字段問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05