随笔分类 - MySQL
摘要:之前一直用的Navicat,因为收费问题,所以在找可以替代的数据库管理工具,然后就发现了DBeaver,使用起来功能还是不错的,把遇到的2个问题记录下。 问题1: 点测试链接的时候,提示内部驱动错误,如下图。 解决方法: 创建连接时,需要设置服务器时区,可设置东八区:Etc/GMT-8,如下图。 问
阅读全文
摘要:邮件使用情况统计方法如下: DISTINCT用来排除重复的邮箱地址,domain是邮箱域名,mail_count是统计某域名下不重复的邮箱地址数量,mail_sum是统计某域名下所有邮箱地址数量,percent是统计某域名下不重复邮箱地址数量占总的不重复邮箱地址数量的百分比。
阅读全文
摘要:MySQL中常常会用到对日期的格式化,比如按某时间格式计算间隔,按某时间格式统计信息等等,所以整理了一下日期格式化的参数,可以根据自己的需求进行组合使用。使用例子如下: (1)SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); (2)SELECT DATE_
阅读全文
摘要:查询MySQL表的大小及索引大小可以通过系统库information_schema中的TABLES表来实现。 该表常用的一些字段: TABLE_SCHEMA:数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录行数DATA_LENGTH:表大小INDEX_LE
阅读全文
摘要:MySQL中查询一定时间间隔内的数据的方法比较常用,可以使用TO_DAYS、DATE_SUB等函数来实现。 TO_DAYS函数的作用是返回指定日期从0年开始计算的天数。 DATE_SUB函数的作用是通过指定日期减去指定间隔时间。 从而可以实现今天、昨天、最近7天(一周)、最近30天(1个月)、上个月
阅读全文
摘要:mysql中日期函数还是比较常用的。主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别。 NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间。 因为NOW()取自mysql的一个变量”TIMESTAMP”,而这个变量在语句开始执行的时候就设定好
阅读全文
摘要:group_concat()函数的参数是可以直接使用order by排序的。666。。下面通过例子来说明,首先看下面的t1表。 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高到底排序。可以这样写: SELECT username,GROUP_CONCAT(score O
阅读全文
摘要:MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。 1、如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY。 SELECT * FROM t1 WHERE use
阅读全文
摘要:问题: 代码中查询MySQL的结果集时报错,提示Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;刚开始以为是代码中格式化结果集中的日期报错,找了一遍发现并没有对日期进行格式化,发现是查询的结果集中某数据
阅读全文
摘要:问题: 开发中常使用Navicat查询数据库,并修改数据库中的值。今天发现查询结果为只读,不能修改。一般连表查不能修改我是知道的,但是单表查居然不能修改。 解决方法: 查了下,有说表是只读,也有说是权限不够。后来发现都不是,是因为该表没有设置主键。
阅读全文
摘要:查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率。最近在对项目中的一些sql进行优化,总结整理了一些方法。1、在表中建立索引,优先考虑where、group by使用到的字段。2、尽量避免使用select *,返回无用的字段会降...
阅读全文
摘要:问题: 在MySQL创建了一个批量插入的存储过程,在代码中调用的时候报错误信息: error code [1418];This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and...
阅读全文
摘要:问题: 今天在MySQL数据库删除重复数据的时候遇到了一个问题。如下脚本:DELETE FROM tempA WHERE tid IN (SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age) 会出现报错信息: You can't spec...
阅读全文
摘要:在存储过程中常看到declare定义的变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。 1、declare定义的变量类似java类中的局部变量,仅在方法中生效。即只在存储过程中的begin和end之间生效。 2、@set定义的变量,叫做会话变量,
阅读全文
摘要:使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。1、右键Navicat中的数据库→数据传输(Data Transfer)。2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)选择脚本存储的名称及位置,再在上面...
阅读全文
摘要:MySQL中可以将查询结果复制到另外的一张表中,复制的话通常有两种情况,一种是更新已有的数据,另一种是插入一条新记录。下面通过例子来说明。首先构建两个测试表。表t1:表t2:1、如果t2表中存在score值,将score更新到t1表中。方法如下:UPDATE t1,t2 SET t1.score...
阅读全文
摘要:sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就需要对通配符进行转义,有两种方式。如下:1、反斜杠是转义符,通过反斜杠来转义...
阅读全文