问题: 当Mysql中建立的联合索引, 只要索引中的某一列的值为空时(NULL),即便其他的字段完全相同,也不会引起唯一索引冲突。 原因: Mysql官方文档中有这样的解释 A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occur...
天涯海角异孤星
问题: 当Mysql中建立的联合索引, 只要索引中的某一列的值为空时(NULL),即便其他的字段完全相同,也不会引起唯一索引冲突。 原因: Mysql官方文档中有这样的解释 A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occur...
假设有两个 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 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;
其中,lat1和lng1是第一个坐标的纬度和经度,lat2和lng2是第二个坐标的纬度和经度。your_table是你的表的名称,your_id是你要查询的记录的ID。
这个公式使用了余弦定理来计算两个点之间的距离。它将地球视为一个完美的球体,并假设它的半径为6371公里。
当还在用 laravel 8.x 的时候,在 migration 数据迁移文件中,给 mysql 表添加注释,需要增加一条 DB::statment( ) 语句:
DB::statement("alter table `test` comment '表注释'");
当你升级到 laravel 9.14.0 版本后,就不需要这样做了,可使用 $table->comment( ) 语句,如...
MySQL 5.7 以后新增了空间函数 ST_Distance_Sphere(g1, g2 [, radius])
返回坐标 g1 和 g2 在球面上的最短距离,单位是米。半径 radius 默认值为 6370986 米,即地球半径。
使用举例...
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;
别忘了执行这条指令,不然可能无法正常登录。
默认情况下,mysqldump 会以 utf8 作为字符集执行数据导出,如果记录中存在 emoji 表情符号,有可能导出后变成问号。 对于版本 5.5.4 以上的 mysqldump,可以手动指定 utf8mb4 作为默认字符集。
mysqldump --default-character-set=utf8mb4 ...
这样导出的 SQL 就能正常保存 emoji 符号了。
某天,给表新增一个字段,类型为 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在运行时也要消耗资源维护索引,因此索引并不是越多越好。一般两种情况下不建议建索引...
使用 sql 语句查询数据的时候,如果表里有好几个索引,mysql 优化器会自己判断使用哪个索引进行搜索。但是,where 条件比较复杂的时候,优化器使用的索引就不一定是最优索引了。
例如,最近有个需求,查询 4 月份每个商家的微信、支付宝营业额,sql 语句如下...