mysql 常用命令

--获取当前时间 前一天的时间 interaval 后面参数是几 代表前几天
date(DATE_SUB(NOW(),INTERVAL 1 DAY);

--  转码
CAST(countreg as char)
CAST(CONCAT('"+download+"',adid) as char) as apk


-- 不改变现有数组的情况下  连接两个或多个数组 返回 组成之后新的数组
CONCAT()

CONCAT(CONVERT(a.adid,char))


-- mysql case 语句
case when then  when then else end

--   查询为数字的列
select * from visitlog where LENGTH(0+adid)=LENGTH(adid)


-- 查询前一天的数据

select * from visitorlogs where date(firsttime)=date(DATE_ADD(now(),INTERVAL -1 day));

--   查询重复数据
select user_name,count(*) as count from user_table group by user_name having count>1; 


--  dos环境下中文乱码
set character_set_results=gb2312;

--如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
IFNULL(expr1,expr2) 



--  截取字符串   1. 要截取的字符串 2. 截取条件  3. 出现的位置  正数 从左往右截  负数  从右往左截
substring_index ('要截取的字符串','.',2);

--当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。
--所以使用ignore请确保语句本身没有问题,否则也会被忽略掉
insert ignore into

--  导出数据库
mysqldump -u(username) -p(password) (dbname) > (路径加文件名).sql


-- 将表一数据导入到表二中   两张表的字段要一致 
insert into table2 ('字段1','字段2') select 字段1 , 字段2 from table1 ;


--  如果数据存在 执行更新操作 如果不存在执行插入
REPLACE INTO ext (extid,noid,key1,value1) VALUES +values+ ;

insert  into visitlog (imei ,imsi, plat, version,visitdate ,jspname,adid,count) values "
						+ " (?,?,?,?,?,?,?,1) on  "
						+ " duplicate key update count=count+1


--  设置权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' pwd' WITH GRANT OPTION;

flush privileges;


--  分组后显示每组的几条数据
select a.fdid , a.adid , a.apk , a.pkgName , a.name from
(select t1.*,(select count(*)+1 from recommend where fdid=t1.fdid and rid<t1.rid) as group_id from recommend t1) a
where a.group_id<=5

select * from (
select localdate , userid , sum(amount) as amount from tab_pay_order where localdate between '20180320' and '20180325' group by
userid , localdate order by localdate , amount desc
) as a left join
(
select localdate , userid , sum(amount) as amount from tab_pay_order where localdate between '20180320' and '20180325' group by
userid , localdate order by localdate , amount desc
) as b on a.localdate=b.localdate and a.amount<=b.amount group by a.localdate , a.userid , a.amount
having count(1)<=3 order by a.localdate , a.amount desc;



-- 分组查询 显示日期最小的数据
select idfa,devicetoken,idfv,dcode , min(regdate) as date from romuse GROUP BY idfa,devicetoken,idfv,dcode order by date(regdate)


delete from iappleapp where  type=2  and 
id  not in ( select id from ( select max(id) as id , count(1) as count  from iappleapp  where type=2 group by appname  ORDER BY count desc) as b );

--  将本地txt文件 以命令的形式 保存到数据库中
mysql -uroot -p20110725 lock[数据库名称] -e "load data local infile 'd:/zfy4.txt' into table pm_clientlog_w6(表明)  fields terminated by '|'  (imei,imsi,regdate,jspfile,packageid,plat,version)"



-- 删除重复数据
delete from game  where id in 
(select id from (select  max(id) as id,count(title) as count 
from game group by title having count >1 order by count desc) as tab )

alter table [biaoming] add [ziduanming]  [leixing](length)

alter table isapp modify column appname varchar(50) ;

-- 获取当前日期
select curdate();  
      
-- 获取当月最后一天。            
select last_day(curdate());
-- 获取本月第一天                   
select DATE_ADD(curdate(),interval -day(curdate())+1 day);   
 -- 获取下个月的第一天
select date_add(curdate()-day(curdate())+1,interval 1 month);
-- 获取当前月的天数
select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual; 


-- 将查询结果保存到本地txt文件
/usr/local/mysql/bin/mysql -h romherom3.mysql.rds.aliyuncs.com -uuser_romhe -ppasswd_20110725 rom3 -e "select concat(imei,','),null,concat(',',imsi,','),null,concat(',',plat,','),null,concat(',',regdate) from rom_user where date(regdate)>=date('2014-10-01') and soid >='200188003000868' and soid<='200188003001087' ">/home/webs/meng.txt


mysql -h rdsk5j61yfna0312q977.mysql.rds.aliyuncs.com -uappstoreljd -pljd20151123 appstore -e "select idfa from iosrecimeisad where adid='876336838'">/alidata1/linshi/zfy/ximalaya.txt



/usr/local/mysql/bin/mysql -hrds32m2q332m2q3.mysql.rds.aliyuncs.com -uappstore -pdelong20110725 appstore -e "select * from iosuser_old">/home/webs/zfy/iosold.txt



-- 查询指定数据库有多少张表 appstore 为要查询的数据库
SELECT count(*) TABLES, table_schema FROM information_schema.TABLES  where table_schema = 'appstore' GROUP BY table_schema;

ALTER TABLE `iosappcheck` ADD COLUMN `registerdate`  varchar(255) NULL COMMENT '苹果账号注册时间';




--删除计划任务
DROP EVENT  e_test_insert (计划任务名称)

--当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS
--DROP EVENT IF EXISTS e_test;

--停止计划任务
ALTER EVENT    e_test_insert (计划任务名称) DISABLE;


--开始事件
ALTER EVENT e_test ENABLE(计划任务名称);


1. hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降。而btree索引就得在节点上挨着查找了,很明显在数据精确查找方面hash索引的效率是要高于btree的;
 
2. 那么不精确查找呢,也很明显,因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持;
 
3. 对于btree支持的联合索引的最优前缀,hash也是无法支持的,联合索引中的字段要么全用要么全不用;
 
4. hash不支持索引排序,索引值和计算出来的hash值大小并不一定一致。





-- MySQL 添加列,修改列,删除列
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

	查看列:
	desc [表名];
	
	修改表名:
	alter table [t_book] rename to [bbb];
	
	添加列:
	alter table 表名 add column 列名 varchar(30);
	
	删除列:alter table 表名 drop column 列名;
	
	修改列名MySQL: alter table bbb change nnnnn hh int;
	
	修改列名SQLServer:exec sp_rename't_student.name','nn','column';
	
	修改列名Oracle:lter table bbb rename column nnnnn to hh int;
	
	修改列属性:alter table t_book modify name varchar(22);
	
	sp_rename:SQLServer 内置的存储过程,用与修改表的定义。



--MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列

	查看表的字段信息:desc 表名;
	
	查看表的所有信息:show create table 表名;
	
	添加主键约束:
		alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
	
	添加外键约束:
		alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
	
	删除主键约束:
		alter table 表名 drop primary key;
	
	删除外键约束:
		alter table 表名 drop foreign key 外键(区分大小写);
	
	修改表名:
		alter table t_book rename to bbb;
	
	添加列:
		alter table 表名 add column 列名 varchar(30);
	
	删除列:
		alter table 表名 drop column 列名;
	
	修改列名MySQL: 
		alter table bbb change nnnnn hh int;
	
	修改列名SQLServer:
		exec sp_rename't_student.name','nn','column';
	
	修改列名Oracle:
		alter table bbb rename column nnnnn to hh int;
	
	修改列属性:
		alter table t_book modify name varchar(22);
	
	sp_rename:SQLServer 内置的存储过程,用与修改表的定义。
  

  

原文地址:https://www.cnblogs.com/zfy0098/p/5114312.html