0. 子句顺序
SELECT
FROM
WHERE/JOIN ON
GROUP BY
HAVING
ORDER BY
LIMIT
1.查询数据
这里插一嘴,后面的内容我们需要用到示例数据,地址如下,下好的文件加压,之后在test_db-master目录下执行命令。
mysql -u root -p < employees.sql
如下图:
1.1 查询全部
命令:
SELECT * FROM 表名;,用于查询表的全部数据。
例如:
SELECT *
FROM departments;
可以使用SELECT DISTINCT 列名 FROM 表名;来排除结果集中重复的值。
1.2 选择列
命令:
SELECT 列名1,列名2,... FORM 表名;,用于选择你需要的列。
例如:
SELECT emp_no,dept_no
FROM dept_manager;
可以查询的列指定别名,SELECT 列名 AS 别名,例如:SELECT COUNT(*) AS count。
表名也可以起别名。如:
SELECT e.first_name, e.last_name
FROM employees AS e
WHERE e.emp_no = 10001;
2 条件过滤
命令:
SELECT 列名 FROM 表名 WHERE 查询条件;,WHERE子句用来指定查询的条件。
例如:
SELECT emp_no
FROM employees
WHERE first_name='Georgi' AND last_name='Facello';
WHERE子句中可以是用的关键字:使用AND表示且关系,OR表示或关系。
AND的优先级要高于OR,可以使用()把想要进行的运算包含起来。
可以使用的操作符:
= 等于
<>或!= 不等于
> 大于
< 小于
= 大约等于
<= 小于等于
2.1 IN
检查一个值,是否在一组值中。
命令:
列名 IN (值1,值2,...)
例如:
SELECT COUNT(*)
FORM employees
WHERE last_name IN ('Christ','Lamba','Baba');
IN 操作符一般比 OR 操作符清单执行更快(#TODO 给出理由)。
IN可以包含子查询。
2.2 BETWEEN...AND
检查一个值是否在一个范围内,结果是包含开始值和结束值的。
命令:
列名 BETWEEN 值1 AND 值2。
例如:
SELECT COUNT(*)
FROM empl