MySQL(九)插入 更新和刪除

2021-08-17 09:30:14 字數 3550 閱讀 8170

常用的sql語句,除了select用於查詢,還有insert、update、delete等。

一、insert

insert:用來插入(或新增)行到資料庫中,常見方式有以下幾種:

①插入完整的行;

②插入行的一部分;

③插入多行;

④插入某些查詢的結果;

1、插入完整的行

例如:insert into usertable

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

這條sql語句插入一條新的個人資訊到usertable表,儲存在每個表列中的資料在values中給出,對每個列必須提供乙個值,如果某個列沒有值,應使用null(假定表允許對該項指定空值);

各個列必須以它們在表定義中出現的次序填充;缺點在於;高度依賴表中列的定義次序,如果表結構出現變動,難免出現問題。

更安全的方法如下(相對比較麻煩):

例如:insert into usertable(

user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

這條sql語句與上面的sql語句完成同樣的工作,但給出了列名,valuse必須以指定的次序匹配指定的列名,不一定按照列出現在表中的實際次序;優點是:即使表結構改變,此insert語句仍然正確工作。

insert使用注意事項:

①無論使用哪種insert語法,都必須給出values的正確數目,如果不提供列名,則必須給每個表列提供乙個值;如果提供列名,則必須對每個列出的列給出乙個值;

②如果表定義允許,則可以在insert操作中省略某些列,列必須滿足這兩個條件(1.改列定義為允許null值;2.在表定義中給出預設值【如果不給出值,則使用預設值】);

③資料庫被多個使用者訪問,一般檢索是最重要的,可以通過在insert和into中間新增關鍵字low priority,指示mysql降低insert語句的優先順序(同樣適用於update和delete語句);

2、插入多個行

例如:insert into usertable(user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

或者只要每條insert語句中的列名(和次序)相同,可以只在insert語句後面輸入一次列名就可以(單個insert語句由多組值,每組值用一堆圓括號包含,用逗號隔開)

ps:mysql用單條insert語句處理多個插入比使用多個insert語句快。

3、插入檢索出的資料

例如:insert into usertable(user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

select user_id,

user_name,

user_year,

user_birthday,

user_adress,

user_email

from newtablebase;

這條sql語句中,select從newtablebase表中檢索出要插入的資料,select列出的每個列對應tablebase表名後所跟的列表中的每個列。

ps:insert select語句中,不一定要求列名匹配,實際上select中的第一列將用來填充表列中指定的第一列;insert select語句中select語句可包含where子句過濾插入的資料。

二、更新資料

如果要更新(修改)表中的資料,可以使用update語句,有以下兩種方法:

①更新表中特定行;

②更新表中所有行;

update語句由三部分構成:

①要更新的表;

②列名和它們的新值;

③確定要更新行的過濾條件;

例如:update usertable

set user_email = '[email protected]'

where user_id = '10086';

這條sql語句中,要更新的表名為usertable,set命令用來將新值賦給被更新的列user_email;

ps:update語句總是以要更新的表的名字開始,以where子句結束,它告訴mysql更新哪一行。

更新多個列:update usertable

set user_name = 'zhangsan',

user_email = '[email protected]'

where user_id = '10086';

更新多個列時,只需要使用單個set命令,每個「列=值」對之間用逗號分隔(最後一列不用逗號)。

ps:如果用update更新多個行,且更新中一行或多行出現錯誤,則update操作將被取消(錯誤發生前執行的動作將被回滾到最初狀態。即已更新的被恢復原來的值);

如果希望出錯誤,更新繼續執行,可以使用ignore關鍵字:update ignore tablebase......

如果希望刪除乙個值,可以將它設定為null(如果表定義允許null值),例子如下:

update usertable

set user_email = null

where user_id = '10086';

三、刪除資料

從乙個表彙總刪除資料,使用delete語句;有以下兩種方式:

①從表中刪除特定行;

②從表中刪除所有行;

例如:delete from usertable where user_id = '10086';

這條sql語句中,delete from要求指定從中刪除資料的表名,where子句過濾要刪除的行。

ps:delete不需要列名或者萬用字元,delete刪除整行而不是整列,為了刪除指定的列,可使用update語句(delete從表中刪除行甚至表中所有行,但不刪除表本身);

如果想刪除表中所有行,可使用truncate table語句,它的執行效率比delete更快(truncate實際上是刪除原來表並重新新建乙個表,而不是逐行刪除表中資料)。

更新和刪除規則:

①除非確實打算更新或刪除每一行,否則決不能使用不帶where子句的update或delete語句;

②保證每個表都有主鍵,盡可能像where子句那樣使用;

③對update和delete語句使用where子句前,最好先select進行測試,保證過濾的資料是正確的;

④使用強制實施引用完整性的資料庫(這樣mysql將不允許刪除具有與其他表相關聯的資料的行)。

MySQL更新和刪除

更新和刪除的操作sql語句比較簡單,不過要注意使用update的時候,要注意weher條件的限制,下面的語句是只更新id為10005的email位址,如果不加where語句限制,那麼將表中所有的email更新為 elmer fudd.com 刪除某個列的值,設定為null即可。刪除行的sql語句,使...

SQL學習(2) 插入,更新和刪除

一 資料插入insert 1.簡單插入 insert into aa values a b null 有幾個值就必須寫幾個值 insert into aa id,name,code values a b null 可以插入特定列的值,使用這個語法要求,這些被忽略的特定列是可以為null,或者有預設值...

MySQL插入資料與更新和刪除資料 md

20章 更新和刪除資料 利用mysql中insert語句插入資料 此前章節一直使用select語句,但還有三個經常使用的sql語句需要掌握 insert update和delete 插入的幾種形式,1.插入完整行 2.插入行的部分資料 3.插入多行 4.插入某些查詢的結果 注意,由於mysql的安全...