1. 程式人生 > >MySQL隨筆記

MySQL隨筆記

目錄

1.備份

2.重新命名

3.擷取

4.查詢重複的資料


1.備份

  1. create table dim_vcs_tmp as select * from dim_vcs;  //將表dim_vcs表結構和資料複製到dim_vcs_tmp,自動建立表dim_vcs_tmp。
  2. create table dim_vcs_tmp like dim_vcs;  //先將表結構以及索引複製過來。
    insert into table dim_vcs_tmp select * from dim_vcs;//再將資料複製過來,改方法更規範一點。
        其他用法 insert into dim_vcs_tmp(a,b,c) select a,b,5 from dim_vcs;  //寫入一列常量。
  3. 利用dump工具備份mysqldump -h15.75.7.133 -uroot -p dbname table1 table2....   > /home/test.sql

2.重新命名

  1. RENAME TABLE dim_vcs_sxjcjda_1121_test to dim_vcs_sxjcjda_1121_altercoordinate;

3.擷取

  1. UPDATE dim_vcs_sxjcjda_1121_1 set sbqjbh=SUBSTRING(sbqjbh,1,9);  //將sbqjbh從第一位擷取到第九位,目的是清除部分整數型 資料匯入資料庫時產生 .0的字尾。有許多個相同功能的函式。

4.查詢重複的資料

  1. 查詢sbqjbh重複的98條資料中,但jd、wd不同的12條資料。
    1.先將sbqjbh, sbqyxtmc, jd, wd都相同的86個sbqjbh過濾出來SELECT sbqjbh FROM ( SELECT sbqjbh, sbqyxtmc, jd, wd FROM dim_vcs_sxjcjda_1121_1 GROUP BY sbqjbh, sbqyxtmc, jd, wd HAVING COUNT( * ) > 1 ) b;
    2.取出sbqjbh重複的98條資料SELECT sbqjbh FROM dim_vcs_sxjcjda_1121_1 GROUP BY sbqjbh HAVING COUNT( * ) > 1
    3.用not in過濾出座標系不同的12個點位資訊。
    4.將座標系不同的12個點位資訊在全表中找出來。
    SELECT  sbqjbh
            ,sbqyxtmc
            ,jd
            ,wd
    FROM    dim_vcs_sxjcjda_1121_1 a
    WHERE   a.sbqjbh IN ( SELECT sbqjbh FROM ( SELECT sbqjbh FROM dim_vcs_sxjcjda_1121_1 GROUP BY sbqjbh HAVING COUNT( * ) > 1 ) b WHERE b.sbqjbh NOT IN ( SELECT sbqjbh FROM ( SELECT sbqjbh, sbqyxtmc, jd, wd FROM dim_vcs_sxjcjda_1121_1 GROUP BY sbqjbh, sbqyxtmc, jd, wd HAVING COUNT( * ) > 1 ) b ) )
    ORDER BY sbqjbh
    ;

5.刪除

  1. 當你不再需要該表時, 用 drop;
    當你仍要保留該表,但要刪除所有記錄時, 用 truncate;
    當你要刪除部分記錄時,用 delete,但總是得帶上where condition;