记录mysql相关内容
#mysql登录命令行
mysql -hhostname -uusername -ppassword -Pport -A
-D,--database=name 打开指定数据库
--delimiter=name 指定分隔符
-h,--host=name 服务器名称
-p,--password[=name] 密码
-P,--port=# 端口号
--prompt=name 设置提示符
-u,--user=name 用户名
-V,--version 输出版本信息并且退出
注意:使用mysql -hhostname -uusername -ppassword -Pport的方式进入数据,连接成功,然后运行了use dbname命令,出现了下面一段话:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
出现问题的原因是: 我们进入mysql 时,没有使用-A参数; 当我们打开数据库,即use dbname时,要预读数据库信息,当使用-A参数时,就不预读数据库信息。
当数据库中表非常多,如果预读数据库信息,将非常慢,可能会卡住,如果数据库中表非常少,将不会出现问题。
正确的打开方式是: mysql -hhostname -uusername -ppassword -Pport -A的方式进入数据库。
提供 数据库 ip port 数据库名 还有相应的表名 以及 sql逻辑
#清空表
delete from 表名;
truncate table 表名;
使用truncate table可以清空mysql表中所有内容;
效率上truncate比delete快;
truncate删除后不记录mysql日志,不可以恢复数据;
truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
不带where参数的delete语句可以删除mysql表中所有内容;
delete的效果有点像将mysql表中所有记录一条一条删除到删完。
#删除行
DELETE FROM table_name WHERE dt=20190401;
#改名
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
alter table name modify column pv decimal(15) DEFAULT '0' COMMENT 'PV',
#增加一列排序
row_number() over (order by search_pv desc) as rank
#增加列
(一般情况会很快,但如果表中的数据量很大,添加命令输入后会卡很久……)
alter table table add column title varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '资源名称';
#格式化输出
select * from mysqlTable limit 5 \G
#数据类型遇到过问题,很大的数据量,比如时间、曝光pv,用了int,使得数据溢出,这种情况,可以将数据定义为bigint,或者decimal(15)。
来源:https://www.cnblogs.com/syj-love-dy/p/11136651.html