MySQL的零碎知识点

让Windows下的MySQL表名大小写敏感:

在mysql查询中执行:SHOW VARIABLES LIKE 'lower_case_table_names';

值的含义---》0:大小写敏感;1:大小写不敏感

操作:

1.修改MySQL的“my.ini”文件,在文件最末新增一行:“lower_case_table_names=0”

2.重启MySQL服务即可生效。


MySQL比较时间大小,如:

where time1 between '2011-03-03 17:39:05' and '2011-03-03 17:39:52'


MYSQL的简单用户操作:

用root用户登录:
mysql -u root -p
创建用户:
CREATE USER '账号名'@'可以登录的主机,常用通配符%,表示可以从任意远程主机登陆' IDENTIFIED BY '账号密码';
更改用户密码:
SET PASSWORD FOR '账号名'@'可以登录的主机' = PASSWORD('新密码');
若是更改当前用户密码,则是:SET PASSWORD = PASSWORD("新密码");
授予用户权限 :
GRANT ALL ON *.* TO '账号名'@'可以登录的主机';
GRANT SELECT,INSERT,UPDATE ON 数据库名.表名 TO '账号名'@'可以登录的主机';
撤销用户权限 :
REVOKE ALL ON *.* FROM '账号名'@'可以登录的主机';
删除用户:
DROP USER '账号名'@'可以登录的主机';


MYSQL中的核对规则utf8_unicode_ci、utf8_general_ci的区别总结:

http://www.jb51.net/article/48775.htm


设置MYSQL数据库编码为UTF-8:

1.先检查当前数据库编码:登录进MYSQL后执行 show variables like '%char%';

2.编辑MySql的配置文件:MYSQL的配置文件Windows下一般在系统目录下或者在MYSQL的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf

--在各个标签下加上以下内容,如果此标签下已经存在“default-character-set=GBK”类似的内容,只需修改即可:

[mysqld]

default-character-set = utf8 (MySQL5.5之后好像不支持了,未确认,可以直接删去)

character_set_server = utf8

[mysqld_safe]

default-character-set = utf8

[mysql]

default-character-set = utf8

[mysql.server]

default-character-set = utf8

[client]

default-character-set = utf8

3.重新启动MySql服务即可:service mysqld restart


MySQL提示“too many connections”:

产生这种问题的原因是:连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout都有关系。wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。

登录MySQL数据库,输入:show  processlist;

可以得到当前所有连接到这个MySQL数据库的连接信息。

解决方法:

  1. 可以根据进程ID号(在表中的第一列)执行kill语句杀掉目标连接
  2. 修改MySQL配置文件: vi /etc/my.cnf
    设置成max_connections=1000,wait_timeout=5。如果没有此项设置可以自行添加,修改后重启MySQL服务即可。如果经常性报此错误,则要考虑对服务器作整体性能优化

注:

为了防止发生too many connections时候无法登录的问题,mysql manual有如下的说明:

mysqld actually allows max_connections+1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege. By granting the SUPER privilege to administrators and not to normal users (who should not need it), an administrator can connect to the server and use SHOW PROCESSLIST to diagnose problems even if the maximum number of unprivileged clients are connected.

因此, 必须只赋予root用户的SUPER权限,同时所有数据库连接的帐户不能赋予SUPER权限。前面说到的报错后无法登录就是由于我们的应用程序直接配置的root用户


用binary解决mysql数据大小写敏感问题:
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
MySQL特别是4.*以前的对于中文检索会有不准确的问题,可以在检索的时候加上binary,4.*之后的版本就不需要了。


MySQL不支持SELECT INTO FROM语句:

可用Create table CopyOfTable1 (Select * from Table1)代替。


关于Innodb和MyISAM引擎:

1.Innodb支持事务处理、外键和行级锁;MyISAM这三点都不支持。
2.Innodb是索引和数据是紧密捆绑的,没有使用压缩;而MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少,能加载更多索引,因此,用MyISAM可节省不少硬盘空间。
3.MyISAM的读性能比Innodb强不少。
上一篇:有序链表--Java实现


下一篇:浅谈JSONObject与JSONArray的区别