mysql表继承怎么写 mysql表内容( 二 )


另外需要注意的一点是,从mysql 8.0开始,mysql默认的 CHARSET 已经不再是 Latin1 了,改为了 utf8mb4 ( 参考链接 ),并且默认的COLLATE也改为了 utf8mb4_0900_ai_ci。utf8mb4_0900_ai_ci 大体上就是 unicode 的进一步细分,0900 指代unicode比较算法的编号( Unicode Collation Algorithm version), ai 表示accent insensitive(发音无关),例如e, è, é, ê 和 ?是一视同仁的 。相关参考链接1 ,相关参考链接2
设置COLLATE可以在示例级别、库级别、表级别、列级别、以及SQL指定 。实例级别的COLLATE设置就是mysql配置文件或启动指令中的collation_connection系统变量 。
库级别设置COLLATE的语句如下:
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
如果库级别没有设置CHARSET和COLLATE,则库级别默认的CHARSET和COLLATE使用实例级别的设置 。在mysql8.0以下版本中 , 你如果什么都不修改,默认的CHARSET是Latin1,默认的COLLATE是latin1_swedish_ci 。从mysql8.0开始,默认的CHARSET已经改为了utf8mb4 , 默认的COLLATE改为了utf8mb4_0900_ai_ci 。
表级别的COLLATE设置,则是在CREATE TABLE的时候加上相关设置语句,例如:
如果表级别没有设置CHARSET和COLLATE,则表级别会继承库级别的CHARSET与COLLATE 。
列级别的设置,则在CREATE TABLE中声明列的时候指定,例如
如果列级别没有设置CHARSET和COLATE,则列级别会继承表级别的CHARSET与COLLATE 。
【mysql表继承怎么写 mysql表内容】 最后 , 你也可以在写SQL查询的时候显示声明COLLATE来覆盖任何库表列的COLLATE设置,不太常用,了解即可:
如果全都显示设置了 , 那么优先级顺序是 SQL语句列级别设置表级别设置库级别设置实例级别设置 。也就是说列上所指定的COLLATE可以覆盖表上指定的COLLATE,表上指定的COLLATE可以覆盖库级别的COLLATE 。如果没有指定,则继承下一级的设置 。即列上面没有指定COLLATE,则该列的COLLATE和表上设置的一样 。

MYSQL中的COLLATE是什么?
怎样查看MySQL是否区分大小写1、mysql默认情况下是否区分大小写mysql表继承怎么写 , 使用show Variables like '%table_names'查看lower_case_table_namesmysql表继承怎么写的值,0代表区分,1代表不区分 。
2、mysql对于类型为varchar数据默认不区分大小写,但如果该字段以“*_bin”编码的话会使mysql对其区分大小写 。
3、mysql对于字段名的策略与varchar类型数据相同 。即mysql表继承怎么写:默认不区分大小写,但如果该字段是以“*_bin”编码的话会使mysql对其区分大小写 。
4、mysql对于表名的策略与varchar类型数据相同 。即mysql表继承怎么写:默认不区分大小写,但如果该表是以“*_bin”编码的话会使mysql对其区分大小写 。
5、如果按照第一项查看lower_case_table_names的值为0,但需要让mysql默认不区分大小写的话 , 需要在mysql配置文件中添加参数并重启mysql数据库 。mysql配置文件的修改内容如下mysql表继承怎么写:
[mysqld]
...
lower_case_table_names = 1
6、注意:表和字段的编码尽量继承数据库的编码(不明显指定即继承),以免引起混乱 。
LINUX下的MYSQL默认是要区分表名大小写的 ,而在windows下表名不区分大小写
让MYSQL不区分表名大小写的方法其实很简单:
1.用ROOT登录,修改/etc/my.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1

推荐阅读