本文所讲均为,日常工作中常用到的sql语句,另外也是为了节省多次书写耗时所创作。
查看当前使用的数据库:
select database();查看当前登录的用户:
select user();连接服务中参数的疑问(mysql -h ip -Pport -u user -p -A)
-h == --host
:主机名的值
-P == --port
:指明端口(默认使用3306)
-u == --user
:指明登录的用户
-p == --password
:指明密码(可以明文:-p123456)
-A
:具体意思我也不太清楚,在读一个大库的时候,show所有的表读不出来,提示我加这个参数。ssl参数本人自己也不太明白。
是否有
desc table;
报错的情况:
ERROR 1105 (HY000): Proxy Warning - near "desc": syntax error
;
以及show columns from table;
报错:
ERROR 1105 (HY000): Proxy Warning - near "columns": syntax error
;
没关系:请看MySQL官方给出的解释:错误、错误代码及常见问题--5.7版本、
错误、错误代码及常见问题--8.0版本。索引常见操作:
type[]:
1.PRIMARY KEy(主键索引)
2.UNIQUE(唯一索引)
3.INDEX(普通索引)
4.FULLTEXT(全文索引)
CUD:
1.增加:ALTER TABLE table_name
ADD type['index'] (column
);
2.修改:MySQL中貌似没有这个操作,那么就上下联动先删除后增。
3.删除:ALTER TABLE table_name
DROP type['index'] (column
);
复制表:
仅结构:create table table1 select * from table2 where 1=2;
结构+数据:create table table1 select * from table2;
导入导出:
导出:mysqldump -u root -p passwd dbname tableName>nice.sql;
(单张表)
导出的文件是二进制的文件查看的时候需要做格式转换: Windows下需要将mysql的bin目录添加到环境变量path中并且以管理员的身份运行cmd
mysqlbinlog --base64-output=decode-rows -v --start-datetime="2018-05-14 07:44:00" --stop-datetime="2018-05-14 07:45:00" ./mysql-bin.000561 > sql561.sql
另外--base64-output
的参数(也就是对应bin-log文件的三种格式)有:['NEVER','AUTO','UNSPEC','DECODE-ROWS']。清空表,并且主键值回到起点
TRUNCATE TABLE tablename;
(此处让我想起Linux中的truncate -s 0 filename
命令);-
运维/维护时常用语句:
-
查看MySQL所有进程-->表:
show processlist;
(只能查询出info(简略查询进程信息))orshow full PROCESSLIST ;
(完整的进程信息,例如要查看较长的info字段内容); -
查询是否锁表:
show OPEN TABLES where In_use > 0;
-
被锁住的:
show OPEN TABLES where In_use > 0;
-
等待锁定:
show OPEN TABLES where In_use > 0;
-
统计数据库有多少张表:
SELECT COUNT(*) FROM information_schema.TABLES where TABLE_SCHEMA = 'dbName';
-
统计一张表中有多少字段:
select count(*) from information_schema.COLUMNS where TABLE_SCHEMA='dbName' and TABLE_NAME='tableName';
(COLUMNS需要加``) -
查看是否开启了操作日志系统:
show variables like '%log_bin%';
-
查看用户拥有的权限:
show grants for 用户名;
-
连接(远程连接mysql时)出现错误提示:Table ‘performance_schema.session_variables’ doesn’t exist:
运行mysql_upgrade -u root -p --force,输入密码后。然后重启MySQL服务。 -
配置文件所在地:/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/mysql/my.cnf。
- 再来点福利,快速连接集群中的数据库或者项目中的多种数据库中的某个。
(db.sh)中的IP都是乱打的,不要去浪费时间。
#!/bin/bash
#filename:db.sh
#description:选择需要连接的数据库
#author:leeboot
#email:leeboot@163.com
echo "Select db to connect:"
echo " [1] test-data"
echo " [2] test-data2"
echo " [3] nice"
read -p "type a number, then press RETURN: " num
case $num in
1)
echo "Connect to PostgreSQL test-data:"
psql -h rm-2zedasd64510sed6o.pg.rds.aliyuncs.com -p 3433 -U test_data
;;
2)
echo "Connect to PostgreSQL test-data2:"
psql -h 199.168.123.11 -p 3433 -U test_data
;;
3)
echo "Connect to Mysql nice(with user leeboot):"
mysql -A -h 127.0.0.1 -u leeboot -p crawler_queue
;;
esac
- 持续更新,更新+2。