MYSQL必知必会读书笔记 第二十七章 字符集和校对规则
2016-05-13 14:54
501 查看
数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。
字符集:字符集为字母和符号的集合。
编码为某个字符集成员的内部表示;
校对为规定字符如何比较的指令;
校对为什么重要:排序英文很容易对吗?或许不是,考虑到APE、apex和Apple。它们处于正确的排序顺序吗?这有赖与你是否想区分大小写。使用区分大小写的校对顺序,这些词有一种排序方式,使用不区分大小写的校对顺序有另外一种排序方式。其他语言如法文、德文更为复杂。
显示字符集:SHOWCHARACTERSET;
显示字符集和校对
SHOWVARIABLESLIKE'character%';
SHOWVARIABLESLIKE'collation%';
创建一个表并指定一个字符集和一个校对顺序:
CREATETABLEmytale(
col1INT,
col2VARCHAR(10)
)DEFAULTCHARACTERSEThebrew
COLLATEhebrew_general_ci;//后面的ci就是忽略大小写有时可以使用cs表示区分大小写。
MySQL除了指定表范围的字符集和校对外,也可在列上设置它们。
最后值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用CAST()和
MySQL的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:
就是CAST(xxxAS类型),CONVERT(xxx,类型)。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
二进制,同带binary前缀的效果:BINARY
字符型,可带参数:CHAR()
日期:DATE
时间:TIME
日期时间型:DATETIME
浮点数:DECIMAL
整数:SIGNED
无符号整数:UNSIGNED
下面举几个例子:
例一
例二
例三
像上面例子一样,将varchar转为int用cast(aassigned),其中a为varchar类型的字符串。
例4
在SQLServer中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。
字符集:字符集为字母和符号的集合。
编码为某个字符集成员的内部表示;
校对为规定字符如何比较的指令;
校对为什么重要:排序英文很容易对吗?或许不是,考虑到APE、apex和Apple。它们处于正确的排序顺序吗?这有赖与你是否想区分大小写。使用区分大小写的校对顺序,这些词有一种排序方式,使用不区分大小写的校对顺序有另外一种排序方式。其他语言如法文、德文更为复杂。
显示字符集:SHOWCHARACTERSET;
显示字符集和校对
SHOWVARIABLESLIKE'character%';
SHOWVARIABLESLIKE'collation%';
创建一个表并指定一个字符集和一个校对顺序:
CREATETABLEmytale(
col1INT,
col2VARCHAR(10)
)DEFAULTCHARACTERSEThebrew
COLLATEhebrew_general_ci;//后面的ci就是忽略大小写有时可以使用cs表示区分大小写。
MySQL除了指定表范围的字符集和校对外,也可在列上设置它们。
最后值得注意的是,如果绝对需要,串可以在字符集之间进行转换。为此,使用CAST()和
CONVERT()
MySQL的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:
1 | CAST (value as type); |
2 | CONVERT (value,type); |
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
二进制,同带binary前缀的效果:BINARY
字符型,可带参数:CHAR()
日期:DATE
时间:TIME
日期时间型:DATETIME
浮点数:DECIMAL
整数:SIGNED
无符号整数:UNSIGNED
下面举几个例子:
例一
1 | mysql> SELECT CONVERT ( '23' ,SIGNED); |
2 | + ----------------------+ |
3 | | CONVERT ( '23' ,SIGNED)| |
4 | + ----------------------+ |
5 | |23| |
6 | + ----------------------+ |
7 | 1row in set |
1 | mysql> SELECT CAST ( '125e342.83' AS signed); |
2 | + ------------------------------+ |
3 | | CAST ( '125e342.83' AS signed)| |
4 | + ------------------------------+ |
5 | |125| |
6 | + ------------------------------+ |
7 | 1row in set |
1 | mysql> SELECT CAST ( '3.35' AS signed); |
2 | + ------------------------+ |
3 | | CAST ( '3.35' AS signed)| |
4 | + ------------------------+ |
5 | |3| |
6 | + ------------------------+ |
7 | 1row in set |
例4
在SQLServer中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。
01 | DECLARE@dtdatetime |
02 |
03 | --单纯的日期 |
04 | SET@dt= '1900-1-2' |
05 | SELECTCAST(@dt as binary(8)) |
06 | --结果:0x0000000100000000 |
07 |
08 | --单纯的时间 |
09 | SET@dt= '00:00:01' |
10 | SELECTCAST(@dt as binary(8)) |
11 | --结果:0x000000000000012C |
相关文章推荐
- 关于mysql数据库升级到5.6的问题
- MySQL 保留字
- Can't change to run as user 'mysql' Please check that the user exists
- mysql的表类型MyISAM和InnoDB的区别
- Windows下mysql修改root密码的4种方法
- Elasticsearch mysql 增量同步
- MYSQL必知必会读书笔记 第二十六章 管理事务处理
- MySQL索引注意的几个地方
- 本地msdos(cmd)下输入mysql命令提示:‘mysql’不是内部或外部命令,也不是可运行的程序或批处理文件
- MySQL性能优化二十大实战经验
- ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
- 第二章 mybatis使用注解实现in查询(mysql)
- MYSQL必知必会读书笔记 第二十五章 使用触发器
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案
- mysql报错【1248】处理
- SQL Server如何链接远程MySQL
- MySQL5日期类型DATETIME和TIMESTAMP相关问题详解
- 修改mysql root账号密码
- MySQL字符串函数:字符串截取
- [MySQL]经常无故崩溃amd.dll , boot1.exe病毒