MySQL 常用命令

DDL

  1. create
    创建一个数据库,用法如下:

    1
    create database dbname;

    创建一个表,用法如下:

    1
    create table tbname(cname1 varchar(10), cname2 int(3));
  1. drop
    删除数据库,用法如下:

    1
    drop database dbname;

    删除表,用法如下:

    1
    drop table tbname;
  2. alert
    修改表类型,用法如下:

    1
    alter table tbname modify [column] column_definition [first | after col_name];

    增加表字段,用法如下:

    1
    alter table tbname add [column] column_definition [first | after col_name];

    删除表字段,用法如下:

    1
    alter table tbname drop [column] col_name;

    修改表字段,用法如下:

    1
    alter table tbname change [column] old_col_name column_definition [first | after col_name];

    修改表名,用法如下:

    1
    alter table tbname rename [to] new_taname;

:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify 则不能。

DML

  1. insert
    增加新纪录,用法如下:

    1
    insert into tablename(field1, field2, ..., fieldn) values (v1, v2, ..., vn);
  2. delete
    删除指定记录,用法如下:

    1
    delect from tablename [where condition];
  3. update
    更新指定记录,用法如下:

    1
    update tablename set field1=v1, field2=v2,...,fieldn=vn [where condition]
  4. select
    查询记录,用法如下:

    1
    select * from tablename [where condition]

DCL

  1. grant
    grant 用来授权,它的用法如下:

    1
    grant select, insert on test_sql.* to 'newuser'@'localhost' identified by 'password'; // ALL PRIVILEGES 所有权限
  2. revoke
    revoke 用来回收权限,它的用法如下:

    1
    revoke insert on test_sql.* from 'newuser'@'localhost';

Tools

  1. mysql

    • 连接数据库

      1
      mysql -uroot -h192.168.4.115 -p'123456' -P54321

      其中,参数解释如下:

      1
      2
      3
      4
      -u, --user=name // 指定用户名
      -p, --password=psw // 指定密码
      -h, --host=ip // 指定主机 IP
      -P, --port=num // 指定端口号
    • 导入数据

      mysql 可以用来导入通过mysqldump导出的数据文件,还原数据。

      1
      mysql -u -h -p -P < alldb.sql
  2. mysqldump

    • 备份所有数据库

      1
      mysqldump -u -p -h -P --all-database > alldb.sql
    • 备份指定数据库

      1
      mysqldump -u -p -h -P dbname > db.sql
    • 备份指定数据库下的某个表

      1
      mysqldump -u -p -h -P dbname tbname > tb.sql
    • 导出指定数据库结构(即所有表结构且不含数据)

      1
      mysqldump -u -p -h -P -d dbname > db.sql
    • 导出指定数据库表结构(不含数据)

      1
      mysqldump -u -p -h -P -d dbname tbname > db.sql
  3. mysqlbinlog
    可以使用 mysqlbinlog 来查看 MySQL 产生的 binlog。

  4. show
    连接数据库后,可以使用 show 来查看数据库的状态。

    • show grants

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      mysql> show grants;
      +--------------------------------------------------------------------------------------------------------------------------------------------+
      | Grants for root@192.168.4.115 |
      +--------------------------------------------------------------------------------------------------------------------------------------------+
      | GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.4.115' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
      +--------------------------------------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec)
      mysql> show grants for root;
      +--------------------------------------------------------------------------------------------------------------+
      | Grants for root@% |
      +--------------------------------------------------------------------------------------------------------------+
      | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
      +--------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec)
    • show binlog events
      可以使用该命令查看 binlog

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      mysql> show binlog events\G
      *************************** 1. row ***************************
      Log_name: mysql-bin.000001
      Pos: 4
      Event_type: Format_desc
      Server_id: 14016006
      End_log_pos: 120
      Info: Server ver: 5.6.31-77.0-log, Binlog ver: 4
      *************************** 2. row ***************************
      Log_name: mysql-bin.000001
      Pos: 120
      Event_type: Query
      Server_id: 14016006
      End_log_pos: 1891
    • show variables
      可以使用该命令来查看变量的值

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      mysql> show variables like '%read_only%';
      +------------------+-------+
      | Variable_name | Value |
      +------------------+-------+
      | innodb_read_only | OFF |
      | read_only | ON |
      | super_read_only | ON |
      | tx_read_only | OFF |
      +------------------+-------+
      4 rows in set (0.00 sec)

Others

  1. show create tbname
    显示创建表的语句,如下:

    1
    2
    3
    4
    5
    6
    7
    mysql> show create table test_phxsql.test_phxsql\G
    *************************** 1. row ***************************
    Table: test_phxsql
    Create Table: CREATE TABLE `test_phxsql` (
    `name` varchar(80) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
  2. desc tbname
    显示表结构,如下:

    1
    2
    3
    4
    5
    6
    7
    mysql> desc test_phxsql.test_phxsql\g
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | name | varchar(80) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    1 row in set (0.00 sec)