创建表
-- 创建表,并带上从1开始自增的主键id
CREATE TABLE table_name(
`id` int(11) NOT NULL AUTO_INCREMENT,
`top_parent_id` varchar(10) DEFAULT NULL COMMENT '厂区t3\\t4\\t5',
`title` varchar(50) DEFAULT NULL COMMENT '区域',
`model` varchar(50) DEFAULT NULL COMMENT '化学品名称',
`entry` varchar(50) DEFAULT NULL COMMENT 'tank编号',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
查看表
SHOW CREATE TABLE report_jiejing_exh
增加字段
# 在第一位添加字段site,设置默认值't5'
ALTER TABLE report_jiejing_exh ADD site VARCHAR(10) NOT NULL DEFAULT 't5' FIRST;
# 在指定字段后面增加字段
ALTER TABLE 'stu' ADD 'age' INT NOT NULL AFTER 'name' COMMENT '备注';
修改字段位置
ALTER TABLE 'tablename' MODIFY 'name' VARCHAR(20) AFTER|FIRST columnName ;
修改字段类型
ALTER TABLE report_jiejing_exh MODIFY title VARCHAR(64);
ALTER TABLE report_jiejing_exh MODIFY model VARCHAR(64);
ALTER TABLE report_jiejing_exh MODIFY entry VARCHAR(64);
表名查字段
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'warning_setting';
删除字段
alter table report_jiejing_exh drop column site;
查询存储过程里面出现的字符串
SELECT * FROM information_schema.routines
WHERE routine_type = 'PROCEDURE'
AND UPPER(routine_definition) LIKE '%REPORT_JIEJING_EXH%';
字符串拼接
SELECT CONCAT('2024','-','01','-','01')
字符串替换
-- 把所有的#替换成_
SELECT REPLACE('W#8_AL_STR_AIN_LT02_001', '#', '_') ;
-- 把字符串的第二位替换成_
select CONCAT(SUBSTRING('W#8_AL_STR_AIN_LT02_001', 1, 1), '_', SUBSTRING('W#8_AL_STR_AIN_LT02_001', 3));
日期转字符串
SELECT DATE_FORMAT(NOW(),'%Y'),
DATE_FORMAT(NOW(),'%Y%m'),
DATE_FORMAT(NOW(),'%Y%m%d'),
DATE_FORMAT(NOW(),'%Y-%m-%d'),
DATE_FORMAT(NOW(),'%Y-%m-%d %H'),
DATE_FORMAT(NOW(),'%Y-%m-%d %H:%M:%S')
日期加减
-- 加一天
SELECT DATE_ADD('2024-02-29',INTERVAL 1 DAY);
SELECT DATE_SUB('2024-02-29',INTERVAL -1 DAY);
-- 减一天
SELECT DATE_ADD('2024-02-29',INTERVAL -1 DAY);
SELECT DATE_SUB('2024-02-29',INTERVAL 1 DAY);
判断字符串是否包含另一个字符串
select instr('马斯克','马')
查看版本
SELECT @@version;
创建存储过程
DELIMITER $$
USE `ems`$$
DROP PROCEDURE IF EXISTS `report_chem_day`$$
CREATE DEFINER=`root`@`%` PROCEDURE `report_chem_day`(IN `dateTimekey` VARCHAR(20))
COMMENT '#备注'
BEGIN
DECLARE pv_t3 FLOAT; #参数
DECLARE pv_t4 FLOAT; #参数
SET dateTimekey = LOWER(dateTimekey); #输入参数转为小写
select 't4' into pv_t3 ;
select 2 into pv_t4 ;
update Report_Used_Param set site = pv_t3 where id = pv_t4;
IF(dateTimekey='' OR dateTimekey='2024-01-01') THEN
update Report_Used_Param set site = pv_t3 where id = pv_t4;
END IF;
END$$
DELIMITER ;
报错
The total number of locks exceeds the lock table size
- MySQL的临时表过小也就是tmp_table_size
- MySQL的innod缓冲池过小也就是innodb_buffer_pool_size
--查看缓存
show global variables like "%tmp%";
SHOW global VARIABLES LIKE '%innodb_buffer_pool_size%';
--临时设置缓存
SET GLOBAL innodb_buffer_pool_size=1024*1024*1024
SET GLOBAL tmp_table_size =1024*1024*1024
参考自:https://blog.csdn.net/weixin_42096792/article/details/118146269