-- 查询特定的列
-- 一般不特定说明 查询针对的是s_emp 员工表
-- 查询表中所有数据 * 通配符 可以匹配到所有的列
-- SELECT * FROM 表名;
-- 查询特定的列/表达式
-- SELECT 表达式1/列名1, 表达式2/列名2, 表达式3/列名3, .....-- FROM 表名;
-- 查询单行结果
-- SELECT 表达式;
SELECT 1 + 1;
SELECT (1 + 100/10 - 4) * 5;
-- 去除重复值
-- 使用关键字 DISTINCT ,这个关键字必须紧跟在SELECT的后面,
-- 它后面跟的是需要去除重复值的列名
SELECT DISTINCT dept_id
FROM s_emp;
-- 多列的值不能同时发生重复,我们把这种现象称作联合唯一,
-- 如果多列去重,需要把去重的列依次写在distinct关键字后面,
-- 每个列名之间使用逗号隔开即可.
SELECT dept_id 部门编号, title 职位
FROM s_emp;
SELECT DISTINCT dept_id 部门编号, title 职位
FROM s_emp;
SELECT DISTINCT manager_id 领导编号, dept_id 部门编号, title 职位
FROM s_emp;
-- 排序子句
-- ORDER BY 需要排列的列明 排序规则
-- 排序规则;
-- 升序 从小到大排序 ASC
-- 降序 从大到小排序 DESC
-- 查询出员工的姓名,职位,月薪按照月薪降序排序
-- 升序是默认值,可以不写
-- 如果排序规则中使用多个列,
-- 先在order by后面写第一个排序的列名,
-- 排序规则,在用逗号隔开,写第二个,排序规则 ...
SELECT first_name 姓名, title 职位, salary 月薪
FROM s_emp
ORDER BY salary DESC;
-- 查询出员工的姓名,职位,部门编号
-- 并且按照部门编号降序排列
SELECT first_name 姓名, title 职位, dept_id 部门编号
FROM s_emp
ORDER BY dept_id DESC;
-- 条件子句
-- WHERE 子句 WHERE 后面跟的是一个条件,它起的作用是对查询的结果进行过滤,
-- 从而输出符合条件的结果
-- 条件 id = 1 id 的值和1 相等
-- > < >= <= != 使用比较运算符连接起来的表达式
-- 查询出41号部门的员工的姓名,职位,部门编号
SELECT first_name, title, dept_id
FROM s_emp
WHERE dept_id = 41;
-- 在maysql中,字符串的内容不区分大小写,
-- 但是如果要判断某行某列的值是否和另一个值相等,
-- 这个值必须带引号,不然会报错,不带引号的时候,
-- mysql会认为那个值是一个列名。
SELECT first_name, title, dept_id
FROM s_emp
WHERE first_name = first_name;
-- 逻辑运算符
-- 与 AND 或 OR 非 NOT
-- 与 表示多个条件要同时满足,缺一不可
-- 或 表示多个条件至少要满足其中一个
-- 非 相反
SELECT first_name, dept_id, salary
FROM s_emp
WHERE NOT dept_id IN(41,43,44)
ORDER BY salary;
-- 查询出月薪在1000到1500之间的员工信息
-- [1000,1500] 月薪要满足两个条件 >=1000
-- 并且<=1500
SELECT first_name, salary
FROM S_emp
WHERE salary >= 1000 AND salary <= 1500;
-- 在 ... 之间
-- between ... AND ...
SELECT first_name, salary
FROM S_emp
WHERE salary BETWEEN 1000 AND 1500;
-- 在... 里面
-- IN(值1,值2,...)
-- 查询出部门编号31,33,35,41号部门的员工信息
SELECT first_name, dept_id
FROM s_emp
WHERE dept_id IN(31, 33, 35, 41);
-- 模糊查询
-- 使用 关键字 LIKE
-- 通配符:
-- % 0到任意多个字符
-- _ 一个任意字符
-- 查询 出姓名以M开头的员工信息
-- M%
SELECT first_name, title, salary
FROM s_emp
WHERE first_name like 'M%'
ORDER BY salary;
-- 分组排序
-- GROUP BY
-- 求每个部门的员工总数,最高工资,最低工资,平均工资
SELECT dept_id, COUNT(1), MAX(salary), MIN(salary), AVG(salary)
FROM s_emp
GROUP BY dept_id;