易截截图软件、单文件、免安装、纯绿色、仅160KB

Mysql中文乱码问题之分析

Mysql中文乱码问题
之前被mysql中总是出现中文乱码搞得云里雾里,在网上也搜了些相关资料,可结果更让我觉得字符集的转换是相当复杂,甚至有了抵触心理,不过还好在最后搜到几篇经典的文章,经过研读总算明白过来!好文章,不敢独享,现将文章稍作整理与大家分享。
字符集基本概念:
http://home.phpchina.com/space.php?uid=57965&do=blog&id=181970
 
mysql中文乱码原因剖析:
对编程有影响的主要是客户端字符集和数据库字符集,数据库中常用的操作就是保存数据和读取数据,在这个过程中,乱不乱码和数据库字符集貌似没有什么关系。我们只要保证写入时选择的字符集和读取时的选择的字符集一致,即只需保证两次操作的客户端字符集一致即可。在MySQL的客户端上执行一次查询过程一般是,在客户端的提示符后面输入一条SQL语句,回车,然后终端显示出查询的结果。这个过程中,只有终端和三个MySQL的系统变量指定了正确的字符集,才能保证我们将一个正确的SQL语句送到服务器,然后服务器返回正确的结果,并且在终端正确显示。三个MySQL的系统变量是:
1. character_set_client,终端字符集,告诉Server客户端提交的SQL语句的编码格式 
2. character_set_connection,连接字符集,是服务器翻译SQL语句时用到的编码格式
3. character_set_results,返回的结果集的字符集,是服务器返回结果集之前把结果集转换成的编码格式 。
在MySQL终端通过执行命令 show variables like ‘char%’ 可以查看这几个变量的值。这三个变量通常都设定为同一种字符集,用命令set names [charset name]就可以修改这三个变量的值。一般来说,只要你设定了能够表示你的数据的字符集,你查询的结果都可以在终端正确显示。
 
举个例子:使用的表t1是utf8编码,表中的字段c1继承了这个编码,表创建如下
mysql> create table t1 ( c1 text not null ) character set utf8;
用的字符是汉字“范”,gbk编码为B7 B6,utf8编码为E8 8C 83
用下面的SQL语句插入数据
mysql> insert into t1 values( ‘范’);
a)如果终端设置为utf8,并且执行了 set names utf8,那么插入到数据库中的就是“范”这个字的utf8编码,这个过程中MySQL不需要做编码转换。写入数据库的内容可以通过执行 select hex( c1 ) from t1 得到数据的十六进制编码来验证。
b)如果终端设置为 utf8,并且执行了set names g


相关文档:

MySQL行锁深入研究

     
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设
id=1
的这本书库存为
1
,但是有
2
个人同时来借这本书,此处的逻辑为
Select restnum from book where id =1 ;
-- 如果 restnum 大于 0 ,执行 update
Update boo ......

Mysql修改表字段

#新增一个字段,默认值为0,非空,自动增长,主键  
 
   alter table tabelname add new_field_name field_type default 0 not null auto_increment ,add primary key (new_field_name);  
 
#增加一个新字段  
 
   alter table tableName ......

查看mysql版本的四种方法

转自:http://www.yayu.org/look.php?id=113
1:在终端下:mysql -V。
以下是代码片段:
[shengting@login ~]$ mysql -V
mysql  Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
    2:在mysql中:mysql> status;
以下是代码片段:
mysql> status;
--------------
mysql  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号