概述:本文主要包含mysql添加索引、删除索引、修改字段类型或长度、update语句等
文章目录
- 一、增删索引
- 二、增删改字段
- 三、修改语句
- 四、SQL 其他语法
一、增删索引
0、查看索引
SHOW INDEX FROM 表名;
1、添加主键索引
ALTER TABLE 表名 ADD PRIMARY KEY (COLUMN)
2、添加单个索引-非唯一
ALTER TABLE 表名 ADD INDEX INDEX_NAME (COLUMN)
##INDEX_NAME表示索引的名称,我的索引命名规范是 INDEX_字段名
3、添加联合索引-非唯一
ALTER TABLE 表名 ADD INDEX INDEX_NAME (COLUMN1,COLUMN2,COLUMN3)
## 多列的命名规范 INDEX_COLUMN1_COLUMN2_COLUMN3
4、添加单个索引-唯一
ALTER TABLE 表名 ADD UNIQUE INDEX UNIQUE_INDEX_NAME (COLUMN1)
##命名规范 UNIQUE_INDEX_COLUMN1
5、添加联合索引-唯一
ALTER TABLE 表名 ADD UNIQUE INDEX UNIQUE_INDEX_NAME(COLUMN1,COLUMN2);
##命名规范 UNIQUE_INDEX_COLUMN1_COLUMN2
6、建表时加联合索引-唯一
UNIQUE KEY `UNIQUE_INDEX_COLUMN1_COLUMN2` (`COLUMN1`,`COLUMN2`)
###这个是在使用CREATE TABLE建表时在尾部追加的,注意引号不能少
例如:
CREATE TABLE `XXXX` (
`ID` CHAR ( 24 ) NOT NULL COMMENT 'ID',
`LOG_SERIAL` CHAR ( 24 ) NOT NULL COMMENT 'XXX',
PRIMARY KEY ( `ID` ),
UNIQUE KEY `UNIQUE_INDEX_LOGSERIAL` ( `LOG_SERIAL` )
) ENGINE = INNODB DEFAULT CHARSET = UTF8 COMMENT = 'XXXX';
7、建表时加单个索引-唯一
UNIQUE KEY `UNIQUE_INDEX_COLUMN1` (`COLUMN1`)
8、删除索引
ALTER TABLE 表名 DROP INDEX 索引名;
###索引名不区分唯一还是普通,都能删
二、增删改字段
1、设置字段默认值为NULL
ALTER TABLE 表名 MODIFY 字段名 字段类型 DEFAULT NULL
例如:
ALTER TABLE MESSAGE
MODIFY CAPITAL_SERIAL VARCHAR(64) DEFAULT NULL COMMENT '业务流水';
2、设置不为NULL
ALTER TABLE 表名 MODIFY 字段名 字段类型 NOT NULL
例如:
ALTER TABLE MESSAGE
MODIFY CAPITAL_SERIAL VARCHAR(64) NOT NULL COMMENT '业务流水';
3、修改字段默认值 (修改是这个字段已经有默认值,然后把默认值改成其他默认值)
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值
4、删除字段的默认值
ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT
5、新增字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 COMMENT '备注';
例如:
ALTER TABLE MC_ORDER_JNL ADD COLUMN MC_BIZ_TYPE VARCHAR(8)
DEFAULT NULL COMMENT '交易业务类型' AFTER T_CODE;
6、修改字段长度
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 COMMENT '备注';
例如:
ALTER TABLE MULTIDB.MC_FLOW_ACCOUNT_INFO
MODIFY COLUMN RECE_JSON VARCHAR(2048) COMMENT '收方信息';
新增字段和修改字段长度
ALTER TABLE MC_ORDER_JNL MODIFY MERCH_SHORT_NAME VARCHAR(100) NULL COMMENT '商户简称',
ADD COLUMN SUB_PL_MID VARCHAR(20) NULL COMMENT '云账户扩展平台商户号' AFTER PL_MID;
7、修改多个字段长度
ALTER TABLE 表名
MODIFY COLUMN 字段名1 字段类型 COMMENT '备注1',
MODIFY COLUMN 字段名2 字段类型 COMMENT '备注2';
例如
ALTER TABLE MULTIDB.MC_FLOW_ACCOUNT_INFO
MODIFY COLUMN RECE_JSON VARCHAR(2048) COMMENT '收方信息',
MODIFY COLUMN PAYER_JSON VARCHAR(2048) COMMENT '付方信息';
删除字段
ALTER TABLE <表名> DROP <字段名>;
三、修改语句
1、更新语句
UPDATE 表名 SET 字段名=XX WHERE ID=XXX
例如
UPDATE PMCDB SET SEX = '1' WHERE ID = 1;
四、SQL 其他语法
1、case when then else end的用法
SELECT
case ##如果
when sex='1' then '男' ##sex='1',则返回值'男'
when sex='2' then '女' ##sex='2',则返回值'女'
else 0 ##其他的返回'其他’
end ##结束
from sys_user ##整体理解: 在sys_user表中如果sex='1',则返回值'男'如果sex='2',则返回值'女' 否则返回'其他’
update user_info
set
Emp_responsible_name =
case ##如果
when Emp_responsible_name ='1212' then '12121212' ##Emp_responsible_name=第一个参数则返回第二个参数
else Emp_responsible_name end ##否则 则为原值
where emp_code in ('200073','200935')
2、sql语法单列多行,拼接成单个字段
SELECT GROUP_CONCAT(DISTINCT(state))
FROM wechat_backend_channel where state in("zaap_wdbdyzz")
或者比如
select GROUP_CONCAT(registry_key separator ',') from xxl_job_registry where 1=1;
select GROUP_CONCAT(registry_key separator '":"') from xxl_job_registry where 1=1;