mysql学习笔记(五):mysql 的变量

 此页面使用的 mysql 可视化工具为 SQLyog。

mysql 的变量共有三种:

1、全局变量(也叫内置变量):是 mysql 内部定义好的一些变量;

查看所有的全局变量:show variables;

查看跟字符集有关的全局变量:show variables like"character_%";

 

查看某一个具体的全局变量:select @@变量名,比如 select @@character_set_client;

全局变量中有一个 character_set_client,表示客户端输入数据的编码格式(即服务器接收数据的编码格式),现在值为 utf8;

然后再查看命令行的编码格式为:GBK

在 mysql 命令行中插入 中文数据 会报错:

解决办法是 把 character_set_client 的值改为 gbk, 方法如下:

但是在查询数据的时候又出现乱码了:

注意:我这里出现的乱码是 问号??

而 老师 演示时出现的乱码如下: 

 

按照老师的说法 是因为全局变量 character_set_results 的值为 utf8,表示 mysql 输出数据的编码为 utf8,而前面我们查过了 命令行的编码为 gbk;也就是说 mysql 输出的数据是使用 utf8 进行编码的,而命令行是使用 gbk 解析数据并显示的,所以会乱码;

老师给的解决办法是:修改 character_set_results 的值为 gbk,结果如下:没有问题!!!

但是,我的即使 character_set_results 改为 gbk,还是会显示 问号??:

网上查了很多方法,试过都不行;后来测试时 无意间发现,可以通过修改 命令行的编码格式来解决:

1)、先将 命令行编码改为 utf-8

注意,不能在 mysql 命令行中修改,要退出 mysql,在 命令提示符 界面修改,输入 chcp 65001 直接回车,表示修改命令行的编码为 utf-8:

修改完成:当前活动页变为 65001

2)、然后 再重新改回 GBK:在命令提示符输入 chcp 936,直接回车

修改完成:当前活动页变为 936

3)、然后再进入 mysql(命令行输入:mysql -u root -p,回车之后输入密码),可以看到中文乱码为:

4)、因为 set 修改变量的值是临时的,mysql 退出重新登录以后就会恢复为 utf8;

所以重新将 character_set_client 和 character_set_results 的值改成 gbk,就可以在 mysql 命令行中插入和显示中文了;

 

 

2、会话变量:只存在于当前 客户端与服务端的一次连接当中,如果连接断开,会话变量会自动销毁;

定义会话变量:set @变量名=变量值;

查看会话变量:select @变量名;

 

3、局部变量:在存储过程中使用的变量叫做局部变量;存储过程执行完毕,局部变量自动销毁;

调用 存储过程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值