MYSQL系列-常用命令(一)

本章主要列举MYSQL日常使用过程中用到的一些命令,主要用于总结和后续使用时可以快速查阅

基础操作

启动相关

  • net start mysqlWindows系统启动MySQL服务
  • net stop mysqlWindows系统停止MySQL服务
  • /home/mysql/mysql3306/bin/mysqld_safe --defaults-file=/home/mysql/mysql3306/conf/my.cnf --user=mysql &:Linux系统启动MySQL服务
  • mysql -h地址 -p端口 -u账号 -p:客户端连接MySQL服务(需要二次输入密码)
sql 复制代码
/home/mysql/mysql3306/bin/mysql -uroot -p -S /home/mysql/mysql3306/mysqld.sock
  • show status;:查看MySQL运行状态。
sql 复制代码
//查看线程相关参数
mysql> show status like "Threads%";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 1     |
| Threads_created   | 1     |
| Threads_running   | 1     |
+-------------------+-------+
4 rows in set (0.00 sec)
  • show processlist;:查看当前库中正在运行的所有客户端连接/工作线程。
sql 复制代码
mysql> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  2 | root | localhost | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)
mysql> select * from information_schema.processlist into outfile '/tmp/processlist.txt';
Query OK, 1 row affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'secure_file_priv';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | /tmp/ |
+------------------+-------+
1 row in set (0.00 sec)
  • help data types;:查看当前版本MySQL支持的所有数据类型。
  • quit:退出当前数据库连接。
  • show grants;:查看当前连接的权限信息。
  • show errors;:查看当前库中记录的错误信息。
  • show warnings:查看当前库抛出的所有警告信息。

库相关命令

  • show databases;:查看目前MySQL中拥有的所有库。
  • show engines;:查看当前数据库支持的所有存储引擎。
  • use 库名;:使用/进入指定的某个数据库。
  • show create database 库名;:查看创建某个库的SQL详细信息。
  • create database 库名;:新建一个数据库,后面还可以指定编码格式和排序规则。
sql 复制代码
CREATE DATABASE mydatabase
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;
  • drop database 库名;:删除一个数据库。
  • ALTER DATABASE 库名 DEFAULT CHARACTER SET 编码格式 DEFAULT COLLATE 排序规则:修改数据库的编码格式、排序规则。

表操作命令

基本命令

  • show tables;:查看一个库中的所有表。
  • desc 表名;:查看一张表的字段结构。
sql 复制代码
mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   | PRI | NULL    |       |
| b     | int(11) | YES  | MUL | NULL    |       |
| c     | int(11) | YES  |     | NULL    |       |
| d     | int(11) | YES  | MUL | NULL    |       |
+-------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)
  • show create table t1:查看一个表的建表SQL
sql 复制代码
mysql> show create table t1;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                               |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) NOT NULL,
  `b` int(11) DEFAULT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `b_index` (`b`),
  KEY `d_index` (`d`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

DDL命令

  • 建表命令
sql 复制代码
CREATE TABLE `库名`.`表名`  (
    字段名称1 数据类型(精度限制) [字段选项],
    字段名称2 数据类型(精度限制) [字段选项]
) [表选项];
markdown 复制代码
-   字段选项(可以不写,不选使用默认值):
    -   `NULL`:表示该字段可以为空。
    -   `NOT NULL`:表示改字段不允许为空。
    -   `DEFAULT 默认值`:插入数据时若未对该字段赋值,则使用这个默认值。
    -   `AUTO_INCREMENT`:是否将该字段声明为一个自增列。
    -   `PRIMARY KEY`:将当前字段声明为表的主键。
    -   `UNIQUE KEY`:为当前字段设置唯一约束,表示不允许重复。
    -   `CHARACTER SET 编码格式`:指定该字段的编码格式,如`utf8`。
    -   `COLLATE 排序规则`:指定该字段的排序规则(非数值类型生效)。
    -   `COMMENT 字段描述`:为当前字段添加备注信息,类似于代码中的注释。

-   表选项(可以不写,不选使用默认值):

    -   `ENGINE = 存储引擎名称`:指定表的存储引擎,如`InnoDB、MyISAM`等。
    -   `CHARACTER SET = 编码格式`:指定表的编码格式,未指定使用库的编码格式。
    -   `COLLATE = 排序规则`:指定表的排序规则,未指定则使用库的排序规则。
    -   `ROW_FORMAT = 格式`:指定存储行数据的格式,如`Compact、Redundant、Dynamic....`。
    -   `AUTO_INCREMENT = n`:设置自增列的步长,默认为`1`。
    -   `DATA DIRECTORY = 目录`:指定表文件的存储路径。
    -   `INDEX DIRECTORY = 目录`:指定索引文件的存储路径。
    -   `PARTITION BY ...`:表分区选项,后续讲《MySQL表分区》再细聊。
    -   `COMMENT 表描述`:表的注释信息,可以在这里添加一张表的备注。
  • alter table 表名 字段操作;:修改一张表的字段结构,操作如下:
    • add column 字段名 数据类型:向已有的表结构添加一个字段。
    • add primary key(字段名):将某个字段声明为主键。
    • add foreing key 外键字段 表名.字段名:将一个字段设置为另一张表的外键。
    • add unique 索引名(字段名):为一个字段创建唯一索引。
    • add index 索引名(字段名):为一个字段创建普通索引。
    • drop column 字段名:在已有的表结构中删除一个字段。
    • modify column 字段名 字段选项:修改一个字段的字段选项。
    • change column 字段名 新字段名:修改一个字段的字段名称。
    • drop primary key:移除表中的主键。
    • drop index 索引名:删除表中的一个索引。
    • drop foreing key 外键:删除表中的一个外键。
  • rename table 表名 to 新表名;:修改一张表的表名。
  • drop table if exists 表名:如果一张表存在,则删除对应的表。
  • truncate table 表名:清空一张表的所有数据。
  • create table 表名 like 要复制的表名:复制一张表的结构,然后创建一张新表。
  • insert into 表名 select * from 要复制的表名:复制一张表的数据
sql 复制代码
mysql> create table tt1 like t1;
Query OK, 0 rows affected (0.05 sec)

mysql> insert into tt1 select * from t1;
Query OK, 7 rows affected (0.01 sec)
Records: 7  Duplicates: 0  Warnings: 0

表分析、检查、优化

  • 分析表:用于分析表的统计信息并更新相关的优化器信息 语法如下:analyze [local | no_write_to_binlog] table 表名1;

    其中的可选参数local、no_write_to_binlog代表是否将本条SQL记录进bin-log日志,默认情况下是记录的,加上这两个参数中的其中一个后则不会记录

sql 复制代码
mysql> analyze local table t1;
+---------+---------+----------+----------+
| Table   | Op      | Msg_type | Msg_text |
+---------+---------+----------+----------+
| toby.t1 | analyze | status   | OK       |
+---------+---------+----------+----------+
1 row in set (0.02 sec)
  • 检查表:用于检查和修复表的一致性问题 语法如下:check table 表名1,表名2... [检查选项]; 检查命令有多个可选项,如下:
    • quick:不扫描行数据,不检查链接错误,仅检查表结构是否有问题。
    • fast:只检查表使用完成后,是否正确关闭了表文件的FD文件描述符。
    • changed:从上述检查过的位置开始,只检查被更改的表数据。
    • medium:检查行数据,收集每一行数据的键值(主键、外键...),并计算校验和,验证数据是否正确。
    • extended:对每行数据的所有字段值进行检查,检查完成后可确保数据100%正确。
sql 复制代码
mysql> check table t1,tt1;
+----------+-------+----------+----------+
| Table    | Op    | Msg_type | Msg_text |
+----------+-------+----------+----------+
| toby.t1  | check | status   | OK       |
| toby.tt1 | check | status   | OK       |
+----------+-------+----------+----------+
2 rows in set (0.00 sec)
  • 修复表:修复表的命令不支持InnoDB引擎,语法如下:repair [local | no_write_to_binlog] table 表名 [quick] [extended] [use_frm];
sql 复制代码
mysql> repair local table t1;
+---------+--------+----------+---------------------------------------------------------+
| Table   | Op     | Msg_type | Msg_text                                                |
+---------+--------+----------+---------------------------------------------------------+
| toby.t1 | repair | note     | The storage engine for the table doesn't support repair |
+---------+--------+----------+---------------------------------------------------------+
1 row in set (0.00 sec)
  • 优化表:用于优化和重建表的物理存储结构,以提高表的性能和释放存储空间。optimize [local | no_write_to_binlog] table 表名;
sql 复制代码
mysql> optimize local table t1;
+---------+----------+----------+-------------------------------------------------------------------+
| Table   | Op       | Msg_type | Msg_text                                                          |
+---------+----------+----------+-------------------------------------------------------------------+
| toby.t1 | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| toby.t1 | optimize | status   | OK                                                                |
+---------+----------+----------+-------------------------------------------------------------------+
2 rows in set (0.10 sec)

mysqlcheck 可以提供上述功能

DML命令

  • 插入数据
    • insert into 表名(字段名...) values(字段值...);:向指定的表中插入一条数据。
    • insert into 表名(字段名...) values(字段值...),(...)...;:向表中插入多条数据。
    • insert into 表名 set 字段名=字段值,...;:插入一条数据,但只插入某个字段的值。
    • replace into 表名(字段名1,字段名2...) values(字段值....),(字段值...),...
  • 删除数据
    • delete from 表名;:删除一张表的所有数据。
    • delete from 表名 where 条件;:根据条件删除一条或多条数据。
    • truncate table 表名:清空一张表的所有数据。
  • 修改数据
    • update 表名 set 字段名=字段值,...;:修改表中所有记录的数据。
    • update 表名 set 字段名=字段值,... where 条件;:根据条件修改一条或多条记录的数据。
    • replace 表名(字段名1,...) values(字段值...),...;:批量修改对应主键记录的数据。
  • 查询数据
    • select * from 表名;:查询一张表的所有数据。
    • select * from 表名 where 条件;:根据条件查询表中相应的数据。
    • select 字段1,字段2... from 表名 where 条件;:根据条件查询表中相应数据的指定字段。
    • select 函数(字段) from 表名;:对查询后的结果集,进行某个函数的特殊处理。
sql 复制代码
-- 联合多条SQL语句查询(union all表示不去重,union表示对查询结果去重) 
select * from 表名 where 条件 
union all 
select * from 表名 where 条件;

-- 为查询出来的字段取别名 
select 字段1 as 别名,... from 表名 where 条件; select 字段1 别名,... from 表名;

-- 基于一个字段进行排序查询 
select * from 表名 order by 字段名 asc; 
-- 按字段值正序返回结果集 
select * from 表名 order by 字段名 desc; 
-- 按字段值倒序返回结果集 
select * from 表名 order by 字段1 asc,字段2 desc; 
-- 按照多字段进行排序查询 
-- 基于字段进行分组 
select * from 表名 group by 字段1,字段2....;
-- 基于分组查询后的结果做条件过滤 
select * from 表名 group by 字段1 having 条件;
相关推荐
测开小菜鸟1 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
P.H. Infinity2 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天3 小时前
java的threadlocal为何内存泄漏
java
caridle3 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^3 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花3 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端3 小时前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan3 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer083 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源