发一些关于sql问题的实例,其实我也没有全遇到过,一般都是按照安装MySQL安装时配置时不会出什么错的,但是有大神给我指点了一下,我就发出来了供你们参考~~~
以下就是几种常见的问题了~
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写了。殊途同归嘛。