mysql 执行语句小知识

摘要

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

小技能积累

  • 新增字段(包含注释)
#新增 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:已维护';
  • 修改字段 (包含注释)
ALTER TABLE mz_tab_test modify column  `url` varchar(120) NOT NULL DEFAULT '' COMMENT '链接'
  • 新增索引
#新增唯一索引
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 唯一索引';
  • 删除索引
# 索引名在前 ,表名在后
drop index idx_item_name on mz_tab_test ;
  • 创建新表,语句举例:(注意去掉 AUTO_INCREMENT )
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='品牌方数据表';
  • 删除重复数据,保留最新一条
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
);
  • 查询所有的索引
show INDEX from <表名> ;

▷ mysql 一个表数据转移到另外一个表的方法

  • 如果在同一个服务器上,新表不存在那可以直接创建新表并复制一份数据
	create table table2name select * from db1.tablename1;
  • 如果表已经存在,可以直接用如下语句
	insert into table2name select * from db1.tablename1;

参考: mysql一个表数据转移到另外一个表的2种方法4种情况


▷ 提取一个表中的字段,插入到另一张表中

insert into table_target(id,create_time) select id,createtime from table_other;

参考: mysql 将一个表的数据导入到另一个表


附录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 "SHOW FULL PROCESSLIST" 命令查看正在执行MySQL 事务。 这条命令会返回一个结果集,其中包含了以下字段: - `Id`: 进程 ID。 - `User`: 执行该进程的用户名。 - `Host`: 执行该进程的客户端的主机名和 IP 地址。 - `db`: 该进程正在操作的数据库名称。 - `Command`: 该进程的状态,如果是查询操作,这里会显示 "Query"。 - `Time`: 该进程所消耗的时间,以秒为单位。 - `State`: 该进程的额外状态信息。 - `Info`: 该进程正在执行的 SQL 查询。 示例 ``` mysql> SHOW FULL PROCESSLIST; +----+------+-----------+------+---------+------+----------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+----------------------------------------------------------------+ | 5 | root | localhost | test | Sleep | 0 | | NULL | | 6 | root | localhost | test | Query | 0 | starting | SELECT * FROM t1 | +----+------+-----------+------+---------+------+----------------------------------------------------------------+ ``` 上述为正在执行的查询进程的结果 ### 回答2: 要查看MySQL正在执行的事务,可以使用以下两种方法: 方法一:使用SHOW ENGINE INNODB STATUS命令 1. 在MySQL命令行界面输入SHOW ENGINE INNODB STATUS;命令。 2. 找到输出中的"---TRANSACTION"段落,其中包含了正在执行的当前事务的相关信息。 3. 可以通过查看该段落中的各个字段来获取更多的事务信息,例如:事务的ID、事务的状态、锁定的对象等。 方法二:使用INFORMATION_SCHEMA数据库 1. 在MySQL命令行界面输入USE INFORMATION_SCHEMA;命令切换到INFORMATION_SCHEMA数据库。 2. 输入SELECT * FROM INNODB_TRX;命令来查看当前正在执行的事务。该命令将返回一个结果集,其中包含了正在执行的所有事务的相关信息。 3. 结果集中的各个字段代表不同的事务属性,例如:trx_id表示事务的ID,trx_state表示事务的状态,trx_started表示事务的开始时间等。 通过以上两种方法,你可以查看MySQL正在执行的事务,并获取到相关的字段说明。这些信息可以帮助你了解当前数据库中事务的状态和执行情况,以便进行必要的监控和管理。 ### 回答3: 在MySQL中,可以通过执行一些特定的SQL语句来查看正在执行的事务和相关字段的详细信息。 1. 查看正在执行的事务: 通过执行以下SQL语句,可以查看当前正在执行的事务信息: ``` SHOW ENGINE INNODB STATUS\G ``` 在返回的结果中,找到“TRANSACTIONS”一节,可以看到当前正在执行的事务以及它们的相关信息,例如事务ID、事务状态、事务创建时间等。 2. 查看事务的字段说明: 对于正在执行的事务,默认情况下,MySQL并不提供直接查看字段说明的功能。通常情况下,只能通过掌握数据库结构的知识来了解事务对应的表和字段信息,或者查看相关的数据库文档。 然而,在一些情况下,可以通过查询系统表来获取一些相关的字段信息,注意这种方式只能获取表的一些基本信息,无法获取详细的字段说明。 例如,可以执行以下SQL语句,查询指定表的字段信息: ``` DESCRIBE 表名; ``` 或者执行以下SQL语句,查询指定表的字段、类型以及其他信息: ``` SHOW COLUMNS FROM 表名; ``` 返回的结果中,可以看到表的字段名以及每个字段的相关信息,例如字段类型、是否允许为空、默认值等。 总之,查看正在执行的事务可以使用SHOW ENGINE INNODB STATUS命令,而查看字段说明主要通过查询系统表来获取部分基本字段信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值