跳至主要內容

mysql

日常积累模板代码javamysql约 457 字大约 2 分钟

常用脚本

# 运行脚本
mysql -uroot -p123456 --force</test.sql
# 查询权限
show grants for 用户名;

常用sql

-- 查询字段是否重复
SELECT test FROM demo GROUP BY test HAVING COUNT( 1 ) > 1;

-- 查询列名
SELECT COLUMN_NAME FROM information_schema.columns 
WHERE table_schema = '数据库' AND table_name = '表名';

SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ", ") FROM information_schema.columns 
WHERE table_schema = '数据库' AND table_name = '表名';

-- 建库
CREATE DATABASE IF NOT EXISTS `demo` 
default charset utf8mb4 COLLATE utf8mb4_general_ci;
USE demo;

-- 加入列
alter table demo 
ADD `second_column` int(4) DEFAULT NULL 
COMMENT '' AFTER first_column;

-- 更新列(modify 只能修改列属性 change 可以修改表名)
alter table demo 
CHANGE COLUMN `old` `new` varchar(255) 
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 
COMMENT '' AFTER `id`;

-- 删除列 
alter table demo DROP COLUMN `test_column`;

-- 加入索引
alter table demo ADD KEY `idx_demo_id`
 (`business_id`, `business_type`) USING BTREE;

-- 更新表备注
alter table demo COMMENT = '招商#营销中心#园区表';

-- 更新表名
alter table demo rename AS test;

CRUD模板

-- 建表
DROP TABLE IF EXISTS `test`.`demo`;
CREATE TABLE IF NOT EXISTS `test`.`demo` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `string` varchar(128) DEFAULT NULL COMMENT '字符串',
  `amount` bigint(20) DEFAULT NULL COMMENT '金额,单位(分)',
  `percentage` decimal(5, 2) DEFAULT NULL COMMENT '百分比',
  `state` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态[true-启用]',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `create_user` varchar(255) NOT NULL DEFAULT '' COMMENT '创建人',
  `update_time` datetime COMMENT '修改时间',
  `update_user` varchar(255) COMMENT '修改人',
  PRIMARY KEY (`id`),
	KEY `idx_demo_string` (`string`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 
DEFAULT CHARSET=utf8mb4 comment='样例表';

-- 插入
INSERT INTO `test`.`demo` (`string`, `amount`, `state`) VALUES 
("string", 30, 1),
("string", 30, 1);

-- 关联插入
INSERT INTO `test`.`demo` (`string`, `amount`, `state`) 
select string, amount, 'state' from source;

-- 更新
update `test`.`demo` set string = 'str', amount = '1' where id = 1;
update `test`.`demo` set string = REPLACE(string, '1', '2');

-- 关联更新
UPDATE `test`.`demo` a LEFT JOIN `test`.`soruce` b ON a.id = b.id 
SET a.longitude = b.longitude, a.latitude = b.latitude

-- 查询是否为数字
SELECT * FROM TEST WHERE RESULT REGEXP '(^[0-9]+.[0-9]+$)|(^[0-9]$)';

-- 时间格式化
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');