MySQL命令學習筆記(五)

1 插入數據

1.1 數據插入

數據插入的方式有:插入完整的行;插入行的一部分;插入多行;插入某些查詢的結果。

1.2 數據插入

將數據插入表中最簡單的方法是使用基本的INSERT語法,其要求指定表名和被插入到新行中的值。
示例命令如下:

INSERT INTO table1 VALUES('TN8',8,'14723580','x',9, 8.88, '2019-05-21');

結果如下:
insertTN8

從下圖的Navicat可以看出,TN8已經插入到表中
TN8insert
這裏table1表示要插入的表格,VALUSE表示一行的數據,這裏是按列的順序依次填充的,若數據與表格的格式不對應,則會報錯。因此這樣的SQL語句高度依賴表中列的定義次序,並且還依賴於其次序任意獲得的信息。更加安全但稍微繁瑣的方法是將列名一併列出來,如下示例:

INSERT INTO table1(name,id,phone,home,quantity,price,order_date) VALUSE('TN8',8,'14723580''x',9, 8.88, '2019-05-21');

按照這樣的方式,由於提供了列名,VALUES必須以其指定的次序匹配指定的列名,不一定按各個列出現在實際表中的次序。其優點是,即使表的結構改變,此INSERT語句仍然能正確工作。

一般不要使用沒有明確給出列的列表的INSERT語句
省略列: 若表的定義允許,這可以在INSERT操作中省略某些列。其中省略的列必須滿足以下某個條件:

  • 該列定義爲允許NULL值(無值或空值)
  • 在表定義中給出默認值

如果數據檢索是最重要的(通常是這樣),則可以通過在INSERT和INTO之間添加關鍵字LOW_PRIORITY,指示MySQL降低INSERT語句的優先級,如下所示:

INSERT LOW_PRIORITY INTO

這也適用於後面的UPDATE和DELETE語句。

1.3 插入多行

使用單條插入的方法,增加多個VALUES即可:

INSERT INTO table1(name,id,phone,home,quantity,price,order_date) VALUSE('TN9',9,'12367809''x',8, 11, '2019-05-21'),('TN10',10,'09751256''x',7, 12, '2019-05-21');

其中單條INSERT語句有多組值,沒組值用一對圓括號括起來,用逗號分隔。
此技術可以提高數據庫處理的性能,因爲MySQL用單條INSERT語句處理多個入比使用多條INSERT語句快。

1.4 插入檢索出的數據

INSERT還存在另一種形式,可以利用它將一條SELECT語句的結果插入表中。這就是所謂的INSERT SELECT。
若想從table1中合併某些數據到table2。 不需要每次讀取一行,然後再將它用INSERT插入,可以進行如下操作:

INSERT INTO 
table2(name,quantity,price,order_date)
SELECT name,quantity,price,order_date
FROM table1;

結果如下:
insert+select_cmd
使用Navicat查看列表

操作前 操作後
table2_origin 在這裏插入圖片描述

注意: 沒有設置默認值的列一定要加上

2 更新和刪除數據

2.1 更新數據

爲了更新(修改)表中的數據,可使用UPDATE語句,UPDATE的兩種使用方法:

  • 更新表中的特定行
  • 更新表中的所有行

基本的UPDATE語句由三部分組成,分別是:

  • 要更新的表
  • 列名和其新值
  • 確定要更新行的過濾條件

若要更新表中某一個phone的值:

UPDATE table1 SET phone = '11112222'
WHERE id = 5;

結果如下:
UPDATE.png
這裏要更新的表的名字爲table1; SET命令用來將新值賦給被更新的列;WHERE命令來指示MySQL更新哪一行。若要修改多個值,則在SET後面增加一個“列 = 值”對即可,每個“列 = 值”對之間用逗號分隔(最後一列之後不用逗號)

UPDATE table1 
SET phone = '11112222',
    home = 's'
WHERE id = 5;

爲了刪除某個列的值,可設置它爲NULL(假如表定義允許NULL值)。示例如下:

UPDATE table1 SET phone = NULL
WHERE id = 5;

2.2 刪除數據

爲了刪除(去掉)表中的數據,可使用DELETE語句,DELETE的兩種使用方法:

  • 從表中刪除特定行
  • 從表中刪除所有行

不要省略WHERE子句:在使用DELETE時一定要注意細心,因爲稍不注意,就會錯誤地刪除表中所有行
若要刪除表中某一行:

DELETE FROM table1 WHERE id = 5;

結果如下:
delete.png
DELETE不需要列名或通配符。 DELETE刪除整行而不是刪除列。爲了刪除指定的列,請使用UPDATE語句。

更快的刪除 如果想從表中刪除所有行,不要使用DELETE。可使用TRUNCATE TABLE語句,它完成相同的工作,但速度更快( TRUNCATE實際是刪除原來的表並重新創建一個表,而不 是逐行刪除表中的數據)。

2.3 更新和刪除的指導原則

如果執行UPDATE而不帶WHERE子句,則表中每個行都將用新值更新。類似地,如果執行DELETE語句而不帶WHERE子句,表的所有數據都將被刪除。
使用UPDATE或DELETE時,一般遵循的習慣:

  • 除非打算更新或刪除每一行,否則一定要使用帶WHERE子句的UPDATE或DELETE語句
  • 保證每個表都有主鍵,儘可能像WHERE子句那樣使用它
  • 在對UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT進行測試,保證它過濾的是正確的記錄,以防編寫的WHERE子句不正確。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章