写了6年SQL,推荐快速上手MySQL 的SQL语句

写了6、7年SQL,有写复杂,有写简单,但总体而言,基础是统一的,。就像编程之需要会加减乘除,用MySQL懂这些SQL就足够了。

目录

      • [1. SELECT 查询](#1. SELECT 查询)
      • [2. WHERE 子句](#2. WHERE 子句)
      • [3. ORDER BY 子句](#3. ORDER BY 子句)
      • [4. GROUP BY 子句](#4. GROUP BY 子句)
      • [5. HAVING 子句](#5. HAVING 子句)
      • [6. JOIN 查询](#6. JOIN 查询)
      • [7. 子查询](#7. 子查询)
      • [8. INSERT INTO 查询](#8. INSERT INTO 查询)
      • [9. UPDATE 查询](#9. UPDATE 查询)
      • [10. DELETE 查询](#10. DELETE 查询)
      • [11. LIMIT 子句](#11. LIMIT 子句)
      • [12. DISTINCT 关键字](#12. DISTINCT 关键字)

MySQL 查询语句是用于从数据库中检索数据的语句。以下是一些常见的 MySQL 查询语句,并附详细说明和示例:

1. SELECT 查询

基本查询

sql 复制代码
SELECT column1, column2, ...
FROM table_name;

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees;

employees 表中选择 first_namelast_name 字段。

查询所有列

sql 复制代码
SELECT *
FROM table_name;

示例:

sql 复制代码
SELECT *
FROM employees;

employees 表中选择所有列。

带条件的查询

sql 复制代码
SELECT column1, column2, ...
FROM table_name
WHERE condition;

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';

employees 表中选择 Sales 部门的 first_namelast_name 字段。

2. WHERE 子句

使用 ANDOR 逻辑运算符

sql 复制代码
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 OR condition3;

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees
WHERE department = 'Sales' AND salary > 50000;

employees 表中选择 Sales 部门且薪水大于 50000 的员工的 first_namelast_name 字段。

3. ORDER BY 子句

按指定列排序

sql 复制代码
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC|DESC, column2 ASC|DESC, ...;

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees
ORDER BY last_name ASC, first_name DESC;

last_name 升序和 first_name 降序排列 employees 表中的数据。

4. GROUP BY 子句

按指定列分组并聚合数据

sql 复制代码
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;

示例:

sql 复制代码
SELECT department, COUNT(*)
FROM employees
GROUP BY department;

department 列对 employees 表中的数据进行分组,并计算每个部门的员工数量。

5. HAVING 子句

对分组后的结果进行过滤

sql 复制代码
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING condition;

示例:

sql 复制代码
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

筛选出员工数量大于 5 的部门。

6. JOIN 查询

内连接

sql 复制代码
SELECT columns
FROM table1
INNER JOIN

table2
ON table1.column = table2.column;

示例:

sql 复制代码
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

employees 表和 departments 表进行内连接,选择 first_namelast_namedepartment_name

左连接

sql 复制代码
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

示例:

sql 复制代码
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

employees 表中选择所有记录,并匹配 departments 表中的记录,如果没有匹配到则返回 NULL。

右连接

sql 复制代码
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

示例:

sql 复制代码
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

departments 表中选择所有记录,并匹配 employees 表中的记录,如果没有匹配到则返回 NULL。

7. 子查询

在 SELECT 中使用子查询

sql 复制代码
SELECT column1
FROM table_name
WHERE column2 = (SELECT column
                 FROM another_table
                 WHERE condition);

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees
WHERE department_id = (SELECT department_id
                       FROM departments
                       WHERE department_name = 'Sales');

employees 表中选择 Sales 部门的所有员工。

在 FROM 子句中使用子查询

sql 复制代码
SELECT subquery.column1, subquery.column2
FROM (SELECT column1, column2
      FROM table_name
      WHERE condition) AS subquery;

示例:

sql 复制代码
SELECT sub.first_name, sub.last_name
FROM (SELECT first_name, last_name
      FROM employees
      WHERE department_id = 1) AS sub;

从子查询结果中选择 department_id 为 1 的员工的 first_namelast_name

8. INSERT INTO 查询

插入数据

sql 复制代码
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

示例:

sql 复制代码
INSERT INTO employees (first_name, last_name, department_id, salary)
VALUES ('John', 'Doe', 3, 50000);

employees 表中插入一条新记录。

9. UPDATE 查询

更新数据

sql 复制代码
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:

sql 复制代码
UPDATE employees
SET salary = 55000
WHERE last_name = 'Doe';

更新 last_name 为 'Doe' 的员工的 salary 为 55000。

10. DELETE 查询

删除数据

sql 复制代码
DELETE FROM table_name
WHERE condition;

示例:

sql 复制代码
DELETE FROM employees
WHERE last_name = 'Doe';

删除 last_name 为 'Doe' 的员工记录。

11. LIMIT 子句

限制结果集

sql 复制代码
SELECT column1, column2, ...
FROM table_name
LIMIT number;

示例:

sql 复制代码
SELECT first_name, last_name
FROM employees
LIMIT 10;

选择前 10 条员工记录。

12. DISTINCT 关键字

去重查询

sql 复制代码
SELECT DISTINCT column1, column2, ...
FROM table_name;

示例:

sql 复制代码
SELECT DISTINCT department_id
FROM employees;

选择 employees 表中所有不同的 department_id

这些示例涵盖了 MySQL 中的基本查询语句及其常见用法。通过这些示例,你可以构建更复杂的查询来满足不同的数据检索需求。

相关推荐
不羁。。1 小时前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
更深兼春远2 小时前
flink+clinkhouse安装部署
大数据·clickhouse·flink
yangchanghua1113 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance3 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai3 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白3 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务3 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
专注API从业者5 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
媒体人8886 小时前
GEO 优化专家孟庆涛:技术破壁者重构 AI 时代搜索逻辑
大数据·人工智能
最初的↘那颗心7 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算