使用INSERT…SELECT語法插入記錄(三十二)


 

 

  前面,我們在談INSERT語句時,使用兩種語句:INSERT…SELECT  和  INSERT…VALUES。

INSERT…SELECT可以使用子查詢。因為在寫SELECT時。  ***  =    ***,這就是子查詢。

 

 

 

 

 

  我們還以tdb_goods這張表為例,這張表目前一共有22條數據,但是這22條數據中有很多重復的信息,下面我們簡單來查看一下。

select  *   from   tdb_goods\G;

  比如這21、22條記錄,他們的商品類別都是筆記本配件,他們的品牌都是索尼。這些都是重復的信息,我們都知道漢字占的字節數肯定要比數字要多,如果這種記錄越來越多,那么你的數據表就越來越龐大,那么查找的時候速度就會越來越慢,那最好的辦法就是使用外鍵來實現,如果使用外鍵,那么至少要有兩張數據表,所以我們需要再做一張數據表來存儲我們的產品分類和品牌。

 

 

 

 

  下面我們就來創建商品的分類表,操作命令及結果如下:

CREATE  TABLE  IF  NOT   EXISTS   tdb_goods_cates(
cate_id   SMALLINT  UNSIGNED  PRIMARY  KEY  AUTO_INCREENT,
cate_name   VARCHAR(40)    NOT    NULL
); 

  OK,我們的數據表創建成功。

 

 

 

  那么我們該如何插入數據呢,難道我們要一條一條去查找嗎,當然不用,一定會有其他的方法,我們可以對查找的分類進行分組來實現,下面我們來看一看我們該怎么寫?操作命令及結果如下:

SELECT  goods_cate  FROM  tdb_goods   GROUP  BY   goods_cate; 

  我們發現一共分了這么幾類,那么下面我們就要把這幾類寫到我們剛創建的那張數據表中。理論上有兩種方法,一種我們可以用INSERT語句逐條的去插入。這種比較麻煩,那么有沒有更簡單的方法嗎,當然有,我們可以使用之前我們提到過的INSERT…SELECT語句來實現,意思就是將查詢的結果寫入到我們指定的數據表中。

 

 

 

 

  下面我們就來嘗試一下這種方法,操作命令及結果如下:

INSERT   tdb_goods_cates(cate_name)    SELECT  goods_cate  FROM  tdb_goods  GROUP    BY     goods_cate;

  我們發現記錄插入成功,但是這里面還有一個問題,記錄現在我們已經插入成功了,但是我們根本就沒有使用過外鍵來實現。

 

 

 

  我們來查看一下,我們輸入SELECT * FROM tdb_goods\G;結果如下:

  我們發現在這張表中仍然存儲的是筆記本配件這些商品類別,而應該存儲的是商品類別名所對應的那個數字編號,所以我們現在就需要根據我們的分類表去更新我們的商品表,就是參照tdb_goods_cates去更新tdb_goods這張表。以前我們學的是單表更新,那么現在我們要參照一個表去更新另一個表,那么這里就涉及到多表更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM