SQL查询是我们用得最多的语句,掌握其工作原理可以帮助我们理解SQL语法结构。
基本上有6大步骤:
1. 获取数据 - FROM, JOIN
2. 行过滤 - WHERE
3. 分组 - GROUP BY
4. 分组过滤 - HAVING
5. 选择数据 - SELECT
6. 排序、分页 - ORDER BY/LIMIT/OFFSET
0. 准备数据
我们用两张表来展示查询工作过程
CREATE DATABASE dbtest;
USE dbtest;
CREATE TABLE employees(employee_name VARCHAR(30) NOT NULL, department_id INT);
CREATE TABLE departments(department_id INT NOT NULL, department_name VARCHAR(30));
INSERT INTO departments VALUES(1, 'HR');
INSERT INTO departments VALUES(2, 'R&D');
INSERT INTO departments VALUES(3, 'Marketing');
INSERT INTO departments VALUES(4, 'Sales');
INSERT INTO employees VALUES('Andy', 1);
INSERT INTO employees VALUES('Bob', 2);
INSERT INTO employees VALUES('Candy',3);
INSERT INTO employees VALUES('David',1);
INSERT INTO employees VALUES('Ella',2);
INSERT INTO employees VALUES('Fann',1);
INSERT INTO employees VALUES('Gary',4);
INSERT INTO employees VALUES('Henry',4);
INSERT INTO employees VALUES('Ivy',4);
INSERT INTO employees VALUES('Jack',4);
用下面查询语句来说明。
SELECT d.department_name AS "Department Name"
FROM employees e
JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_name != 'Marketing'
GROUP BY d.department_name
HAVING COUNT(*) >= 3
ORDER BY d.department_name DESC
LIMIT 1;
1. 获取数据
第一步FROM和JOIN取数据,这样得到的临时结果是卡迪尔积,共有10*4&#