经常使用的MySQL语句整理
生活随笔
收集整理的這篇文章主要介紹了
经常使用的MySQL语句整理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文參考:http://www.blogjava.net/bolo
部分自己補充,長期更新
MySQL的SQL語句寫法,除了那些主要的之外,另一些也算比較經常使用的,這里記錄下來,以便以后查找。
好記性不如爛筆頭,這話說的太有道理了。一段時間不寫它,還真easy忘記,本文僅僅是一篇筆記而已。
1.將數據從T1表導入到T2表
INSERT INTO T2 (C1,C2) SELECT C1,C2 FROM T1 [WHERE C1 = XX AND C2 = XX ORDER BY C1]2.使用T2表的NAME來更新T1表的NAME
UPDATE T1 AS A, T2 AS B SET A.NAME = B.NAME WHERE A.TID = B.ID3.兩表的關聯更新
UPDATE T_ROLE_USER AS A,(SELECTIDFROMT_USERWHEREDEPARTID IN (SELECTIDFROMT_DEPARTWHERELENGTH(ORG_CODE) = 9) ) AS B SET A.ROLEID = '123456' WHEREA.USERID = B.ID4.自己和自己關聯更新
UPDATE T_DEPART AS A,(SELECTID,SUBSTRING(ORG_CODE, 1, 6) ORG_CODEFROMT_DEPARTWHERELENGTH(ORG_CODE) = 8AND PARENT_DEPART_ID IS NOT NULL ) AS B SET A.PARENT_DEPART_ID = B.ID WHERESUBSTRING(A.ORG_CODE, 1, 6) = B.ORG_CODE5.兩表關聯刪除,將刪除兩表中有關聯ID而且T2表NAME為空的兩表記錄
DELETE A,B FROM T1 AS A LEFT JOIN T2 AS B ON A.TID = B.ID WHERE B.NAME IS NULL6.將統計結果插入到表
INSERT INTO SE_STAT_ORG (RECORD_DATE,ORG_ID,ORG_NAME,SIGN_CONT_COUNT,SIGN_ARRI_CONT_COUNT,SIGN_CONT_MONEY,SIGN_ARRI_CONT_MONEY,TOTAL_ARRI_CONT_COUNT,TOTAL_ARRI_MONEY,PUBLISH_TOTAL_COUNT,PROJECT_COUNT ) SELECT* FROM(SELECT'2012-06-09' RECORD_DATE,PARENT_ORG_ID,PARENT_ORG_NAME,SUM(SIGN_CONT_COUNT) SIGN_CONT_COUNT,SUM(SIGN_ARRI_CONT_COUNT) SIGN_ARRI_CONT_COUNT,SUM(SIGN_CONT_MONEY) SIGN_CONT_MONEY,SUM(SIGN_ARRI_CONT_MONEY) SIGN_ARRI_CONT_MONEY,SUM(TOTAL_ARRI_CONT_COUNT) TOTAL_ARRI_CONT_COUNT,SUM(TOTAL_ARRI_MONEY) TOTAL_ARRI_MONEY,SUM(PUBLISH_TOTAL_COUNT) PUBLISH_TOTAL_COUNT,SUM(PROJECT_COUNT) PROJECT_COUNT,FROM SE_STAT_USERWHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d') = '2012-06-09'GROUP BY PARENT_ORG_ID) M7. 三表關聯更新
UPDATE SE_STAT_USER A,(SELECTUSER_ID,SUM(INVEST_ORG_COUNT + FINANCIAL_ORG_COUNT + INTERMEDIARY_ORG_COUNT + ENTERPRISE_COUNT) AS COMMON_COUNTFROM SE_STAT_USERWHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d') = '2012-06-09'GROUP BY USER_ID ) B,(SELECTUSER_ID,SUM(ESTABLISH_COUNT + STOCK_COUNT + MERGER_COUNT + ACHIEVE_COUNT) AS PROJECT_COUNTFROM SE_STAT_USERWHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d') = '2012-06-09'GROUP BY USER_ID ) C SET A.COMMON_COUNT = B.COMMON_COUNT, A.PROJECT_COUNT = C.PROJECT_COUNT WHERE A.USER_ID = B.USER_ID AND A.USER_ID = C.USER_ID AND DATE_FORMAT(A.RECORD_DATE, '%Y-%m-%d') = '2012-06-09'8.帶條件的關聯更新
UPDATE SE_STAT_USER A,(SELECTP.CHANNEL,COUNT(P.CONT_ID) AS CONT_COUNT,C.CUST_MGR_IDFROM(SELECTCHANNEL,CONT_IDFROM SK_PROJECTWHERE PROJECT_STATUS = 6AND DATE_FORMAT(AUDIT_TIME, '%Y-%m-%d') = '2012-06-11') pINNER JOIN SE_CONTRACT C ON P.CONT_ID = C.CONT_IDGROUP BY P.CHANNEL, C.CUST_MGR_ID ) B SETA.STOCK_COUNT = CASE WHEN B.CHANNEL = 2 THEN B.CONT_COUNT ELSE 0 END,A.ESTABLISH_COUNT = CASE WHEN B.CHANNEL = 3 THEN B.CONT_COUNT ELSE 0 END,A.ACHIEVE_COUNT = CASE WHEN B.CHANNEL = 4 THEN B.CONT_COUNT ELSE 0 END, A.BRAND_COUNT = CASE WHEN B.CHANNEL = 5 THEN B.CONT_COUNT ELSE 0 END,A.MERGER_COUNT = CASE WHEN B.CHANNEL = 6 THEN B.CONT_COUNT ELSE 0 END WHEREA.USER_ID = B.CUST_MGR_ID AND DATE_FORMAT(A.RECORD_DATE, '%Y-%m-%d') = '2012-06-11'9. 加索引
ALTER TABLE PROJECT ADD INDEX INDEX_USER_ID (USER_ID),ADD INDEX INDEX_PROJECT_STATUS (PROJECT_STATUS);10.刪除列
ALTER TABLE PROJECT DROP COLUMN PROJECT_STATUS,DROP COLUMN EXPECT_RETURN,DROP COLUMN CURRENCY;11.添加列
ALTER TABLE PROJECT ADD COLUMN DICT_ID INT DEFAULT NULL COMMENT 'xxx' AFTER PROJECT_SITE,ADD COLUMN INTRODUCE TEXT DEFAULT NULL COMMENT 'xx' AFTER DICT_ID,ADD COLUMN STAGE INT DEFAULT NULL COMMENT 'xx' AFTER ID,ADD COLUMN ATTACH_URI VARCHAR(8) DEFAULT NULL COMMENT 'xxx' AFTER INTRODUCE; 12.改動列
一般用MODIFY改動數據類型。CHANGE改動列名。
不同數據庫此屬性不一樣,MYSQL 與ORACLE,MS SQL SERVER不一樣,見詳細文檔
http://www.w3school.com.cn/sql/sql_autoincrement.asp
自增
ALTER TABLE persons AUTO_INCREMENT=1;轉載于:https://www.cnblogs.com/yfceshi/p/7082365.html
總結
以上是生活随笔為你收集整理的经常使用的MySQL语句整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSharpGL(42)借助帧缓存实现渲
- 下一篇: C# 基础笔记