mysql笔记

1.mysql判断当前数据库是否存在:

SELECT count( * ) FROM information_schema.TABLES WHERE table_name = 'wx_app_meizu_user_log' AND TABLE_SCHEMA = 'test'

判断当前数据表是否存在: 如果存在返回1 失败为0

2.查看当前sql的执行效率:

利用explain来进行解析和查看

3.查看当前的mysql状态:

show status like '%q_cache%';

4.在select中加条件判断:

select ref_date,IF(msgid<>'0',COUNT(DISTINCT(msgid)),0) as push_data,sum(target_user) as target_user   from wx_app_meizu_material_articletotal
GROUP BY ref_date

5.查看事务:

show engine innodb status

6.授权mysql

grant all privileges on testdb to dba@'localhost'

授权远程连接访问:

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

7.mysql修改生效:

FLUSH PRIVILEGES

8.mysql链接的对象返回为空的问题:

场景:

比如有两个链接,$db1和$db2,都是操作同一个指定的ip,并且:用户名和密码一致的情况下,如:

$db1 = mysql_connect('localhost','user','123456');

$db2 = mysql_connect('localhost','user','123456');

这个时候,如果我们需要操作同一个库的时候,选择了db1和db2以后,db2的库会受到影响,导致查不到出具,原因是由于使用了同样的配置,这样在db1链接以后,db2会链接导致一个链接断开,需要进行特殊的设置:

$db2 = mysql_connect('localhost','user','123456',true);

注意:

第四个参数为new_link=true,指定相同的配置使用链接。

这样设置以后db1使用db1的链接,db2使用db2的链接,互相不影响。

9.mysql查询输出特定字符:

SELECT CONCAT("'",1222,"'") as result

使用MYSQL索引进行关联和联合查询的时候,使用CRC32指定字符串查询;会提高查询效率,对字符串引用有效;

select xxx from fmb_tikcet where name = CRC32("apple");

统计联合查询的时候,巧妙运用count(left(**))来进行查询,提高查询效率;

如:LEFT(city,4)

10.聚合索引搜索:

select * from fmb_riddle_invite_info join (select fuid,uid from fmb_riddle_invite_info ) as t1 on (t1.uid=fmb_riddle_invite_info.uid) where  fmb_riddle_invite_info.uid>0 and fmb_riddle_invite_info.fuid=0 limit 1;

12.DATE_SUB的使用:只要使用针对日期针对未来几天内的一个统计的判断; 巧妙运用intval 20 day  |hour 对时间进行判断。

11.mysql授权新用户:

create user  user1   IDENTIFIED by '1234'; 创建新用户

set password for user1 =password('1234'); 修改密码

授权相关权限给user1

grant select,update,delete,insert  on DBproxy.* to user1@localhost identified by '1234';

flush privileges; //刷新系统权限表

你可能感兴趣的:(mysql笔记)