MySQL学习笔记一---字符乱码问题和字符集精髓

  前言:

  一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因。

  (默认未指定字符集创建的数据库表,都是latinl字符集, 强烈建议使用utf8字符集)

  保证不出现乱码的思想:保证客户端、服务端、数据库、表字符集统一

  坑:有的时候,cmd或者linux系统字符集问题,其实数据库是正确的,只是我们执行命令在终端看到的是乱  码而已,这时需要设置linux系统字符集

  1、查看liunx系统字符集:cat /etc/sysconfig/i18n

  2、vim /etc/sysconfig/i18n

  一、查看是什么字符集

  1、查寻数据库是什么字符集

  show create database django\G (django 是数据库名称)

  

  

  2、查寻表是什么字符集

  show create table auth_group\G (auth_group 是表名称)

  

  ENGINE = InnoDB 该表数据库引擎是InnoDB

  DEFULT CHARSET=utf8 该表字符集是utf8

  COLLATE utf8_general_ci 校准规则

  3、查看所有字符集和对应的校准规则

  show character set;

  

  二、解决方法:

  1、插入数据的时候,先设置客户端插入字符集和数据库建表相同的字符集

  eg:如果数据库表字符集是latinl,那么插入数据的时候也要是latinl

  方法:set names latinl

  insert into student value(‘飞东‘)

  

  

  2、将SQL语句放入文件中,使用source来执行这个文件,插入数据,则不会出现乱码,原理是和1一样的,    只是放在文件中执行而已

  方法:将下面两个语句放入一个新建文件中,如mysql.sql

  set names Latinl

  insert into student value(‘飞东‘)

  执行这个文件:source mysql.sql

  

  3、从其他文件导入数据库(避免导入数据有中文乱码的问题)

  将数据编码格式保存为utf-8(UTF8不要导入gbk,gbk不要导入UTF8)

  set names utf8; ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  修改数据库的编码格式

  ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;     修改表的编码格式

  LOADLOCAL‘C:\\utf8.txt‘INTOTABLE tb_name;    从文件中导入数据库

  4、永久修改默认客户端编码格式(修改my.cnf配置文件,针对MySQL 5.5版本以上)

  

  

  5、永久修改默认服务端编码格式(修改my.cnf配置文件,针对MySQL 5.5版本以上)

  

  

  修改完毕之后重启mysqld服务:service mysqld restart

  三、常用命令

  1、查看默认编码格式 show variables like "%char%";

  

  

  

  character_set_client(客户端)、character_set_connection(连接)、character_set_results(结果) 三者字符集是一致的

  2、修改数据库的编码格式

  ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;

  3、修改表的编码格式

  ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;

  4、通过ALTER 修改库或者表的字符集,只是对之后插入的数据有效,原来已经存在的数据无法修改,如果需要修改原来带有数据的字符集,只能通过把原来的数据导出来,再插入到新的已经修改过字符集的表(数据库)中。

  四、建议

  1、中英文环境,linux设置系统字符集为utf8,数据库服务端,客户端,数据库,表都是utf8字符集

  2、无论是查寻还是插入,都先用set names utf8 先设置一下字符集

  3、建议建数据库语句:

  

  4、建议表语句:

  

时间: 2024-08-25 04:48:58

MySQL学习笔记一---字符乱码问题和字符集精髓的相关文章

笔记:PHP查询mysql数据后中文字符乱码

新建表Clubs CREATE TABLE `Clubs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; id name 1 程序员2 架构师3 产品经

MySQL学习笔记10(MySQL函数)

MySQL学习笔记10 MySQL函数 MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数.格式化函数等.通过这些函数,可以简化用户的操作.SELECT语句及其条件表达式都可以使用这些函数.同时,INSERT.UPDATE.DELECT语句及其条件表达式也可以使用这些函数. 1:数学函数 数学函数是M有SQL中常用的一类函数.主要用于处理数字,包括整型.浮点数等.数学函数包括绝对值函数.正弦函数.余弦函数.获取随机数

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

MySQL学习笔记-数据类型与操作数据表

MySQL学习笔记-数据类型与操作数据表 数据类型:  1.字符型  2.整型  3.浮点型  4.日期时间型 数据表操作:  1.插入记录  2.查找记录 记录操作:  1.创建数据表  2.约束的使用 1.数据类型 [1]整型: 数据类型 存储范围 字节 TINYINT 有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1) 1 SMALLINT 有符号型:-2^15~2^15 -1,无符号型0~2^16 -1 2 MEDIUMINT 有符号型:-2^2

mysql学习笔记 第五天

使用分区数据表: 分区数据表和merge数据表具有相似的作用,但是分区数据表确确实实是一个数据表 ,不像merge是列出数据表的逻辑关系,并且分区数据表可以包括像myisam以外的 的数据表.创建分区数据表: create table 里给出数据列和索引,然后用partition by 定义一个用来把数据行分配 到各个分区的分区函数:[将数据表分成四个区] create table log_partition( dt datetime not null, info varchar(100) no

mysql 学习笔记 第二天

插入表格数据: Insert into table_name set columns_1=value1,columns_2=value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数据 利用文本方式插入数据: Load data local infile‘径’into table table_name: Select 的通用形式: Select columns from table or tables where conditions;from一般不能少的,但是当查询的时候没有

MySQL学习笔记之九 字符串模式匹配

我们在使用查询的时候,经常会碰到模糊条件查询,而模糊查询就涉及到了字符串模式匹配. 在这里,主要讲两个:标准的SQL模式匹配.扩展正则表达式模式匹配.     一.标准的SQL模式匹配 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你 使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. 为了找出包含正好5个字符的名字,

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

MySQL学习笔记—SQL服务器模式汇总

MySQL学习笔记-SQL服务器模式汇总 MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式.这样每个应用程序可以根据自己的需求来定制服务器的操作模式. 模式定义MySQL应支持哪些SQL语法,以及应执行哪种数据验证检查.这样可以更容易地在不同的环境中使用MySQL,并结合其它数据库服务器使用MySQL. 你可以用–sql-mode="modes"选项启动mysqld来设置默认SQL模式.如果你想要重设,该值还可以为空(–sql-mode ="&q