mysql数据库的一些操作

   2020-03-23 15:35:44

mysql

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必须用''(单引号)引起来.

相关评论:
admin test
admin test

靡不有初|  当前时间:  |  网站运行时间:  |鲜克有终

今年剩余【农历】:

粤ICP备19080315号