视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
常用的MySQL语句整理_MySQL
2020-11-09 19:55:09 责编:小采
文档


MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找。

好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘记,本文只是一篇笔记而已。

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.ID

3.两表的关联更新

UPDATE T_ROLE_USER AS A,
 (
 SELECT
 ID
 FROM
 T_USER
 WHERE
 DEPARTID IN (
 SELECT
 ID
 FROM
 T_DEPART
 WHERE
 LENGTH(ORG_CODE) = 9
 )
) AS B
SET A.ROLEID = '123456'
WHERE
 A.USERID = B.ID

4.自己和自己关联更新

UPDATE T_DEPART AS A,
 (
 SELECT
 ID,
 SUBSTRING(ORG_CODE, 1, 6) ORG_CODE
 FROM
 T_DEPART
 WHERE
 LENGTH(ORG_CODE) = 8
 AND PARENT_DEPART_ID IS NOT NULL
) AS B
SET A.PARENT_DEPART_ID = B.ID
WHERE
 SUBSTRING(A.ORG_CODE, 1, 6) = B.ORG_CODE

5.两表关联删除,将删除两表中有关联ID并且T2表NAME为空的两表记录

DELETE A,B FROM T1 AS A LEFT JOIN T2 AS B ON A.TID = B.ID WHERE B.NAME IS NULL

6.将统计结果插入到表

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_USER
 WHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d') = '2012-06-09'
 GROUP BY PARENT_ORG_ID
 ) M

7. 三表关联更新

UPDATE SE_STAT_USER A,
 (
 SELECT
 USER_ID,
 SUM(INVEST_ORG_COUNT + FINANCIAL_ORG_COUNT + INTERMEDIARY_ORG_COUNT + ENTERPRISE_COUNT) AS COMMON_COUNT
 FROM SE_STAT_USER
 WHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d') = '2012-06-09'
 GROUP BY USER_ID
) B,
 (
 SELECT
 USER_ID,
 SUM(ESTABLISH_COUNT + STOCK_COUNT + MERGER_COUNT + ACHIEVE_COUNT) AS PROJECT_COUNT
 FROM SE_STAT_USER
 WHERE 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,
 (
 SELECT
 P.CHANNEL,
 COUNT(P.CONT_ID) AS CONT_COUNT,
 C.CUST_MGR_ID
 FROM
 (
 SELECT
 CHANNEL,
 CONT_ID
 FROM SK_PROJECT
 WHERE PROJECT_STATUS = 6
 AND DATE_FORMAT(AUDIT_TIME, '%Y-%m-%d') = '2012-06-11'
 ) p
 INNER JOIN SE_CONTRACT C ON P.CONT_ID = C.CONT_ID
 GROUP BY P.CHANNEL, C.CUST_MGR_ID
) B
SET
 A.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
WHERE
 A.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修改列名。

ALTER TABLE PROJECT CHANGE DICT_ID DICT_ID1 INT NOT NULL,
 MODIFY PROJECT_STATUS TINYINT NOT NULL COMMENT 'xxx';
13.修改自增字段开始值

不同数据库此属性不一样,MYSQL 与ORACLE,MS SQL SERVER不一样,见具体文档

http://www.w3school.com.cn/sql/sql_autoincrement.asp

自增

ALTER TABLE persons AUTO_INCREMENT=1;

下载本文
显示全文
专题