查询回顾
SELECT * FROM departments;#部门表
SELECT * FROM employees;#员工表
SELECT * FROM jobs;#工种表
SELECT * FROM locations;#位置表
#查询语句
#起别名
#举例:查询employees员工表中员工的姓与名
SELECT last_name AS 姓,first_name AS 名 FROM employees;
SELECT last_name 姓,first_name 名 FROM employees;
起别名好处:
1、便于理解字段的意思
2、(表连接中)如果你要查询的字段有重名的
情况,使用别名就可以将他们区分开来
起别名的方式:
方式一:使用AS select 字段名 as 别名 from 表名;
方式二:使用空格 select 字段名 别名 from 表名;
#特殊情况
案例:查询email,显示的名称为 out put;
SELECT email AS ‘out#put’ FROM employees;
#如果别名中含有空格、#等特殊符号,最好用双引号将别名包起来
#去重 关键字 distinct
语法:select distinct 字段名 from 表名;
#案例:查询employees表中的job_id
SELECT DISTINCT job_id FROM employees;
#查询employees表中不重复的字段salary,显示名称为薪水
SELECT DISTINCT salary 薪水 FROM employees;
#条件查询 关键字 where
语法:select 查询列表 from 表名 where 筛选条件;
筛选条件分类:
一、按条件表达式筛选 > < = != >= <= <>(不等于)
二、按逻辑表达式筛选
&& || ! and or not
作用:用来连接条件表达式&&和and:两个条件都为true,结果为true,反之为false ||和or:只要有员工条件为true,结果为true,反之false !和not:如果连接的条件本身为false,结果为true
三、模糊查询 关键字 like
一般和通配符搭配使用 通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符
between and
in
is null
#按条件表达式筛选
#案例1:查询员工表employees中工资salary>12000的员工信息
SELECT * FROM employees WHERE salary>12000;
#案例2:查询员工表(employees)中部门编号(department_id)不等于90的员工名(first_name)和部门编号(department_id)
#语法:select 查询列表 from 表名 where 筛选条件;
SELECT first_name 员工名,department_id 部门编号
FROM employees
WHERE department_id <> 90;
#按逻辑表达式筛选
#案例1:查询员工表(employees)中工资(salary)在10000到20000之间的员工名(first_name)、工资(salary)
SELECT first_name 员工名,salary 工资
FROM employees
WHERE salary>=10000 AND salary<=20000;
#小练习:查询员工表(employees)中部门编号(department_id)
#不是90到110之间,或者工资(salary)高于15000的员工信息
SELECT * FROM employees
WHERE department_id<90 OR department_id>110 OR salary>15000;
SELECT * FROM employees
WHERE NOT(department_id>=90 AND department_id<=110)
OR salary>15000;
department_id<90 && department_id>110
#模糊查询 关键字 like
#语法:
select 查询列表 from 表名 where 字段名 like '(a-z)%_';
#案例1:查询员工表中姓名包含’a’字符的员工名
SELECT first_name FROM employees
WHERE first_name LIKE '%a%';
#案例2:查询员工表中姓名第三个字母为’a’的员工名
SELECT first_name FROM employees
WHERE first_name LIKE '__a%';
#小练习:查询员工表中姓名最后一个字母为’s’的员工名
SELECT first_name FROM employees
WHERE first_name LIKE '%s';
#判断范围 关键字 between and 在…之间
语法:select 查询列表 from 表名 where 字段名 between 范围1 and 范围2;
#案例1:查询员工编号在100到120之间的员工信息
SELECT * FROM employees
WHERE employee_id>=100 AND employee_id<=120;
#--------------------------------------------
SELECT * FROM employees
WHERE employee_id BETWEEN 100 AND 120;
#小练习:查询employees表中工资在11000到18000之间的员工姓名和工资,用别名显示出来
SELECT last_name 姓名,salary 工资
FROM employees
WHERE salary BETWEEN 18000 AND 11000;
#注意:between and 包含临界值 (等同于>= <=)两个临界值不要调换
#判断是否在给定内容中 关键字 in
语法:select 查询列表 from 表名 where 字段名 in(值1,值2);
含义:判断某个字段的值是否属于in列表中的某一项 特点:使用in提高了语句的简洁度
in列表中的值类型必须一致或兼容
#案例:查询员工的工种编号是IT_PROG、AD_VP、FI_MGR中的一个员工名和工种编号
SELECT last_name 姓名,job_id 工种编号
FROM employees
WHERE job_id='IT_PROG' OR job_id='AD_VP' OR job_id='FI_MGR';
#-----------------------------------------------
SELECT last_name 姓名,job_id 工种编号
FROM employees
WHERE job_id IN('IT_PROG','AD_VP','FI_MGR');
小练习:查询employees表中部门编号(department_id)为90,60,100的姓名和工资
判断空值查询 关键字 is null
语法:select 查询列表 from 表名 where 字段名 is null;
= 或 <> 不能用于判断null值 is null 或 is not null 可以判断null值
案例:查询没有奖金的员工名和奖金率
SELECT last_name 员工名,commission_pct 奖金率
FROM employees
WHERE commission_pct IS NULL;