目录
行选择:select 列名、、、from 表名 where条件;
3.逻辑条件:AND、OR、NOT
一、行选择与列选择的语法区别(有无where):
列选择:select 列名、、、from 表名;
行选择:select 列名、、、from 表名 where条件;
二、用选择限制行:
用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个
必须满足的条件,WHERE 子句紧跟着 FROM 子句。如果条件是
true,返回满足条件的行。
语法:SELECT * | 投影列 FROM 表名 WHERE 选择条件;
例:select department_name,location_id from departments where departments_id = 4;
表示:查询 departments 表中部门 ID 为 90 的部门名称与工作地ID
三、MySQL中的比较条件:
1.常规比较条件:
符号!=也能表示不等于条件;
例:select last_name,salary from employees where salary<>5000;
表示:查询 employees 表中员工薪水不等于 5000 的员工的姓名与薪水;
2.其他比较条件:
2.1.BETWEEN...AND...:
可以用 BETWEEN...AND... 范围条件显示基于一个值范围的行。指定的范围,包含一个下限和一个上限。
例:select employee_id,last_name,salary from employees where salary between 3000 and 8000;
表示:查询 employees 表,薪水在 3000-8000 之间的雇员ID、名字与薪水。
2.2.IN(set):
使用IN成员条件测试在列表中的值
例:select employee_id,last_name,salary from employees where salary in(5000,6000,8000);
表示:查询 employees 表,找出薪水是 5000,6000,8000 的雇员ID、名字与薪水。
2.3.LIKE:
1.使用LIKE条件执行有效搜索串值的通配符搜索
2.搜索条件既可以包含文字也可以包含数字(数字只字符串型,非整数型)
占位符:%表示零个或多个字符
_表示一个字符
注意 :
在LIKE语句中,%表示零个或多个字符,_表示一个字符
例:select last_name from employees where last_name like ‘%e%’;
表示:查询 employees 中雇员名字字母含有 e 的雇员名字。
例:select last_name from employees where last_name like ‘_e%’;
表示:查询 employees 中雇员名字第二个字母是 e 的雇员名字。
2.4.IS NULL:
用IS NULL操作来测试空值,NULL条件,包括IS NULL条件和IS NOT NULL 条件;
IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此, 不能用 = ,因为 null 不能等于或不等于任何值。
例:select employee_id,last_name,commission_pct from employees where commission_pct is null;
表示:找出 emloyees 表中那些没有佣金的雇员雇员ID、名字与佣金。
例:select employee_id,last_name,commission_pct from employees where commission_pct is not null;
表示:找出 employees 表中那些有佣金的雇员ID、名字与佣金。
3.逻辑条件:
逻辑条件组合两个比较条件的结果来产生一个基于这些条件的单个的结果,或者逆转一个单个条件的结果。当所有条件的结果为真时,返回行。
SQL 的三个逻辑运算符是:
AND
OR
NOT
可以在 WHERE 子句中用 AND 和 OR 运算符使用多个条件。
例:select last_name,salary from employees where salary = 8000 and last_name like '%e%';
表示:查询 employees 表中雇员薪水是 8000 的并且名字中含有e 的雇员名字与薪水。
例:select last_name,salary from employees where salary = 8000 or last_name like '%e%';
表示:查询 employees 表中雇员薪水是 8000 的或者名字中含有e 的雇员名字与薪水。
例:select last_name from employees where last_name not like '%u%';
表示:查询 employees 表中雇员名字中不包含 u 的雇员的名字。
例:select last_name from employees where last_name not like '%u%';
查询 employees 表中雇员名字中不包含 u 的雇员的名字。
4.优先规则:
5.运算符总结:
- 算术运算符用于整型、浮点型数据类型,进行加减乘除;
- LIKE用于模糊查询,只能用于字符型,不能用于数组查询;
四、使用ORDER BY排序
1.注意:
在一个不明确的查询结果中排序返回的行。ORDER BY 子句用于排序。如果使用了 ORDER BY 子句,它必须位于 SQL 语句的最后。
2.SELECT 语句的执行顺序如下:
FROM 子句
WHERE 子句
SELECT 子句
ORDER BY 子句(即查询出结果后再对结果进行排序)
例:1.select employee_id,last_name,salary from employees order by salary;(默认升序排序ASC)
2.select employee_id,last_name,salary from employees order by salary asc;
表示:查询 employees 表中的所有雇员,显示他们的ID、名字与薪水,并按薪水升序排序。
例:select employee_id ,last_name from employees order by last_name desc;
表示:查询 employees 表中的所有雇员,显示他们的ID与名字,并按雇员名字降序排序。
3.使用别名排序(用列别名排序):
例:select employee_id,last_name, 12*salary annsal from employees order by annsal desc;
表示:显示雇员ID,名字。计算雇员的年薪,年薪列别名为annsal,并对该列进行降序排序
4.多列排序:
多列排序按ORDER BY 列表的顺序就是排序的顺序;并且可以排序一个不在SELECT列表中的列;
例:select department_id ,salary from employees order by department_id asc,salary desc;
表示:以升序排序显示department_id列后,再根据前一个排序的基础上,以降序排序显示salary列;