mysqlcrud语句
MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等。而这两个方面又可以细分如下:MySQL常用语句表(或...
2024.11.15服务器字符集和校对规则
服务器字符集和校对,在 MySQL 服务启动的时候确定。
可以在 my.cnf 中设置: [mysqld] default-character-set=gbk 或者在启动选项中指定: mysqld --default-character-set=gbk 或者在编译的时候指定: ./configure --with-charset=gbk如果没有特别的指定服务器字符集,默认使用 latin1 作为服务器字符集。上面 3 种设置的方式都只指定了字符集,没有指定校对规则,这样是使用该字符集默认的校对规则,如果要使用该字符集的非默认校对规则,则需要在指定字符集的同时指定校对规则。
可以用“show variables like ‘character_set_server‘;”命令查询当前服务器的字符集和校对规则。
mysql> show variables like ‘character_set_server‘; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | character_set_server | gbk | +----------------------+-------+ 1 row in set (0.00 sec) mysql> show variables like ‘collation_server‘; +------------------+----------------+ | Variable_name | Value | +------------------+----------------+ | collation_server | gbk_chinese_ci | +------------------+----------------+ 1 row in set (0.00 sec)数据库字符集和校对规则
数据库的字符集和校对规则在创建数据库的时候指定,也可以在创建完数据库后通过“alter database”命令进行修改。需要注意的是,如果数据库里已经存在数据,因为修改字符集并不能将已有的数据按照新的字符集进行存放,所以不能通过修改数据库的字符集直接修改数据的内容,在 9.7 小节中通过一个具体的例子介绍了字符集的修改方法。
设置数据库字符集的规则是:
如果指定了字符集和校对规则,则使用指定的字符集和校对规则;如果指定了字符集没有指定校对规则,则使用指定字符集的默认校对规则;如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符集和校对规则。
推荐在创建数据库的时候明确指定字符集和校对规则,避免受到默认值的影响。 要 显 示 当 前 数 据 库 的 字 符 集 和 校 对 规 则 , 可 以 使 用 “ show variables like ‘ character_set_database ‘”和“show variables like ‘ collation_database ‘”命令查看:
mysql> show variables like ‘character_set_database‘; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | character_set_database | utf8 | +------------------------+-------+ 1 row in set (0.00 sec) mysql> show variables like ‘collation_database‘; +--------------------+-----------------+ | Variable_name | Value | +--------------------+-----------------+ | collation_database | utf8_general_ci | +--------------------+-----------------+ 1 row in set (0.00 sec)表字符集和校对规则
表的字符集和校对规则在创建表的时候指定,可以通过 alter table 命令进行修改,同样,如
果表中已有记录,修改字符集对原有的记录并没有影响,不会按照新的字符集进行存放。表
的字段仍然使用原来的字符集。
设置表的字符集的规则和上面基本类似:
如果指定了字符集和校对规则,使用指定的字符集和校对规则;如果指定了字符集没有指定校对规则,使用指定字符集的默认校对规则;如果没有指定字符集和校对规则,使用数据库字符集和校对规则作为表的字符集和校对规则。推荐在创建表的时候明确指定字符集和校对规则,避免受到默认值的影响。要显示表的字符
集和校对规则,可以使用 show create table 命令查看:
mysql> show create table z1 \G; *************************** 1. row *************************** Table: z1 Create Table: CREATE TABLE `z1` ( `id` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.00 sec)列字符集和校对规则
MySQL 可以定义列级别的字符集和校对规则,主要是针对相同的表不同字段需要使用不同的字符集的情况,应该说一般遇到这种情况的几率比较小,这只是 MySQL 提供给我们一个灵活设置的手段。
列字符集和校对规则的定义可以在创建表时指定,或者在修改表时调整,如果在创建表的时候没有特别指定字符集和校对规则,则默认使用表的字符集和校对规则。
连接字符集和校对规则
上面 4 种设置方式,确定的是数据保存的字符集和校对规则,对于实际的应用访问来说,还
存在客户端和服务器之间交互的字符集和校对规则的设置。
对于客户端和服务器的交互操作,MylSQL 提供了 3 个不同的参数:character_set_clientcharacter_set_connection 和 character_set_results,分别代表客户端、连接和返回结果的字符集,通常情况下,这 3 个字符集应该是相同的,才可以确保用户写入的数据可以正确地读出,特别是对于中文字符,不同的写入字符集和返回结果字符集将导致写入的记录不能正确读出。 通常情况下,不会单个地设置这 3 个参数,可以通过以下命令:
SET NAMES ***;来设置连接的字符集和校对规则,这个命令可以同时修改这 3 个参数的值。使用这个方法修改连接的字符集和校对规则,需要应用每次连接数据库后都执行这个命令。另外一个更简便的办法,是在 my.cnf 中设置以下语句:
[mysql] default-character-set=gbk这样服务器启动后,所有连接默认就是使用 GBK 字符集进行连接的,而不需要在程序中再执行 set names 命令。
另外,字符串常量的字符集也是由 character_set_connection 参数来指定的。
可以通过“[_charset_name]‘string‘ [COLLATE collation_name]”命令强制字符串的字符集和校对规则。例如:
select _gbk ‘字符集‘; select _latin1 ‘字符集‘;通常情况下,基本不需要用户强制指定字符串字符集。
搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核
MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等。而这两个方面又可以细分如下:MySQL常用语句表(或...
2024.11.15sql语句:增删改查,其中 增、删、改只用于单表多表级联删除,级联更新有时候会出现(例如:删除父类别,子类别也会被删除)多表查询:多表联查、子查询建表语句: 一般不需要语句建表,语句了解认识即可,手动...
2024.11.15如果在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现存在不能满足要求需要调整,又不想丢弃这段时间的数据,那么就需要进行字符集的修改。字符集的修改不能直接通过“alter database ...
2024.11.13概述最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,这里我们从最基本的地方说起,到错误产生的深层次原因和解决办法。01基本概念• 字符(Character)是指人类语...
2024.11.15MYSQL五大类函数,前面已经介绍了聚合函数,还有数值型函数、字符串处理函数、时间日期函数和控制流函数,综合使用效果更佳。字符串函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串...
2024.11.12