mysql使用小记

1.客户端工具的连接问题。

  客户端使用Mysql Workbench  默认连接几分钟就会超时,导致客户端就卡死了,半天才会反应过来。不像Sqlserver数据库默认长连接的,需要在工具里面设置下。  Edit-->Preferences-->SQL Editor

这个更正下,之前写的有问题,红色框住的意思:时间越短越好  这是设置的心跳时长  

2.调用存储过程

   使用   Call  存储过程名   

3.存储过程声明变量和把查询列赋值给变量。

   DECLARE userId INT default 0;
   DECLARE userName NVARCHAR(64);

   select  字段1 into 声明的变量1

   from 表1

   多字段写法:

   select   字段1,字段2   into 声明的变量1,声明的变量2

   from 表1

4.if语法

    IF 条件1
    THEN 
         ......
    ELSEIF  userType=2 THEN
         ......
    ELSEIF userType=3 THEN
    ......
    END IF;

5.获取服务器时间函数

   now()

6.创建存储过程

create procedure 存储过程名(参数)

7.存储过程传参数不能和字段一样

      SELECT 
        *
     FROM 表 WHERE A.abc=abc;   

8.mysql存储过程多余参数不能是DateTime类型的。

在navicat上远bai程连接MySQL,运行存du储过程时传入了一个时间zhi参数‘0000-00-00 00:00:00’,发生如下错误dao
1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'targetTime' at row 1
官方文档上说明zhuanMySQL允许将’0000-00-00’保存为“伪日期shu”,但是MySQL有一个NO_ZERO_DATE SQL模式,这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。执行SQL语句:
set global sql_mode='STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';

 

9.传入 "1,2,3,4,5,6,7" .需要Split之后去检索的方法

select * 
from Table  A
where A.Column regexp concat('[', replace('1,2,3,4,5,6,7',',','|'),']');

 

10.关联更新语句:

UPDATE table1 A

INNER JOIN table2 B

ON A.id=B.id

SET A.Name=B.Name

WHERE B.IsValid=1;

 

12.mysql关联表删除数据

有时候我们需要删除表中部分内容,或删除一个表中在另一个表中已经存在的内容,可以用以下方法:

1、delete from t1 where 条件;

2、delete t1 from t1, t2 where 条件;

3、delete t1, t2 from t1, t2 where 条件;

 

eg:

删除表t1已经在表t2中存在的数据:

DELETE t1 FROM table_1 t1, table_2 t2 WHERE t1.id=t2.id and t1.year=t2.year and t1.month=t2.month;

 

13.6位精度的时间戳

select unix_timestamp('2020-12-11 15:19:06.821390');

 

14.将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。

select from_unixtime(1607671146.821390);

 

常见错误提示:

MySQL 错误1418 的原因分析及解决方法。

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法

这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。


在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;

注:语句需要在root用户下执行。

 

mysql删除表提示Cannot truncate a table referenced in a foreign key constraint解决办法

  • 删除之前先执行

删除外键约束

SET foreign_key_checks = 0

  • 删除完之后再执行

启动外键约束

SET foreign_key_checks = 1

 

mysql时间与字符串之间相互转换

1.时间转字符串

DATE_FORMAT(日期,格式字符串)

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

2.字符串转时间

STR_TO_DATE(字符串,日志格式)

SELECT STR_TO_DATE('2019-01-20 16:01:45', '%Y-%m-%d %H:%i:%s');

3.时间转时间戳

select unix_timestamp(now());

4.字符串转时间戳

select unix_timestamp('2019-01-20');  

5.时间戳转字符串

select from_unixtime(1451997924,'%Y-%d');

附日期格式如下:

%M 月名字(January……December)  
%W 星期名字(Sunday……Saturday)  
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
%Y 年, 数字, 4 位  
%y 年, 数字, 2 位  
%a 缩写的星期名字(Sun……Sat)  
%d 月份中的天数, 数字(00……31)  
%e 月份中的天数, 数字(0……31)  
%m 月, 数字(01……12)  
%c 月, 数字(1……12)  
%b 缩写的月份名字(Jan……Dec)  
%j 一年中的天数(001……366)  
%H 小时(00……23)  
%k 小时(0……23)  
%h 小时(01……12)  
%I 小时(01……12)  
%l 小时(1……12)  
%i 分钟, 数字(00……59)  
%r 时间,12 小时(hh:mm:ss [AP]M)  
%T 时间,24 小时(hh:mm:ss)  
%S 秒(00……59)  
%s 秒(00……59)  
%p AM或PM  
%w 一个星期中的天数(0=Sunday ……6=Saturday )  
%U 星期(0……52), 这里星期天是星期的第一天  
%u 星期(0……52), 这里星期一是星期的第一 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值