最新MySQL基础:CharacterSet和Collation,Java篇

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

======================================

show variables like ‘character_set_server’;

show variables like ‘collation_server’;

或者使用语句:

select @@character_set_server, @@collation_server;

MySQL Server默认的Charset和Collation

====================================

MySQL官方文档可查看默认的Charset和Collation:

  • <=5.7 doc MySQL Server 5.7或之前版本默认的Charset和Collation是: latin1 和 latin1_swedish_ci

  • 8.x doc MySQL Server 8.x(当前版本)默认的Charset和Collation是: utf8mb4 和 utf8mb4_0900_ai_ci

修改MySQL Server默认的Charset和Collation

======================================

修改默认值,需要重新编译源码。

cmake . -DDEFAULT_CHARSET=latin1

或者

cmake . -DDEFAULT_CHARSET=latin1 \

-DDEFAULT_COLLATION=latin1_german1_ci

指定MySQL Server的Charset和Collation

====================================

可以在启动MySQL Server的时候指定Server的Charset和Collation,下面三种方法是等效的:

mysqld # 默认的charset是utf8mb4, 而且 utf8mb4 默认的collation是 utf8mb4_0900_ai_ci

mysqld --character-set-server=utf8mb4

mysqld --character-set-server=utf8mb4 \

–collation-server=utf8mb4_0900_ai_ci

数据库(Database)的Charset和Collation

===================================

创建数据库的时候,如果没有指定character set 和 collation,会自动用MySQL Server的 character set和collation。

查看数据的Character Set和Collation

================================

USE db_name;

SELECT @@character_set_database, @@collation_database;

不想改变当前数据库的话,可以使用语句:

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME

FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ‘db_name’;

指定或修改数据库(Database)的Character Set和Collation

==============================================

创建db时指定:

CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

修改:

ALTER DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

表(Table)的Charset和Collation

==============================

如果创建表的时候没有指定表级别Charset和Collation,会默认使用数据库(Database)的Charset和Collation。

查看表(Table)的Charset和Collation

================================

SELECT

t.TABLE_SCHEMA,

t.table_name,

ccsa.*

FROM

information_schema.TABLES t,

information_schema.COLLATION_CHARACTER_SET_APPLICABILITY ccsa

WHERE ccsa.collation_name = t.table_collation

AND t.table_schema = “db_name”

AND t.table_name = “table_name”;

指定或修改表(Table)的Character Set和Collation

=========================================

CREATE TABLE tbl_name (column_list)

[[DEFAULT] CHARACTER SET charset_name]

[COLLATE collation_name]]

ALTER TABLE tbl_name

[[DEFAULT] CHARACTER SET charset_name]

[COLLATE collation_name]

列(Column)的Charset和Collation

===============================

如果创建表的时候没有指定列的Charset和Collation,会默认使用表(Table)的Charset和Collation。

查看列(Column)的Charset和Collation

=================================

SELECT

FROM information_schema.COLUMNS

WHERE table_schema = “db_name”

AND table_name = “table_name”;

指定或修改列(Column)的Character Set和Collation

==========================================

CREATE TABLE t1

(

col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci

) CHARACTER SET latin1 COLLATE latin1_bin;

ALTER TABLE t1 MODIFY

col1 VARCHAR(5)

CHARACTER SET latin1

COLLATE latin1_swedish_ci;

Connection Character Sets and Collations

============================================

Client和MySQL Server交互前,先建立连接(Connection)。

Client通过建立的connection发送SQL Statements(查询、插入等操作)到MySQL Server;MySQL Server则通过建立的connection返回给Client相应的结果(SQL执行结果,或者错误信息)。

Client和Server建立连接并设置character set

=====================================

  1. Client在建立连接的时候会指定collation (charset的默认collation);

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

默认collation);

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

[外链图片转存中…(img-zFPqLnAq-1715644795233)]

[外链图片转存中…(img-XHp4i9yc-1715644795234)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值