MySQL 查询

准备练习环境

导入数据库

复制代码
mysql> source /root/practice.sql

库内容:

查询库

复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| crashcourse        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

进入库

复制代码
mysql> use crashcourse;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

查看表

复制代码
mysql> show tables;
+-----------------------+
| Tables_in_crashcourse |
+-----------------------+
| customers             |
| orderitems            |
| orders                |
| productnotes          |
| products              |
| vendors               |
+-----------------------+
6 rows in set (0.00 sec)

select命令

数据列限制输出行数

SELECT 列名 FROM 表名 LIMIT 行数;

复制代码
mysql> SELECT prod_name FROM products LIMIT 5,5; -- DATA ROW 6 TO 10
+--------------+
| prod_name    |
+--------------+
| Carrots      |
| Fuses        |
| JetPack 1000 |
| JetPack 2000 |
| Oil can      |
+--------------+
5 rows in set (0.00 sec)

查询列数据

SELECT 字段列表 FROM 库名.表名;

数据列去重 SELECT DISTINCT

查看订单表的所有内容

复制代码
mysql> select *  from orders ;
+-----------+---------------------+---------+
| order_num | order_date          | cust_id |
+-----------+---------------------+---------+
|     20005 | 2023-09-01 00:00:00 |   10001 |
|     20006 | 2023-09-12 00:00:00 |   10003 |
|     20007 | 2023-09-30 00:00:00 |   10004 |
|     20008 | 2023-10-03 00:00:00 |   10005 |
|     20009 | 2023-10-08 00:00:00 |   10001 |
+-----------+---------------------+---------+
5 rows in set (0.00 sec)

排序 order by 列名 (desc)

根据列的值进行从小到大的排序输出,使用desc 排序结果为从大到小

1、排序结果对整行数据生效

2、使用多列作为排序的依据时,首先使用第一个指定的列对整体表排序,然后对于第一列 中存在的重复的列,使用指定的第二列数据进行小范围排序

复制代码
mysql> SELECT prod_id,prod_name FROM products ORDER BY prod_name;
+---------+----------------+
| prod_id | prod_name      |
+---------+----------------+
| ANV01 | .5 ton anvil     |
| ANV02 | 1 ton anvil      |
| ANV03 | 2 ton anvil      |
| FB | Bird seed           |
| FC | Carrots             |
| DTNTR | Detonator        |
| FU1 | Fuses              |
| JP1000 | JetPack 1000    |
| JP2000 | JetPack 2000    |
| OL1 | Oil can            |
| SAFE | Safe              |
| SLING | Sling            |
| TNT1 | TNT (1 stick)     |
| TNT2 | TNT (5 sticks)    |
+---------+----------------+
14 rows in set (0.00 sec)

where子句

SELECT 列名1,.... FROM 表 WHERE 过滤条件;

比较符号:

= != > >= < <=

空 is null 表头下没有数据

非空 is not null 表头下有数据

mysql服务 使用关键字 null 或 NULL 表示表头没有数据

范围匹配:

in (值列表) //在...里

not in (值列表) //不在...里

between 数字1 and 数字2 //在...之间

查看订单表中订单数量为20005的信息

复制代码
mysql> select *  from orders where order_num = 20005;
+-----------+---------------------+---------+
| order_num | order_date          | cust_id |
+-----------+---------------------+---------+
|     20005 | 2023-09-01 00:00:00 |   10001 |
+-----------+---------------------+---------+
1 row in set (0.00 sec)

查看客户信息中id在10001到10003之间的信息

复制代码
mysql> select *  from customers where cust_id between 10001 and 10003 ;
+---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+
| cust_id | cust_name   | cust_address     | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email          |
+---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+
|   10001 | Coyote Inc. | 200 Maple Lane   | Detroit   | MI         | 44444    | USA          | Y Lee        | ylee@coyote.com     |
|   10002 | Mouse House | 333 Fromage Lane | Columbus  | OH         | 43333    | USA          | Jerry Mouse  | NULL                |
|   10003 | Wascals     | 1 Sunny Place    | Muncie    | IN         | 42222    | USA          | Jim Jones    | rabbit@wascally.com |
+---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+
3 rows in set (0.01 sec)

模糊匹配

where 字段名 like "表达式";

通配符:

_ 表示 1个字符

% 表示零个或多个字符

查找顾客表中顾客联系人信息为"一个字符[空格]三个字符"的信息

复制代码
mysql> select *  from customers where cust_contact like "_ ___" ;
+---------+----------------+---------------------+-----------+------------+----------+--------------+--------------+------------------+
| cust_id | cust_name      | cust_address        | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email       |
+---------+----------------+---------------------+-----------+------------+----------+--------------+--------------+------------------+
|   10001 | Coyote Inc.    | 200 Maple Lane      | Detroit   | MI         | 44444    | USA          | Y Lee        | ylee@coyote.com  |
|   10004 | Yosemite Place | 829 Riverside Drive | Phoenix   | AZ         | 88888    | USA          | Y Sam        | sam@yosemite.com |
+---------+----------------+---------------------+-----------+------------+----------+--------------+--------------+------------------+
2 rows in set (0.00 sec)

找顾客名字以字母c开头的(没有空格挨着敲)

复制代码
mysql> select *  from customers where cust_name like "c%" ;
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+-----------------+
| cust_id | cust_name   | cust_address   | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email      |
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+-----------------+
|   10001 | Coyote Inc. | 200 Maple Lane | Detroit   | MI         | 44444    | USA          | Y Lee        | ylee@coyote.com |
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+-----------------+
1 row in set (0.00 sec)

逻辑比较

多个判断条件

逻辑与 and (&&) 多个判断条件必须同时成立

逻辑或 or (||) 多个判断条件其中某个条件成立即可

逻辑非 not (!) 取反

逻辑与and 优先级高于逻辑或 or

查找id为10001或住址在Sunny Place的顾客

复制代码
mysql> select *  from customers where cust_id = 10001 or cust_address = "1 Sunny Place" ;
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+---------------------+
| cust_id | cust_name   | cust_address   | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email          |
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+---------------------+
|   10001 | Coyote Inc. | 200 Maple Lane | Detroit   | MI         | 44444    | USA          | Y Lee        | ylee@coyote.com     |
|   10003 | Wascals     | 1 Sunny Place  | Muncie    | IN         | 42222    | USA          | Jim Jones    | rabbit@wascally.com |
+---------+-------------+----------------+-----------+------------+----------+--------------+--------------+---------------------+
2 rows in set (0.00 sec)

正则匹配

select 字段名列表 from 库名.表名 where字段名 regexp '正则表达式';

转义字符

回顾shell学过的元字符(正则符号)

^ 匹配行首

$ 匹配行尾

\] 匹配范围内任意一个 \* 前边的表达式出现零次或多次 \| 或者 . 任意一个字符 匹配cust_zip 中以0\~5数字开头的信息 mysql> select * from customers where cust_zip regexp "^[0-5]"; +---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+ | cust_id | cust_name | cust_address | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email | +---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+ | 10001 | Coyote Inc. | 200 Maple Lane | Detroit | MI | 44444 | USA | Y Lee | ylee@coyote.com | | 10002 | Mouse House | 333 Fromage Lane | Columbus | OH | 43333 | USA | Jerry Mouse | NULL | | 10003 | Wascals | 1 Sunny Place | Muncie | IN | 42222 | USA | Jim Jones | rabbit@wascally.com | | 10005 | E Fudd | 4545 53rd Street | Chicago | IL | 54545 | USA | E Fudd | NULL | +---------+-------------+------------------+-----------+------------+----------+--------------+--------------+---------------------+ 4 rows in set (0.00 sec)

相关推荐
万能小锦鲤4 分钟前
《Java EE与中间件》实验三 基于Spring Boot框架的购物车
java·spring boot·mysql·实验报告·购物车·文档资源·java ee与中间件
Hoking4 分钟前
CentOS7环境安装包部署并配置MySQL5.7
mysql
野犬寒鸦25 分钟前
MyBatis-Plus 中使用 Wrapper 自定义 SQL
java·数据库·后端·sql·mybatis
我爱一条柴ya1 小时前
【AI大模型】RAG系统组件:向量数据库(ChromaDB)
数据库·人工智能·pytorch·python·ai·ai编程
北北~Simple1 小时前
第一次搭建数据库
服务器·前端·javascript·数据库
鸢想睡觉1 小时前
【数据库基础 1】MySQL环境部署及基本操作
数据库·mysql
没有口袋啦1 小时前
《数据库》MySQL备份回复
数据库
c7_ln1 小时前
MYSQL C_API使用全解
c语言·数据库·mysql
karry01301 小时前
高并发导致重复key问题--org.springframework.dao.DuplicateKeyException
java·数据库·ide
叫我菜菜就好1 小时前
【node后端】搭建项目(Express+Ts+Typeorm+Mysql一步到位)
mysql·oracle·express