由于我日常在mac OS 和ubuntu上进行开发,安装Navicat有点麻烦,,,而Navicat是我比较喜欢的图形化界面,因此在纠结一阵之后决定,,就用命令行搞了吧,,也有优势的,你看我这不是记住好多命令了嘛。
下面将按照日常使用顺序,介绍一些日常使用的MySQL命令。
//登录,在shell中使用
mysql -u username -p
//显示所有数据库
show databases;
//选择数据库
use mydb;
//显示所有数据表
show tables;
//查看表结构
desc mytable;
//查看表的创建语句
show create table mytable;
//修改表结构
ALTER TABLE `mytable` ADD COLUMN `add_column` VARCHAR(256) COMMENT '添加的列' after device_id;
//修改表名
ALTER TABLE table_name RENAME TO new_table_name
最后这两条命令在使用flyway时尤其重要,因为平时你可以在本地删库重建,但是在线上记录了版本,必须通过修改语句修改字段or表名。
几个常用函数
最近的工作中用到了一些MySQL的函数,特此记录一下。
floor(x)
该函数返回x的最大整数值,但是不能大于x。即:不能四舍五入。
可以看到floor(2.88)
和floor(2.223)
得到的结果都是2
;
round(x,d)
round()函数返回x的四舍五入整数值。当存在第二个参数d时,四舍五入结果为x保留小数点后d位的浮点数。
from_unixtime(unix_timestamp, format)
我们经常在数据库中以时间戳的形式保存时间,这样很方便,但是存在一个问题,查询出来的时候我们看不懂当前记录是哪一天的,因此MySQL提供了from_unixtime()函数。
第一个参数为时间戳(PS:秒级时间戳),第二个参数为转化后的日期格式,如果第二个字符串为空,则默认格式为:%Y-%m-%d %H:%i:%s
即:2018-10-11 12:00:23
.
substr(string,index,length)
字符串截取函数,第一个参数为原字符串,第二个参数为截取起始的index,第三个字符串为截取长度。
实例:
select count(*),substr(from_unixtime(floor(event_timestamp / 1000)),1,10)
from dau
where 1=1
group by substr(from_unixtime(floor(event_timestamp / 1000)),1,10)
这个例子中:数据库存的是每一条记录的时间戳,但是查询需求需要按照日期分组,所以首先将时间戳除以1000拿到秒级时间戳,然后拿到日期字符串并截取日期部分,拿到类似于2018-10-11
的字段并按照他分组计数。
当然还可以使用
直接拿到日期字段。
ChangeLog
2018-10-16 完成以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见个人博客------>呼延十