MySQL 这边的东西全部来找自 https://itbaima.net/document
MySQL
DQL 查的方法01
单表查询
单表查询是最简单的一种查询,我们只需要在一张表中去查找数据即可,通过使用select
语句来进行单表查询:
-- 指定查询某一列数据
SELECT 列名[, 列名]
FROM 表名
-- 会以别名显示此列
SELECT 列名 别名
FROM 表名
-- 查询所有的列数据
SELECT *
FROM 表名
-- 只查询不重复的值
SELECT DISTINCT 列名
FROM 表名
我们也可以添加where
字句来限定查询目标:
SELECT *
FROM 表名
WHERE 条件
举个例子
假设有一个名为employees
的表,它包含id
, name
, department
, 和 salary
等列。
-
查询特定列:
如果你只想查看员工的姓名和部门,可以使用:SELECT name, department FROM employees;
这将只显示
name
和department
列的数据。 -
使用列别名:
如果想在查询结果中使用不同的列名称,比如将name
列显示为Employee Name
:SELECT name AS 'Employee Name' FROM employees;
查询结果中的
name
列将显示为Employee Name
。 -
查询所有列:
要获取employees
表中所有列的数据:SELECT * FROM employees;
这将显示表中每一行的所有列数据。
-
查询不重复的值:
如果你只想查看不同的部门名称:SELECT DISTINCT department FROM employees;
这将列出
employees
表中所有不同的部门名称,不重复。 -
使用
WHERE
子句:
如果只想查看工资超过5000的员工信息:SELECT * FROM employees WHERE salary > 5000;
这将只显示
salary
列值超过5000的记录。
常用查询条件
- 一般的比较运算符,包括
=
、>
、<
、>=
、<=
、!=
等。 - 是否在集合中:
in
、not in
- 字符模糊匹配:
like
,not like
- 多重条件连接查询:
and
、or
、not
举个例子
假设有一个名为products
的表,其中包含id
, name
, price
, 和 category
等列。
-
一般的比较运算符:
- 查询价格大于100的所有产品:
SELECT * FROM products WHERE price > 100;
- 查找ID等于5的产品:
SELECT * FROM products WHERE id = 5;
- 查询价格大于100的所有产品:
-
是否在集合中(IN, NOT IN):
- 创建一个简单的表格示例来展示
IN
和NOT IN
查询的结果。以下是一个假设的products
表的内容,包含了不同类别的产品:
- 创建一个简单的表格示例来展示
id | name | price | category |
---|---|---|---|
1 | Laptop | 800 | Electronics |
2 | Shirt | 20 | Clothing |
3 | Smartphone | 500 | Electronics |
4 | Blender | 100 | Appliances |
5 | Jeans | 40 | Clothing |
6 | Microwave | 150 | Appliances |
-
查询
category
在Electronics
和Clothing
中的产品:SELECT * FROM products WHERE category IN ('Electronics', 'Clothing');
这个查询将返回以下结果:
id name price category 1 Laptop 800 Electronics 2 Shirt 20 Clothing 3 Smartphone 500 Electronics 5 Jeans 40 Clothing -
查询
category
不在Electronics
和Clothing
中的产品:SELECT * FROM products WHERE category NOT IN ('Electronics', 'Clothing');
这个查询将返回以下结果:
id name price category 4 Blender 100 Appliances 6 Microwave 150 Appliances -
字符模糊匹配(LIKE, NOT LIKE):
- 查找名字中包含“Phone”的产品:
SELECT * FROM products WHERE name LIKE '%Phone%';
- 查找名字中不包含“Phone”的产品:
SELECT * FROM products WHERE name NOT LIKE '%Phone%';
- 查找名字中包含“Phone”的产品:
-
多重条件连接查询(AND, OR, NOT):
- 同时满足多个条件的查询,比如查找价格低于100且类别为“Clothing”的产品:
SELECT * FROM products WHERE price < 100 AND category = 'Clothing';
- 满足任一条件的查询,例如查找价格低于50或高于200的产品:
SELECT * FROM products WHERE price < 50 OR price > 200;
- 同时满足多个条件的查询,比如查找价格低于100且类别为“Clothing”的产品:
这些例子展示了如何使用不同的运算符来筛选和查询数据库中的数据。在实际应用中,这些运算符可以组合使用,以满足复杂的查询需求。
排序查询
我们可以通过order by
来将查询结果进行排序:
SELECT *
FROM 表名
WHERE 条件
ORDER BY 列名 ASC|DESC
使用ASC表示升序排序,使用DESC表示降序排序,默认为升序。
我们也可以可以同时添加多个排序:
SELECT *
FROM 表名
WHERE 条件
ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC
这样会先按照列名1进行排序,每组列名1相同的数据再按照列名2排序。
举个例子
假设有一个名为employees
的表,包含以下列:id
, name
, department
, 和 salary
。
-
基本排序查询:
-
按照
salary
升序排列所有员工:SELECT * FROM employees ORDER BY salary ASC;
这将返回所有员工的列表,按其薪水从低到高排序。
ASC
表示升序排列。 -
按照
salary
降序排列所有员工:SELECT * FROM employees ORDER BY salary DESC;
这将返回所有员工的列表,按其薪水从高到低排序。
DESC
表示降序排列。
-
-
多列排序:
- 首先按照
department
升序排列,然后在每个部门内按照salary
降序排列员工:
这个查询首先会根据SELECT * FROM employees ORDER BY department ASC, salary DESC;
department
列的值将员工分组,然后在每个部门内部,员工的信息会根据他们的salary
值从高到低排序。
- 首先按照