使用sql设置时区
show variables like '%time_zone%'; set global time_zone = '+8:00'; set time_zone = '+8:00'; flush privileges; select curtime();
设置不区分大小写
show VARIABLES like '%lower_case_table_names%'; -- 查询当前数据库是否区分大小写 1是不区分大小写0是区分大小写
set GLOBAL lower_case_table_names=1; -- 设置大小写状态
也直接修改my.cnf配置文件中的lower_case_table_names
docker 中修改
1、挂载容器的文件到宿主机(不挂载的话直接去/etc/mysql/conf.d/mysql.cnf 修改但是需要安装vi工具)
volumes:
- /usr/local/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
然后mysql.cnf内容
[mysqld]
lower_case_table_names=1
2、在docker-compose启动是添加设置
command: --lower_case_table_names=1
version: '3'
services:
mysql:
container_name: mysql
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: possword
command: --lower_case_table_names=1
ports:
- 3306:3306
volumes:
- /home/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf #前面是宿主机地址:后面是容器地址
设置MySQL的远程访问
select user,host from user; -- 查询user的用户和可以访问的主机
update user set host='%' where user='root'; -- 把root用户设置为所有主机都可以访问,若不想设置root用户也可以自己创建一个用户,但是要注意权限
flush privileges; -- 刷新 MySQL 的权限表,使更改后的权限立即生效
检测端口是否被占用
netstat -ano|findstr 8080 检测端口是否被占用
taskkill /pid 2520 /F 强制关闭pid为2520的线程
EXPLAIN关键字
id: 执行计划中每个操作的唯一标识符。如果查询涉及多个表,每个操作都有一个唯一的id。select_type: 操作的类型,表示查询的种类,常见的值包括:SIMPLE: 简单查询,不包含子查询或UNION操作。PRIMARY: 复杂查询的最外层查询。SUBQUERY: 子查询。DERIVED: 从其他表派生的子查询。UNION: UNION操作的第二个或后续查询。
table: 表名,表示查询操作所涉及的表。type: 访问类型,表示如何访问表。常见的值包括:ALL: 全表扫描,需要遍历整个表。index: 索引全扫描,遍历整个索引树。range: 范围扫描,根据范围条件检索索引。ref: 使用非唯一索引或唯一索引前缀进行查找。eq_ref: 使用唯一索引查找。const: 表只有一行,通过索引快速取得结果。system: 表只有一行(系统表)。
possible_keys: 可能使用的索引。key: 实际使用的索引。key_len: 使用索引的长度,表示索引使用的字节数。ref: 列与索引之间的关系。rows: 估计需要扫描的行数。Extra: 额外的信息,常见的值包括:Using index: 使用了覆盖索引,查询结果可以直接从索引中获取,无需回表操作。Using where: 在存储引擎层面应用了WHERE过滤条件。Using temporary: 查询需要使用临时表来处理中间结果。Using filesort: 查询需要进行文件排序操作。Using join buffer: 使用了连接缓冲区。
CREATE DATABASE test CHARACTER SET utf8 COLLATE utf8_general_ci; 创建数据库
DROP DATABASE test;删除数据库
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password'; 创建用户
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'localhost'; 赋予所有权限
FLUSH PRIVILEGES; 刷新
函数:
DATE_SUB(CURDATE(), INTERVAL 7 DAY) 时间减去7天
DATEDIFF(CURDATE(), lately_login_time) 查询时间天数
TRUNCATE(price,0)截断数字
ANY_VALUE()
用途
ANY_VALUE()函数通常用于在包含GROUP BY子句的查询中,它告诉数据库从该列中任意选择一个值(通常是从分组中的第一行获取),从而避免错误。
特点
ANY_VALUE()函数本身的开销很小,因为它只需要从分组中取一个值(通常是第一个遇到的值),它返回的值是不确定的。它不会增加额外的排序或聚合计算负担
GROUP_CONCAT()
用途
GROUP_CONCAT()函数用于将分组内的多个行的某个列的值连接成一个字符串。可以指定分隔符(默认为逗号),也可以对连接的值进行排序,去重。
特点
GROUP_CONCAT()函数需要收集分组内所有行的相关值,然后进行连接。如果分组很大,或者需要连接的值很长,那么它会消耗较多的内存和CPU。特别是当使用了DISTINCT或ORDER BY子句时,还需要在分组内进行去重和排序,这可能会进一步增加性能开销
长度限制
GROUP_CONCAT()的结果长度受`group_concat_max_len`系统变量限制(默认1024字节),如果结果被截断,可能需要调整该参数,但要注意可能的内存消耗。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://jiaheming.cn/2023/05/mysql-2/

共有 0 条评论