MySQL常用命令

使用mysql

  • 展示数据库,使用数据库;展示数据表。
mysql> SHOW DATABASES;
+----------------------------+
| Database                   |
+----------------------------+
| blog                       |
| bookshop                   |
| boot_cache                 |
| bootvue                    |
| device                     |
| ems                        |
| febs_security              |
| haiyu                      |
| information_schema         |
| ldms                       |
| learn                      |
| mmt_cloud                  |
| mydb                       |
| mysql                      |
| nacos_config               |
| performance_schema         |
| practice_teaching_base_ems |
| security                   |
| spring_cloud               |
| ssm                        |
| sys                        |
+----------------------------+
21 rows in set (0.00 sec)

mysql> USE learn;
Database changed

mysql> SHOW TABLES;
+-----------------+
| Tables_in_learn |
+-----------------+
| city            |
| dept            |
| emp             |
| emp_bak         |
| myview1         |
| pro             |
| salgrade        |
| t_act           |
| t_user          |
| user            |
| user_tbl        |
+-----------------+
11 rows in set (0.00 sec)
  • 显示表列
1、SHOW COLUMNS FROM emp;

2、DESCRIBE emp;

mysql> DESCRIBE emp;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO    | int         | NO   | PRI | NULL    |       |
| ENAME    | varchar(10) | YES  |     | NULL    |       |
| JOB      | varchar(9)  | YES  |     | NULL    |       |
| MGR      | int         | YES  |     | NULL    |       |
| HIREDATE | date        | YES  |     | NULL    |       |
| SAL      | double(7,2) | YES  |     | NULL    |       |
| COMM     | double(7,2) | YES  |     | NULL    |       |
| DEPTNO   | int         | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

检索数据

  • 检索单列
  • 检索多列(,)
  • 检索所有列(*)
  • 检索不同的行
mysql> SELECT deptno FROM emp;
+--------+
| deptno |
+--------+
|     20 |
|     30 |
|     30 |
|     20 |
|     30 |
|     30 |
|     10 |
|     20 |
|     10 |
|     30 |
|     20 |
|     30 |
|     20 |
|     10 |
+--------+
14 rows in set (0.00 sec)

# 解决办法是使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

mysql> SELECT DISTINCT deptno FROM emp;
+--------+
| deptno |
+--------+
|     20 |
|     30 |
|     10 |
+--------+
3 rows in set (0.00 sec)
  • 限制结果
mysql> SELECT ename FROM emp LIMIT 5;
+--------+
| ename  |
+--------+
| SMITH  |
| ALLEN  |
| WARD   |
| JONES  |
| MARTIN |
+--------+
5 rows in set (0.01 sec)
# LIMIT 5指示MySQL返回不多于5行。

mysql> SELECT ename FROM emp LIMIT 3, 4;
mysql> SELECT ename FROM emp LIMIT 4 OFFSET 3;
+--------+
| ename  |
+--------+
| JONES  |
| MARTIN |
| BLAKE  |
| CLARK  |
+--------+
4 rows in set (0.00 sec)
# LIMIT 3, 4(LIMIT 4 OFFSET 3)指示MySQL返回从行3开始的4行。

排序检索数据

  • 排序数据(ORDER BY)
  • 按多个排序(排序按顺序进行)
  • 指定排序方向(DESC降序,默认ASC升序)

过滤数据

  • 使用WHERE子句

  • WHERE子句操作符(<>、!=不等于,BETWEEN在指定的两个值之间)

mysql> SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000;
+-------+--------+----------+------+------------+---------+---------+--------+
| EMPNO | ENAME  | JOB      | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
+-------+--------+----------+------+------------+---------+---------+--------+
|  7499 | ALLEN  | SALESMAN | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
|  7521 | WARD   | SALESMAN | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
|  7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
|  7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
|  7876 | ADAMS  | CLERK    | 7788 | 1987-05-23 | 1100.00 |    NULL |     20 |
|  7934 | MILLER | CLERK    | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
+-------+--------+----------+------+------------+---------+---------+--------+
6 rows in set (0.00 sec)
  • 空值检查(IS NULL)
mysql> SELECT * FROM emp WHERE mgr IS NULL;
+-------+-------+-----------+------+------------+---------+------+--------+
| EMPNO | ENAME | JOB       | MGR  | HIREDATE   | SAL     | COMM | DEPTNO |
+-------+-------+-----------+------+------------+---------+------+--------+
|  7839 | KING  | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL |     10 |
+-------+-------+-----------+------+------------+---------+------+--------+
1 row in set (0.00 sec)
  • OR操作符

  • 计算次序(OR操作符优先级高于AND操作符)

    在WHERE子句中使用圆括号 任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。

  • IN操作符(指定条件范围)

  • NOT操作符(有且只有一个功能,否定它之后所跟的任何条件)

用通配符进行过滤

  • LIKE操作符

    • 通配符(wildcard)
      • %(表示任何字符出现任意次数,%不能匹配NULL。)
      • _(总是匹配单个字符)
    • 搜索模式(search pattern)
  • 使用通配符的技巧

正如所见, MySQL的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。

  1. 不要过度使用通配符。如果其他操作符能达到相同的目的,应该
    使用其他操作符。
  2. 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用
    在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起
    来是最慢的。
  3. 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

用正则表达式进行搜索

MySQL常用命令

上一篇:PolarDB-X 动手实践系列第一讲:如何一键部署开源 PolarDB-X


下一篇:HeidiSQL - sql client