IT大叔詳談mysql中update語句和delete語句及應用

2021-01-07 IT大叔老韓的生活

學習是一件枯燥的事,你要犧牲自己的業餘時間,你要忍受孤獨,堅持下來了你就勝利了,學習是一個過程,只要循序漸進,每天進步一點點,只有這樣你才能提高進而成功。今天老韓來講一講mysql中的update語句和delete語句。

一、update(更新)語句;

update語句屬於DML語句,如果要更新資料庫中的數據時可以使用它。update根據更新範圍老韓分為兩種(老韓自己分的類,方便講解)。

首先查看我們的student表數據;

1、精準更新;

為什麼叫精準更新呢,因為語句中有where條件,會精準的對符合要求的行進行更新,標準寫法:update 表名 set 運算表達式 where 列名=值;

從上面圖片可以看到有老韓信息,但是老韓的信息有錯誤,老韓的班級信息和password錯誤了,老韓轉到二班了,密碼也重置成「888888」了,如何實現呢?請看sql語句:update student set classno=2,classname='二班',password='888888' where id=1

update語句中表達式可以寫成set 欄位=要更新的值,多個欄位的時候欄位中間用英文逗號隔開,這個地方不僅僅可以使用「=」使用運算表達式也可以,下面的通表更新中老韓會寫一個表達式的update語句,現在咱們來查一下更新的效果;可以看到老韓的信息修改了。

2、通表更新;

通標更新就是不加where條件,對表中所有的數據進行更新,標準寫法:update 表名 set 運算表達式;

學校入學是九月份,現在過了年了,同學們的年齡都增加了一歲,如何將student表中所有人的年齡增加1呢?請看sql語句:update student set age = (age+1),語句中「age+1」是一個表達式,並不是一個具體的值,這樣也可以,這個語句沒有where表達式意思就是通表(整張表)更新,來看一下更新的效果把,可以看到所有人age都增加了1。

二、delete(刪除)語句;

刪除語句同樣也是兩種方式,精準刪除和全部刪除;

為了方便演示,老韓又創建了一個goods(商品)表,創建語句為:

create table goods(

-- 編號為主鍵

Nub int UNIQUE not null PRIMARY key,

-- 商品名稱

goodsName varchar(50),

-- 價格

price DECIMAL(8,2) not null,

-- 庫存數量,不允許為負數

amount int UNSIGNED ,

-- 商品備註

remark varchar(100)

)

「--」表示的是注釋,跟Java注釋一樣,但是跟寫的字中間要有空格,老韓手動插入了一條數據如下圖所示;

直接可以通過圖中所示方法圖形化的增加數據,雖然有圖形化的維護功能,但是還需要熟悉sql語句。

添加數據

1、精準刪除;

標準寫法delete from 表名 where 條件;

從上面的圖片可以看到老韓的飯店開張了,飯店裡有各種商品,吃的喝的,有一天一個客人吃了老韓做的紅燒肉拉肚子了,老韓就不再賣紅燒肉了,決定把紅燒肉刪除,如何實現呢?直接上SQL語句:delete from goods where nub=4,咱們看一下執行結果,紅燒肉從表中刪除了。

2、全部刪除;

標準寫法delete from 表名,可以看出和精準刪除相比,沒有where條件,這個意思就是把表中的所有數據都刪除,注意:只是刪除數據,表還存在,以後還可以寫數據。

咱們還結合上面的例子來講,紅燒肉沒了,客人要了一碗麵,結果又吃拉肚子了,給老韓投訴了,飯店倒閉了,所有的商品都要刪除,這個如何實現呢?直接上SQL語句:delete from goods,來看一下執行結果,可以看到所有的商品信息都沒了。

三、update和delete在實際工作中的應用;

update在實際工作中用到的記錄非常之高,delete有時候也會用到,接下來老韓列舉幾個實際中的應用。

1、update語句和定時任務(後面作為一個專題講)結合來執行一些定時任務,如每天晚上12點掃描員工是否入職滿一年,是否滿兩年......自動更新年假天數。

2、update語句在某個動作之後去更新數據,如財務系統中的庫存,在OA系統內走完審批之後會根據OA表單中的數量自動增加;如人員的狀態會在轉正申請之後變為正式,在離職之後改為離職;如在採購申請審批完畢之後自動的會扣減相應的預算等等。

3、delete語句經常用來清理數據,如我們去做項目了,需求都實現完了,也測試完了,明天上線,今天晚上必須要做的一件事那就是清理數據,可以使用delete來對測試數據進行清理,有的朋友可能會說使用truncate,比delete快的多,其實測試數據的體量就不要談什麼效率了,而且truncate不支持回滾(後面也會出專題來講),如果使用delete刪除錯了,我還可以恢復一下,使用truncate就不好弄了,就算是能恢復數據,不管是通過日誌也好什麼也好,那就得不償失了,所以清理數據使用delete。

update和delete用法及在實際工作中的應用就介紹完了,希望對讀者朋友有所幫助,如有問題可以通過圖片中聯繫方式聯繫老韓,老韓知無不答。沒有點關注的朋友可以點下關注,你們每一次的關注、轉發、收藏都是老韓持續更新的動力,謝謝觀看,我們下期再見。

相關焦點

  • MySQL中delete和update語句的用法
    昨天和大家分享學習了insert,今天我們一起學習一下刪除與更新,即delete和update的用法。連接資料庫-選擇資料庫-查看表:先來看一下更新語句,更新語句的時候需要注意,一定要加上where條件,不然整張表的數據,將被全部更新,比如我們要修改一下id=2的姓名,性別,生日,(開發中,一般因為id號是唯一的,所以通常通過id來修改),我們語句是:
  • mysql修改語句UPDATE的使用
    今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。我們看看在哪些環境會用到修改語句,比如在編輯輸入資料的時候發現資料錄錯了,或者某個信息要修改,這個時候就需要用到update了。我們實現的是最後原理,不管是asp,jsp還是php實現最底層都是通過sql語句修改資料庫,實現達到的效果。通過程序篩選出數據,在指定去執行。我們看看demo我們先看看update的語法。
  • MySQL語句中去除重複語句
    案例:id         姓名  課程名稱 分數1         張三     數學    692          李四        數學    893          張三        數學    69刪除除了自動編號不同,其他都相同的學生冗餘信息--按常理來說,這個sql語句應該是
  • MySQL UPDATE語句一個「經典」的坑
    作者:朱康 原文地址:http://tech.dianwoda.com/2017/12/14/mysql-updateyu-ju-ge-jing-dian-de-keng
  • MySQL的SQL語句 - 數據操作語句(15)- UPDATE 語句
    對於多表語法,UPDATE 更新 table_references 中每個表中滿足條件的行。每個匹配的行都會更新一次,即使它與條件匹配多次。對於多表語法,不能使用 ORDER BY 和 LIMIT。對於分區表,此語句的單表和多表形式都支持使用 PARTITION 選項用作表引用的一部分。此選項接受分區或子分區列表。
  • MySQL資料庫Insert語句7種寫法
    簡介很多開發人員工作了幾年之後,都會自嘲,自己啥技術都沒學到,就會CRUD,可是我要說的是,CRUD你真的都會嗎,你在MySQL資料庫中,會幾種insert語句寫法呢。在這裡我會7種寫法,下面我就來給大家分別介紹一下。
  • 在mysql中如何刪除記錄?delete關鍵字了解一下
    在上一篇文章中我們學習了如何更新mysql中的數據內容,用到的是update這個關鍵字,今天我們要學習的是如何讓在mysql中刪除記錄,也就是從箱子裡面拿走東西,用到的關鍵字是delete這個關鍵字,下面我們就通過一個例子來了解一下。
  • update語句set中也可以使用and關鍵字
    我們平常寫sql更新數據,常見都是下面這種吧update student set no = '1', name = '張xx' where row_id = 3;但你是否有注意到,下面這條語句也是可以更新數據的update
  • SQL UPDATE 語句
    Update 語句Update 語句用於修改表中的數據。FirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonChamps-Elysees更新某一行中的一個列
  • mysql常用sql語句總結
    ;update 表名 set列1=新值1 ,列2=新值2Where expr;(不加影響所有行);delete from 表名 where expr;select 列1,列2,.列n from 表名 where expr;select * from tmp where name is not null;mysql> select
  • MySQL實戰中,Insert語句的使用心得總結
    小tips:ON DUPLICATE KEY UPDATE:如果插入行出現唯一索引或者主鍵重複時,則執行舊的update;如果不會導致唯一索引或者主鍵重複時,就直接添加新行。REPLACE INTO:如果插入行出現唯一索引或者主鍵重複時,則delete老記錄,而錄入新的記錄;如果不會導致唯一索引或者主鍵重複時,就直接添加新行。
  • MySQL的Online DDL語句
    DML:data manipulation language,數據修改語言,用來操作數據的語句。例如我們平時的select,insert,update,delete語句。DCL:data control language,數據控制語言,用來定義數據訪問控制的語句。例如我們平時的grant,revoke等。
  • 面試官:你知道select語句和update語句分別是怎麼執行的嗎?
    分析器分析器主要有兩步:(1)詞法分析(2)語法分析詞法分析主要執行提煉關鍵性字,比如select,提交檢索的表,提交欄位名,提交檢索條件,確定該語句是select還是update或者是delete語句。
  • MySQL實戰中的Insert語句的使用心得
    小tips:ON DUPLICATE KEY UPDATE:如果插入行出現唯一索引或者主鍵重複時,則執行舊的update;如果不會導致唯一索引或者主鍵重複時,就直接添加新行。在主鍵或者唯一索引重複時,replace是delete老記錄,而錄入新的記錄,所以原有的所有記錄會被清除,這個時候,如果replace語句的欄位不全的話,有些原有的比如c欄位的值會被自動填充為默認值(如Null)。細心地朋友們會發現,insert on deplicate udpate只是影響一行,而REPLACE INTO可能影響多行,為什麼呢?
  • 面試官:你知道 select 語句和 update 語句分別是怎麼執行的嗎?
    語句和update語句分別是怎麼執行的嗎?,要我寫一篇這兩者執行SQL語句的區別,這不就來了。總的來說,select和update執行的邏輯大體一樣,但是具體的實現還是有區別的。分析器分析器主要有兩步:(1)詞法分析(2)語法分析詞法分析主要執行提煉關鍵性字,比如select,提交檢索的表,提交欄位名,提交檢索條件,確定該語句是select還是update或者是delete語句。
  • MySQL update語句一個「經典」的坑
    一條記錄,語法都正確的,但記錄並沒有被更新…結論小結:在一條UPDATE語句中,如果要更新多個欄位,欄位間不能使用「AND」,而應該用逗號分隔。現象剛遇到這個問題的時候,我拿到這條語句直接在測試庫裡面執行了一把,發現確實有問題,但和開發描述的還是有區別,這裡我用測試數據來模擬下:有問題的SQL語句:update apps set owner_code='43212' and owner_name='李四' where owner_code='13245' and owner_name='
  • MySQL Update語句一個非常經典的「坑」
    起因最近好幾次有開發同學在釘釘上問我,比如下圖:問題歸納起來就是:在MySQL裡面update一條記錄,語法都正確的,但記錄並沒有被更新…結論小結:在一條UPDATE語句中,如果要更新多個欄位,欄位間不能使用「AND」,而應該用逗號分隔。
  • 揭秘一條select語句,在MySQL中權限訪問控制內幕
    在MySQL資料庫中,權限訪問控制實際上有兩大模塊。
  • MySQL的SQL語句 - 資料庫管理語句 - 帳戶管理語句 - GRANT 語句 (3)
    MySQL 將全局權限存儲在 mysql.user 系統表。資料庫權限應用於給定資料庫中的所有對象。可以在資料庫級別指定 CREATE、DROP、EVENT、GRANT OPTION、LOCK TABLES 和 REFERENCES 權限。表或例程權限也可以在資料庫級別指定,在這種情況下,它們應用於資料庫中的所有表或例程。MySQL 將資料庫權限存儲在 mysql.db 系統表。表權限應用於給定表中的所有列。
  • MySQL UPDATE 語句一個「經典」的坑
    來源:ju.outofmemory.cn/entry/336774最近好幾次有開發同學在釘釘上問我,比如下圖:img問題歸納起來就是:在MySQL裡面update一條記錄,語法都正確的,但記錄並沒有被更新...