TiDB-学习笔记05

news/2024/5/19 12:52:08 标签: 数据库, tidb

 编写这个笔记,希望能记录下学习TiDB时候的知识点。


目录

参考文章

第五章

1.数据库和字符集


参考文章

目的链接&详细
TiDB Books

TiDB 6.x in Action | TiDB Books 【6.0版】

Introduction · TiDB in Action 【4.0版】

TiDB-学习笔记_tidb 查询_R&Y的博客-CSDN博客

第五章

对应课程

TiDB 特有功能与事务控制 [TiDB v6.1](201.3)的“02 数据库与字符集”

1.数据库和字符集 

数据库名建议按照业务、产品线或者其它指标进行区分,一般不要超过 20 个字符。 

*数据库里的对象命名只能使用英文字母、数字和下划线
*名称不能超过 64 个字符
*不能使用某些字符,包括 ASCII(0), ASCII(255), /, \, .
*可以使用保留字和特殊字符,但前提是使用 反引号` 将其包围

CREATE DATABASE 用于创建数据库,并可以指定数据库的默认属性(如数据库默认字符集、排序规则)。

CREATE SCHEMA 和 CREATE DATABASE 操作效果一样。

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...
create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
当创建已存在的数据库且不指定使用 IF NOT EXISTS 时会报错。

create_specification 选项用于指定数据库具体的 CHARACTER SET 和 COLLATE。

目前 TiDB 只支持将 lower-case-table-names 值设为 2,即按照大小写来保存表名,按照小写来比较(不区分大小写)。

创建 Schema/Database
语法:
CREATE DATABSAE [IF NOT EXISTS] database_name [options];
CREATE SCHEMA [IF NOT EXISTS] schema_name [options];


删除数据库:DROP DATABASE [IF EXISTS] database_name;
小心这是一个无法撤消的操作

TiDB 以区分大小写的方式存储对象名,但以不区分大小写的方式进行比较
tidb> show variables like 'lower_case_%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | 1     |
| lower_case_table_names | 2     |
+------------------------+-------+

目前 TiDB 只支持部分的字符集和排序规则,会在后续的内容中讲解。

字符集和排序规则
SHOW CHARACTER SET: 列出支持的字符集
SHOW COLLATION: 列出支持的排序规则

tidb> SHOW COLLATION;
+--------------------+---------+------+---------+----------+---------+
| Collation          | Charset | Id   | Default | Compiled | Sortlen |
+--------------------+---------+------+---------+----------+---------+
| ascii_bin          | ascii   |   65 | Yes     | Yes      |       1 |
| binary             | binary  |   63 | Yes     | Yes      |       1 |
| gbk_bin            | gbk     |   87 |         | Yes      |       1 |
| gbk_chinese_ci     | gbk     |   28 | Yes     | Yes      |       1 |
| latin1_bin         | latin1  |   47 | Yes     | Yes      |       1 |
| utf8_bin           | utf8    |   83 | Yes     | Yes      |       1 |
| utf8_general_ci    | utf8    |   33 |         | Yes      |       1 |
| utf8_unicode_ci    | utf8    |  192 |         | Yes      |       1 |
| utf8mb4_bin        | utf8mb4 |   46 | Yes     | Yes      |       1 |
| utf8mb4_general_ci | utf8mb4 |   45 |         | Yes      |       1 |
| utf8mb4_unicode_ci | utf8mb4 |  224 |         | Yes      |       1 |
+--------------------+---------+------+---------+----------+---------+
11 rows in set (0.00 sec)

e.g:
CREATE DATABASE universe DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

字符集 (character set) 是符号与编码的集合。

TiDB 中的默认字符集是 utf8mb4,与 MySQL 8.0 及更高版本中的默认字符集匹配。

排序规则 (collation) 是在字符集中比较字符以及字符排序顺序的规则。

COLLATE 子句
tidb> select * from test.c1 order by name;
+------+
| name |
+------+
| A    |
| B    |
| C    |
| a    |
| b    |
| c    |
+------+


tidb> select * from test.c1 order by name collate utf8mb4_unicode_ci;
+------+
| name |
+------+
| A    |
| a    |
| B    |
| b    |
| C    |
| c    |
+------+

 

以下示例取自官方文档: https://docs.pingcap.com/zh/tidb/v6.0/character-set-and-collation:

观察在排序规则为 utf8mb4_bin 和 utf8mb4_general_ci 情况下两个不同的结果:

tidb> SET NAMES utf8mb4 COLLATE utf8mb4_bin;
tidb> SELECT 'A' = 'a';
+-----------+
| 'A' = 'a' |
+-----------+
|         0 |
+-----------+

tidb> SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
tidb> SELECT 'A' = 'a';
+-----------+
| 'A' = 'a' |
+-----------+
|         1 |
+-----------+



http://www.niftyadmin.cn/n/188875.html

相关文章

解决数据库报错“missing chunk number XXX for toast value”的问题

报错信息: 错误: missing chunk number 0 for toast value 323583 in SYS_TOAST_2619 或者 错误: missing chunk number 0 for toast value 323583 in PG_TOAST_2619 1.通过toast的oid查询oid为2619的表名(这里是2619,来源于报错信息的PG_T…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件介绍 顶顶通呼叫中心中间件包含IPPBX、自动外呼、质检、ACD、呼叫路由等呼叫中心功能,也包含电话机器人开发接口(ASR【对接了华为云,腾讯云,科大讯飞,阿里云,捷通华声等,mrcp等语音识…

JDK1.8下多线程使用JDBC加载ClickHouse和hive驱动问题

JDK1.8下多线程使用JDBC加载CH和hive驱动问题 文章目录JDK1.8下多线程使用JDBC加载CH和hive驱动问题现象重现DriverManager加载驱动过程分析猜想实验1实验2实验3小结解决方案JVM深度分析在线程池里并行加载ClickHouse和Hive驱动时,发现程序无反应。通过日志发现均卡…

巴黎爱情回忆 NFT 作品集

由 Metaverse Studio 制作。 欢迎来到浪漫之都巴黎!尽情游览美丽壮观的地标,探索法国文化。在离开之前,别忘了从《巴黎爱情回忆》NFT 作品集中带走一件纪念品。从世界著名的法国人物到标志性资产,这些 NFT肯定会为您的钱包带来巴黎…

手zhuan手机软件app下载排行网站源码(需要自取)

demo软件园每日更新资源,请看到最后就能获取你想要的: 1.嵌入式Qt实战教程 PDF 高清版 嵌入式Qt实战教程 是配合Qt GUI程序设计的指导教材,独立于任何Qt编程教科书。主要内容有常用GUI介绍、Qt开发工具的安装及其优点、Qt入门、窗口的布局、信号和槽机制、常见对话框…

LeetCode:344. 反转字符串

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀算法专栏: 👉🏻123 一、🌱344. 反转字符串 题目描述:编写一个函数,其作用是…

Java基础学习-2(不完全版)

Java基础学习-2结构顺序结构分支结构if语句switch语句case穿透switch新特性---JDK12循环for循环while循环语句无限循环跳转控制语句数组数组初始化静态初始化动态初始化动态初始化和静态初始化的区别数组的地址数组的元素访问数组遍历数组常见问题结构 顺序结构 代码的运行是依…

【ONE·Data || 常见排序说明】

总言 数据结构基础:排序相关内容。    文章目录总言1、基本介绍2、插入排序2.1、直接插入排序:InsertSort2.1.1、单趟2.1.2、总趟2.2、希尔排序(缩小增量排序):ShellSort2.2.1、预排序1.0:单组分别排序2.…