MySql笔记

  • 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这个表(在同一语句中)  

你可能感兴趣的:(mysql)