mysql
约 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');