mysql 两个 timestamp 类型的字段相减问题

假设有两个 timestamp 类型的字段,值分别是: 字段a:2023-12-12 23:59:54 字段b:2023-12-13 00:01:04 这两个字段相差70秒,但是执行 SELECT b - a FROM table 这样的 SQL 语句,得到的结果却是764150。 原因是,timestamp 类型字段直接相减时,mysql 先把字段转换成数值...

分类至 MySQL
0条评论

mysql 5.6 计算两个地图坐标的距离

在MySQL 5.6中,可以使用以下公式来计算两个地图坐标之间的距离:

SELECT 
    (6371 * acos(cos(radians(lat1)) * cos(radians(lat2)) * 
    cos(radians(lng2) - radians(lng1)) + sin(radians(lat1)) * 
    sin(radians(lat2)))) AS distance
FROM 
    your_table
WHERE 
    your_table.id = your_id;

其中,lat1lng1是第一个坐标的纬度和经度,lat2lng2是第二个坐标的纬度和经度。your_table是你的表的名称,your_id是你要查询的记录的ID。

这个公式使用了余弦定理来计算两个点之间的距离。它将地球视为一个完美的球体,并假设它的半径为6371公里。

分类至 MySQL
0条评论

laravel 数据迁移文件给表添加注释

当还在用 laravel 8.x 的时候,在 migration 数据迁移文件中,给 mysql 表添加注释,需要增加一条 DB::statment( ) 语句:

DB::statement("alter table `test` comment '表注释'");

当你升级到 laravel 9.14.0 版本后,就不需要这样做了,可使用 $table->comment( ) 语句,如...

分类至 MySQL
0条评论

MySQL 命令行创建用户以及授权访问某个数据库

1、创建名为 demo 密码为 123456 的账户:

CREATE USER 'demo'@'%' identified by '123456';

其中 'demo'@'%' 其中的 % 表示该账户可以从任意 IP 登录,可以改成指定 IP 登录,如 'demo'@'192.168.1.125',或指定 IP 段 'demo'@'192.168.1.%'

2、把数据库 demodb 授权给该账户:

GRANT ALL PRIVILEGES ON `demodb`.* TO 'demo'@'%' WITH GRANT OPTION;

其中 `demodb`.* 表示授权数据库 demodb 的所有权限。

3、刷新权限缓存:

FLUSH PRIVILEGES;

别忘了执行这条指令,不然可能无法正常登录。

分类至 MySQL
0条评论

mysqldump 导出 emoji 表情损坏的解决办法

默认情况下,mysqldump 会以 utf8 作为字符集执行数据导出,如果记录中存在 emoji 表情符号,有可能导出后变成问号。 对于版本 5.5.4 以上的 mysqldump,可以手动指定 utf8mb4 作为默认字符集。

mysqldump --default-character-set=utf8mb4 ...

这样导出的 SQL 就能正常保存 emoji 符号了。

分类至 MySQL
0条评论

MySQL 字段类型 TEXT 不能设置默认值

某天,给表新增一个字段,类型为 TEXT,想设置默认值为空字符串,SQL 语句如下:

ALTER TABLE `table1` ADD `content` TEXT NOT NULL DEFAULT '';

执行的时候报错了: 

#1101 - BLOB, TEXT, GEOMETRY or JSON column 'content' can't have a default value

就是说,BLOB、TEXT、GEOMETRY、JSON 这些类型的字段是不能设置默认值的。这是由于 MySQL 5.7 默认启用了严格模式导致的。

...

分类至 MySQL
0条评论

MySQL 索引选择性

既然索引可以加快查询速度,那么是不是只要是查询语句需要,就建上索引?答案是否定的。因为索引虽然加快了查询速度,但索引也是有代价的:索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,另外,MySQL在运行时也要消耗资源维护索引,因此索引并不是越多越好。一般两种情况下不建议建索引...

分类至 MySQL
0条评论

sql 语句添加 force index() 强制使用指定索引

使用 sql 语句查询数据的时候,如果表里有好几个索引,mysql 优化器会自己判断使用哪个索引进行搜索。但是,where 条件比较复杂的时候,优化器使用的索引就不一定是最优索引了。

例如,最近有个需求,查询 4 月份每个商家的微信、支付宝营业额,sql 语句如下...

 

分类至 MySQL
0条评论

SQL 中 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 区别

sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。

1.inner join,在两张表进行连接查询时,只保留两张表中完全匹配的结果集。

2.left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。

3.right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

4.full join,在两张表进行连接查询时,返回左表和右表中所有没有匹配的行。

分类至 MySQL
0条评论