mysql 执行语句小知识

2021-09-06 10:06:18 浏览数 (2)

摘要

  • 新的一年换了一家正规团队 需要将开发过程中涉及到的数据库结构变化 在版本迭代上线前,统一整理给 DBA 运维人员 所以,便会接触到更多的 sql 语句,在此做下技能小备忘,欢迎品鉴 …

小技能积累

  • 新增字段(包含注释)
代码语言:javascript复制
#新增 decimal 类型字段
ALTER TABLE mz_tab_test ADD cost_count decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '任务成本';

#新增 tinyint 类型字段
ALTER TABLE mz_tab_test ADD income_tag tinyint(2) NOT NULL DEFAULT '0' COMMENT '收入维护标记 0:未维护,1:已维护';
  • 新增索引
代码语言:javascript复制
#新增唯一索引
ALTER TABLE mz_tab_test ADD UNIQUE `idx_task_id` (`task_id` ) COMMENT 'task_id 唯一索引';

#新增多个唯一索引
ALTER TABLE mz_tab_test ADD UNIQUE `idx_item_name_manager_id` (`item_name`, `manager_id` ) COMMENT 'idx_item_name_manager_id 唯一索引';
  • 删除索引
代码语言:javascript复制
# 索引名在前 ,表名在后
drop index idx_item_name on mz_tab_test ;
  • 创建新表,语句举例:(注意去掉 AUTO_INCREMENT )
代码语言:javascript复制
CREATE TABLE `mz_tab_brands` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `brand_name` varchar(20) NOT NULL DEFAULT '' COMMENT '品牌方名称',
  `status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '状态 1:启用,2:禁用',
  `createtime` int(10) NOT NULL DEFAULT '0' COMMENT '添加时间',
  `updatetime` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
  `admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '操作管理员ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='品牌方数据表';
  • 删除重复数据,保留最新一条
代码语言:javascript复制
delete from mz_tab_test where id not in (
        select t.max_id from
        (select max(id) as max_id from mz_tab_test group by task_id) as t
);

0 人点赞