MySQL细节再探|省时省力|常用MySQL

96
LeeBoot
2018.05.03 19:44* 字数 877
本文所讲均为,日常工作中常用到的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命令);

  • 运维/维护时常用语句:

  1. 查看MySQL所有进程-->表:show processlist;(只能查询出info(简略查询进程信息))orshow full PROCESSLIST ;(完整的进程信息,例如要查看较长的info字段内容);
  2. 查询是否锁表:show OPEN TABLES where In_use > 0;
  3. 被锁住的:show OPEN TABLES where In_use > 0;
  4. 等待锁定:show OPEN TABLES where In_use > 0;
  5. 统计数据库有多少张表:SELECT COUNT(*) FROM information_schema.TABLES where TABLE_SCHEMA = 'dbName';
  6. 统计一张表中有多少字段:select count(*) from information_schema.COLUMNS where TABLE_SCHEMA='dbName' and TABLE_NAME='tableName';(COLUMNS需要加``)
  7. 查看是否开启了操作日志系统:show variables like '%log_bin%';
  8. 查看用户拥有的权限:show grants for 用户名;
  9. 连接(远程连接mysql时)出现错误提示:Table ‘performance_schema.session_variables’ doesn’t exist:
    运行mysql_upgrade -u root -p --force,输入密码后。然后重启MySQL服务。
  10. 配置文件所在地:/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。
MySQL成长日志
Gupao