MySQL隨筆記
阿新 • • 發佈:2018-11-28
目錄
1.備份
- create table dim_vcs_tmp as select * from dim_vcs; //將表dim_vcs表結構和資料複製到dim_vcs_tmp,自動建立表dim_vcs_tmp。
- 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; //寫入一列常量。 - 利用dump工具備份mysqldump -h15.75.7.133 -uroot -p dbname table1 table2.... > /home/test.sql
2.重新命名
- RENAME TABLE dim_vcs_sxjcjda_1121_test to dim_vcs_sxjcjda_1121_altercoordinate;
3.擷取
- UPDATE dim_vcs_sxjcjda_1121_1 set sbqjbh=SUBSTRING(sbqjbh,1,9); //將sbqjbh從第一位擷取到第九位,目的是清除部分整數型 資料匯入資料庫時產生 .0的字尾。有許多個相同功能的函式。
4.查詢重複的資料
- 查詢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.刪除
- 當你不再需要該表時, 用 drop;
當你仍要保留該表,但要刪除所有記錄時, 用 truncate;
當你要刪除部分記錄時,用 delete,但總是得帶上where condition;