MySql笔记

本文介绍了MySQL中的实用操作技巧,包括使用别名简化DELETE语句、创建存储过程进行数据清理及如何正确使用时间函数。此外,还探讨了在同一个SQL语句中避免对同一表进行SELECT和UPDATE/DELETE操作的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 1.MySql表delete语句支持别名的写法:

delete m  from  mgmt_entity_assoc as m where 1=1  and m.mgmt_entity_assoc_type_id='DEPLOY'  and  m.mgmt_entity_id_to='46962'

 

  • 2.mysql存储过程
delimiter $$

use `md_test`$$

drop procedure if exists `clearData`$$

create definer=`root`@`%` procedure `clearData`(in entity_type varchar(20))

begin
  declare sql_str varchar(2000);
  declare sql_or varchar(2000);
  
  # 删除 mgmt_entity_attribute
  set sql_str ='delete from mgmt_entity_attribute where mgmt_entity_id in ( select MGMT_ENTITY_ID from mgmt_entity where mgmt_entity_type_id =';
  #注意四个单引号表示一个一引号  
  set sql_str=concat(sql_str,'''',entity_type,''')') ;
  set @delSql = sql_str;
  prepare stmt from @delSql;
  execute stmt;
  
  
end $$

delimiter ;

 

调用存储过程

#调用
call clearData('VHOST');

#调用带有出参的存储过程
set @outp = '';
call clearData('VHOST',@outp);-- 清除数据库
select @outp
  •  MySql时间函数
mysql有几个时间函数now()、CURDATE()、CURTIME(),可以用来插入当前时。

NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。

以now()函数为例: insert into tablename (fieldname) values (now())

 


3.mysql删除数据问题

   下面这个sql 会报 :错误代码: 1093

You can't specify target table 'mgmt_entity' for update in FROM clause

原因是:不能先select出同一表中的某些值,再update/delete这个表(在同一语句中)  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值