首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
mqtt
spring
cron
cpython
redis
lvs
stdout
mvc
上传
hashmap
爬虫
队列
缓存
service
lavarel
cache
tengine
caching
pipe
api
注入
h2
iis
wordpress
webserver
crontab
syslog
ftp
django
uuid
python
timeout
cSharp
并发
nlp
ssl
pdo
phpunit
curl
多线程
varnish
grpc
jvm
yaf
localhost
touch
laravel
go
mq
php5
base64
openssl
swoole
gzip
rabbitmq
makefile
interface
token
thinkphp
memcache
web3
php水印
crash
java
ruby
queue
timezone
php绘图
log4j
node.js
php框架
c语言
struct
ffmpeg
pymongo
微服务
织梦cms
protocol-buffers
ci
当前位置:
开发笔记
>
后端
> 正文
mysql字符集和校对简析_MySQL
作者:hexin01 | 来源:互联网 | 2018-04-16 00:51
mysql字符集和校对简析
bitsCN.com
mysql字符集和校对简析 use case首先看个例子: 有个user 表 User( username VARCHAR(5) CHARACTER SET utf8COLLATE utf8_general_ci); 有记录('username');和('UserNAme'); 使用 select * from User where username='username'; 将会选出两条数据 然后将username的COLLATE改为utf8_bin; User( username VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_bin); 再使用 select * from User where username='username'; 将会选出第一条数据 这是为什么呢?请往下看: 字符集(CHARACTER SET)是一套符号和编码。校对规则(COLLATE)是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。 假设我们有一个字母表使用了四个字母:‘A’、‘B’、‘a’、‘b’。我们为每个字母赋予一个数值:‘A’=0,‘B’= 1,‘a’= 2,‘b’= 3。字母‘A’是一个符号,数字0是‘A’的编码,这四个字母和它们的编码组合在一起是一个字符集。 假设我们希望比较两个字符串的值:‘A’和‘B’。比较的最简单的方法是查找编码:‘A’为0,‘B’为1。因为0 小于1,我们可以说‘A’小于‘B’。我们做的仅仅是在我们的字符集上应用了一个 校对规则。校对规则是一套规则(在这种情况下仅仅是一套规则):“对编码进行比较。”我们称这种全部可能的规则中的最简单的 校对规则为一个binary(二元)校对规则。 但是,如果我们希望小写字母和大写字母是等价的,应该怎样?那么,我们将至少有两个规则:(1)把小写字母‘a’和‘b’视为与‘A’和‘B’等价;(2)然后比较编码。我们称这是一个大小写不敏感的 校对规则。比二元校对规则复杂一些。 MySQL支持的字符集和校对http://dev.mysql.com/doc/refman/5.1/zh/charset.html#charset-charsets 服务器字符集和校对MySQL服务器有一个服务器字符集和一个服务器校对规则,它们均不能设置为空。MySQL按照如下方法确定服务器字符集和服务器校对规则: · 当服务器启动时根据有效的选项设置 · 根据运行时的设定值 在服务器级别,确定方法很简单。当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为 校对规则添加--default-collation。如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个 校对规则,那就与--default-charset=latin1 --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。因此,以下三个命令有相同的效果: shell> mysqld shell> mysqld --default-character-set=latin1 shell> mysqld --default-character-set=latin1 / --default-collation=latin1_swedish_ci 更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: shell> ./configure --with-charset=latin1或者: shell> ./configure --with-charset=latin1 / --with-collation=latin1_german1_ci mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 数据库字符集和校对每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:
CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name] ALTER DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]例如: CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;MySQL这样选择数据库字符集和数据库校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用服务器字符集和服务器校对规则。 MySQL的CREATE DATABASE ... DEFAULT CHARACTER SET ...语法与标准SQL的CREATE SCHEMA ... CHARACTER SET ...语法类似。因此,可以在同一个MySQL服务器上创建使用不同字符集和 校对规则的数据库。 如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。它们没有其它目的。 默认数据库的字符集和校对规则可以用作character_set_database和 collation_database系统变量。无论何时默认数据库更改了,服务器都设置这两个变量的值。如果没有 默认数据库,这两个变量与相应的服务器级别的变量(character_set_server和collation_server)具有相同的值。 表字符集和校对每一个表有一个表字符集和一个校对规则,它不能为空。为指定表字符集和校对规则,CREATE TABLE 和ALTER TABLE语句有一个可选的子句: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]例如: CREATE TABLE t1 ( ... )DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci; MySQL按照下面的方式选择表字符集和 校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用服务器字符集和服务器校对规则。 如果在列定义中没有指定列字符集和校对规则,则默认使用表字符集和校对规则。表字符集和校对规则是MySQL的扩展;在标准SQL中没有。 列字符集和校对每一个“字符”列(即,CHAR、VARCHAR或TEXT类型的列)有一个列字符集和一个列 校对规则,它不能为空。列定义语法有一个可选子句来指定列字符集和校对规则:col_name {CHAR | VARCHAR | TEXT} (col_length) [CHARACTER SET charset_name [COLLATE collation_name]]例如: CREATE TABLE Table1( column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci); MySQL按照下面的方式选择列字符集和校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用表字符集和服务器校对规则。 CHARACTER SET和COLLATE子句是标准的SQL。 bitsCN.com
mysql
html
服务器
sql
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
sql
Android 新闻App的本地服务器搭建教程
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
iis
如何实现织梦DedeCms全站伪静态
本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ...
[详细]
蜡笔小新 2023-12-14 19:45:47
iis
如何限制php数据库链接数和连接超时时间?
本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ...
[详细]
蜡笔小新 2023-12-14 14:06:10
iis
Oracle Database 10g许可授予信息及高级功能详解
本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ...
[详细]
蜡笔小新 2023-12-14 13:12:10
iis
Hibernate基础映射
在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ...
[详细]
蜡笔小新 2023-12-14 10:57:47
ftp
Nginx使用AWStats日志分析的步骤及注意事项
本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ...
[详细]
蜡笔小新 2023-12-14 19:42:01
iis
搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ...
[详细]
蜡笔小新 2023-12-14 17:03:58
iis
如何在MySQL中将零值替换为先前的非零值?
本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ...
[详细]
蜡笔小新 2023-12-14 16:59:24
iis
【译】发送表单数据
这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ...
[详细]
蜡笔小新 2023-12-14 16:19:10
iis
AJAX的POST请求及实现数据修改功能的方法
本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ...
[详细]
蜡笔小新 2023-12-14 16:12:01
service
Java实战之电影在线观看系统的实现
本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ...
[详细]
蜡笔小新 2023-12-14 15:52:03
service
PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ...
[详细]
蜡笔小新 2023-12-14 15:30:33
service
禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ...
[详细]
蜡笔小新 2023-12-14 12:55:15
service
PHP实现断点续传乱序合并文件的方法和源码
本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ...
[详细]
蜡笔小新 2023-12-14 04:33:19
service
ASP.NET Tips: 获取插入记录的ID的方法详解
本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ...
[详细]
蜡笔小新 2023-12-13 17:03:18
hexin01
这个家伙很懒,什么也没留下!
Tags | 热门标签
mqtt
spring
cron
cpython
redis
lvs
stdout
mvc
上传
hashmap
爬虫
队列
缓存
service
lavarel
cache
tengine
caching
pipe
api
注入
h2
iis
wordpress
webserver
crontab
syslog
ftp
django
uuid
RankList | 热门文章
1
Linux7 破解root用户密码
2
单门冰箱尺寸一般是多少(简介一款省电且耐用单门冰箱)
3
warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:545)
4
老台机开新花:华硕发布2.5千兆网卡 小得不可思议
5
Pycharm设置中 Excluded\ Sources\Resources 的意思?
6
SQL Server性能杀手
7
三代锐龙新驱动实测:单核性能进步明显
8
文艺范儿的程序猿和攻城狮们
9
什么是485通讯总线(rs485接口怎么接线)
10
Ruby for Sketchup 贪吃蛇演示源码(naive_snake)
11
阿里云公开七大商业发布!教育领域推出“春雷计划”和“科研云”解决方案
12
发现一个记录笔记的工具,用起来真心爽
13
安装MySQL规范
14
算子_Spark——RDD算子
15
ps 计算机 性能设置,如何设置Adobe Photoshop CS6的性能?设置方法
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有