MySQL中如何插入數據

1數據插入

INSERT是用來插入(或添加)行到數據庫表的。插入可以用幾種方式使用:

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查詢的結果。

2插入完整行

把數據插入表中的最簡單的方法是使用基本的INSERT語法,要求指定表名和被插入到新行中的值。

輸入

INSERT INTO Customers 
VALUES('1000000006', 
       'Toy Land', 
       '123 Any Street', 
       'New York', 
       'NY', 
       '11111', 
       'USA', 
       NULL, 
       NULL); 

分析:此例子插入一個新客戶到customers表存儲到每個表列中的數據在VALUES子句中給出,對每個列必須提供一個值如果某個列沒有值(如上面的cust_contact和cust_email列),應該使用NULL值(假定表允許對該列指定空值)。各個列必須以它們在表定義中出現的次序填充。第一列cust_id也爲NULL。這是因爲每次插入一個新行時,該列由MySQL自動增量。你不想給出一個值(這是MySQL的工作),又不能省略此列(如前所述,必須給出每個列),所以指定一個NULL值(它被MySQL忽略,MySQL在這裏插入下一個可用的cust_id值)。

編寫INSERT語句的更安全(不過更煩瑣)的方法如下:

INSERT INTO Customers(cust_id, 
                      cust_name, 
                      cust_address, 
                      cust_city, 
                      cust_state, 
                      cust_zip, 
                      cust_country, 
                      cust_contact, 
                      cust_email) 
VALUES('1000000006', 
       'Toy Land', 
       '123 Any Street', 
       'New York', 
       'NY', 
       '11111', 
       'USA', 
       NULL, 
       NULL); 

分析:此例子完成與前一個INSERT語句完全相同的工作,但在表名後的括號裏明確地給出了列名。在插入行時,MySQL將用VALUES列表中的相應值填入列表中的對應項。VALUES中的第一個值對應於第一個指定的列名。第二個值對應於第二個列名,如此等等。

因爲提供了列名,VALUES必須以其指定的次序匹配指定的列名,不一定按各個列出現在實際表中的次序。其優點是,即使表的結構改變,此INSERT語句仍然能正確工作。你會發現cust_id的NULL值是不必要的,cust_id列並沒有出現在列表中,所以不需要任何值。

下面的INSERT語句填充所有列(與前面的一樣),但以一種不同的次
序填充。因爲給出了列名,所以插入結果仍然正確:

INSERT INTO customers(cust_name,
      cust_contact,
      cust_address,
      cust_email,
      cust_city,
      cust_state,
      cust_zip,
      cust_country)  
    VALUES('Pep E. LaPew',
       NULL,
       NULL,
      '100 Main Street',
      'Los Angeles',
      'CA',
      '90046',
      'USA');   

3插入多個行

INSERT可以插入一行到一個表中。但如果你想插入多個行怎麼辦?可以使用多條INSERT語句,甚至一次提交它們,每條語句用一個分號結束,如下所示:

INSERT INTO customers(cust_name,
      cust_address,
      cust_city,
      cust_state,
      cust_zip,
      cust_country)  
    VALUES(
       'Pep E. LaPew',
      '100 Main Street',
      'Los Angeles',
      'CA',
      '90046',
      'USA'), 
    VALUES(
      'M. MaRtian',
      '42 Galaxy Way',
      'New York',
      'NY',
      '11123',
      'USA'); 

分析:其中單條INSERT語句有多組值,每組值用一對圓括號括起來,用逗號分隔。

4插入檢索出的數據

INSERT一般用來給表插入一個指定列值的行。但是,INSERT還存在另一種形式,可以利用它將一條SELECT語句的結果插入表中。這就是所謂的INSERT SELECT,顧名思義,它是由一條INSERT語句和一條SELECT語句組成的

假如你想從另一表中合併客戶列表到你的customers表。不需要每次讀取一行,然後再將它用INSERT插入,可以如下進行:

輸入

INSERT INTO Customers(cust_id, 
                      cust_contact, 
                      cust_email, 
                      cust_name, 
                      cust_address, 
                      cust_city, 
                      cust_state, 
                      cust_zip, 
                      cust_country) 
SELECT cust_id, 
       cust_contact, 
       cust_email, 
       cust_name, 
       cust_address, 
       cust_city, 
       cust_state, 
       cust_zip, 
       cust_country 
FROM CustNew;

分析:這個例子使用INSERT SELECT從custnew中將所有數據導入
customers
。SELECT語句從custnew檢索出要插入的值,而不是列出它們。SELECT中列出的每個列對應於customers表名後所跟的列表中的每個列。這條語句將插入多少行有賴於custnew表中有多少行。如果這個表爲空,則沒有行被插入(也不產生錯誤,因爲操作仍然是合法的)。如果這個表確實含有數據,則所有數據將被插入到customers。

這個例子導入了cust_id(假設你能夠確保cust_id的值不重複)。你也可以簡單地省略這列(從INSERT和SELECT中),這樣MySQL就會生成新值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章