技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
======================================
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
=====================================
- Client在建立连接的时候会指定collation (charset的默认collation);
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
默认collation);
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
[外链图片转存中…(img-zFPqLnAq-1715644795233)]
[外链图片转存中…(img-XHp4i9yc-1715644795234)]