唐宋元明清 唐宋元明清
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL琐碎知识点
    • 国产数据库

      • 达梦数据库
      • 华为高斯数据库
    • Redis

      • Redis命令学习
    • Excel

      • Excel技巧
    • 数据库
    • SQL非常规用法
    • SQL练习题
    • 数据库
    • MySQL
    Ai
    2022-03-25
    目录

    MySQL琐碎知识点

    # MySQL 大小写敏感问题

    # 不同系统下的MySQL

    MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。

    # 修改大小写敏感
    -- 应在创建数据库的时候就设置好,否则就得单个表,单个字段进行修改
    -- 查看utf8mb4的校对规则
    -- SHOW COLLATION LIKE 'utf8mb4\_%';
    ALTER TABLE `aa` MODIFY COLUMN `ID` VARCHAR(38) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL;
    

    每个字符集有一个默认校对规则,例如,utf8默认校对规则是utf8_general_ci.并存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感),_cs(大小写敏感)或_bin(二元/大小写也敏感)结束

    # MySQL 的 STR_TO_DATE 函数

    奇奇怪怪的行为

    -- 错误日期 union all 时会变成 0000-00-00(正常日期不会),但是单独查询不报错
    select STR_TO_DATE('2022-04-31', '%Y-%m-%d') union all
    select STR_TO_DATE('2022-02-30', '%Y-%m-%d') union all
    select STR_TO_DATE('2022-02-31', '%Y-%m-%d');
    

    STR_TO_DATE函数问题 (opens new window)

    # MySQL实现类似DENSE_RANK()效果

    前提是子查询是按该字段排序过的,否则不能实现该结果

    数据

    | weibo_id         | weight               | id   | RN   | PERT_OLD |
    | 4524098644993942 | 0.253893631002748370 |    1 | 18   |        1 |
    | 4524111164205859 | 0.093070061064090660 |    4 | 19   |        4 |
    | 4524138758532594 | 0.015839159909128677 |   16 | 20   |       16 |
    | test100          | 0.500000000000000000 |   -1 | 21   |       -1 |
    | test101          | 0.500000000000000000 |   -1 | 21   |       -1 |
    | test102          | 0.500000000000000000 |   -2 | 22   |       -2 |
    | test103          | 0.500000000000000000 |   -2 | 22   |       -2 |
    | test104          | 0.500000000000000000 |   -3 | 23   |       -3 |
    | test106          | 0.500000000000000000 |   -5 | 24   |       -5 |
    | test107          | 0.500000000000000000 |    1 | 25   |        1 |
    
    SELECT T.*  
           ,@R := case WHEN @RANK = T.id THEN @R ELSE @R + 1 END AS RN
           ,@RANK := T.id AS PERT_OLD                                  
      FROM topn T, ( SELECT @R := 0, @RANK := '' ) B 
    
    -- 应该为
    SELECT T.*  
           ,@R := case WHEN @RANK = T.id THEN @R ELSE @R + 1 END AS RN
           ,@RANK := T.id AS PERT_OLD                                  
      FROM (select * from topn order by id) T, ( SELECT @R := 0, @RANK := '' ) B 
    

    # MySQL创建用户,分配远程连接权限

    # 创建数据库创建用户,时其可以远程访问(并且设置密码类型):
    create user 'banana'@'%' identified with mysql_native_password by 'banana';
    
    # 如果已经有用户,设置为可远程访问,可以使用:
    alter user 'banana'@'%' identified with mysql_native_password by 'banana';
    
    # 设置可以读写刚创建的demo数据库:
    grant all privileges on leetcode.* to 'banana'@'%' with grant option;
    
    # 刷新缓存:
    flush privileges;
    

    # PostgreSQL 和 MySQL 的区别(MySQL的一些缺点)

    postgresql和mysql的区别 (opens new window)

    # FULL JOIN修改(兼容MySQL)

    mysql关于多个full join的处理方式 (opens new window)

    编辑 (opens new window)
    上次更新: 2023/11/07, 15:27:19
    与MySQL语法区别
    达梦数据库

    ← 与MySQL语法区别 达梦数据库→

    Theme by Vdoing | Copyright © 2022-2025 Ai | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×