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; //刷新系统权限表