一些常见SQL问题示例及解决办法(出现乱码、破解数据库密码、字符集和校对规则)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zxdspaopao/article/details/102632169

       发一些关于sql问题的实例,其实我也没有全遇到过,一般都是按照安装MySQL安装时配置时不会出什么错的,但是有大神给我指点了一下,我就发出来了供你们参考~~~

以下就是几种常见的问题了~

1、没有选择数据库就操作表格和数据

2、在命令行出现乱码问题

3、如何破解数据库的密码

4、命令行客户端的字符集问题

5、查看字符集和校对规则

 


1、没有选择数据库就操作表格和数据

ERROR 1046 (3D000): No database selected
解决方案一:就是使用“USE 数据库名;”语句,这样接下来的语句就默认针对这个数据库进行操作
解决方案二:就是所有的表对象前面都加上“数据库.”

2、在命令行出现乱码问题

安装数据库时选择utf8, 而我们在windows下窗口是GBK的,因此,需要在命令行客户端声明字符集。

set names gbk;是为了告诉服务器,客户端用的GBK编码,防止乱码

mysql> **set names gbk;**  
Query OK, 0 rows affected (0.00 sec)  

可以查看字符集
mysql> **show variables like 'character_set_%';** 

3、如何破解数据库的密码

使用安全模式登录。

  • 通过任务管理器或者服务管理,关掉mysqld(服务进程)
  • 通过命令行+特殊参数开启mysqld
mysqld --skip-grant-tables
  • 此时,mysqld服务进程已经打开,并且,不需要权限检查
  • mysql -uroot 无密码登陆服务器
  • 修改权限表
--A: 
use mysql;

--B: 
update user set Password = password('123456') where User = 'root';

--C: 
flush privileges;
  • 通过任务管理器,关掉mysqld服务进程

  • 再次通过服务管理,打mysql服务

  • 即可用修改后的新密码登陆


4、命令行客户端的字符集问题

mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1

原因:服务器端认为你的客户端的字符集是utf-8,而实际上你的客户端的字符集是GBK。

查看所有字符集:SHOW VARIABLES LIKE 'character_set_%';

解决方案,设置当前连接的客户端字符集 “SET NAMES GBK;”


5、查看字符集和校对规则

关于SQL的关键字和函数名等不区分大小写,但是对于数据值是否区分大小写,和字符集与校对规则有关。

ci(大小写不敏感),cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关)

1) 查看所有字符集和校对规则

2)查看GBK和UTF-8字符集的校对规则

show collation like 'gbk%';

show collation like 'utf8%';

  • utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
  • utf8_general_ci 校对速度快,但准确度稍差。
  • utf8_unicode_ci 准确度高,但校对速度稍慢。

3)查看服务器的字符集和校对规则

4)查看和修改某个数据库的字符集和校对规则

修改数据库的字符集和校对规则:

ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;

例如:

ALTER DATABASE ceshi_db DEFAULT CHARACTER SET utf8 collate utf8_general_ci;

注意:修改了数据库的默认字符集和校对规则后,原来已经创建的表格的字符集和校对规则并不会改变,如果需要,那么需要单独修改。


5)查看某个表格的字符集和校对规则

查看字符集:

show create table users;

如果要查看校对规则:

show table status from bookstore like '%users%' ;

修改某个表格的字符集和校对规则:

修改表的默认字符集:

ALTER TABLE 表名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;

把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:

ALTER TABLE 表名称 CONVERT TO CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;
//例如
ALTER TABLE ceshi_table DEFAULT CHARACTER SET gbk collate gbk_chinese_ci;

        写到数据库了,在学校学的sql server,现在在外面用的都是MySQL,所以关于数据库这点的内容就用MySQL写了。殊途同归嘛。

猜你喜欢

转载自blog.csdn.net/zxdspaopao/article/details/102632169