1、where在分组之前过滤 ;having在分组之后过滤
where 后不能跟聚合函数,因为where执行顺序大于聚合函数。
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
2、mysql增加字段并设为主键:(需要先增加字段,再清空所有主键,再设置主键)
log_task_rate表增加主键source字段
ALTER TABLE log_task_rate ADD COLUMN source VARCHAR (255) NOT NULL;
ALTER TABLE log_task_rate DROP PRIMARY KEY;
ALTER TABLE log_task_rate ADD PRIMARY KEY (time, gid, sid, source);
3、mysql导入大批量数据出现MySQL server has gone away的解决方法:
set global max_allowed_packet=268435456;
show global variables like 'max_allowed_packet';
4、添加字段并修改联合索引
ALTER TABLE `表名` ADD COLUMN `accid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '受邀者accid' AFTER `gold`;
ALTER TABLE `表名` DROP INDEX invite_info;
ALTER TABLE `表名` ADD CONSTRAINT invite_info UNIQUE (`invite_id`, `invitee_id`, `accid`);
5、查看一个库中所有表的大小:
SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name',CONCAT(ROUND(table_rows / 1000000, 4),'M') AS 'Number of Rows',CONCAT(ROUND(data_length / (1024 * 1024 * 1024),4),'G') AS 'Data Size',CONCAT(ROUND(index_length / (1024 * 1024 * 1024),4),'G') AS 'Index Size',CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024),4),'G') AS 'Total' FROM information_schema. TABLES WHERE table_schema LIKE '库名' ORDER BY total DESC;
6、查询数库什么时候增加了什么表,和修改了哪个表。
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名称' ORDER BY create_time DESC;
7、显示是否存在数据库, 则可用
show databases like 'db_name';
显示是否存在数据表, 则可用
show tables like 'table_name';
这里db_name, table_name必须用''(单引号)引起来.