目录
语法
分类
实操
一、按照条件表达式筛选
1. 查询工资>12000的员工信息
二、按照逻辑表达式筛选
1.查询部门编号不等于90号的员工名和部门编号
2.查询工资在10000到15000之间的员工名、工资以及奖金
3.查询部门编号不是在90到110之间,或者工资高于15000的员工信息
三、模糊查询
like关键字
between and关键字
in关键字
is null 关键字
<=>关键字
题目扩展:
select 查询列表 from 表名 where 筛选条件;
一、按照条件表达式筛选 简单条件运算符:> < = != <> >= <= !=是不等号, 不过<>才是SQL中的正牌不等号 二、按照逻辑表达式筛选 逻辑运算符: && || ! 可以用 and or not 推荐用 三、模糊查询 like between and in is null
所使用数据库还是上一篇博客中所介绍数据库。
一般和通配符发配使用 通配符: % 任意多个字符 _ 任意单个字符
1.查询员工名中包含字符a的员工名
格式:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
用%来作为通配符:
SELECT * FROM employees WHERE last_name LIKE '%a%' ;2.查询员工名中第2个字符为a,第五个字符为b的员工名和工资
SELECT last_name, salary FROM employees WHERE last_name LIKE '_a__b%' ;3. 查询员工名中第二个字符为_的员工
由于_在SQL中为模糊查询代表单个字符,因此如果查询_的话需要将它转义,使用\进行转义:
SELECT last_name FROM employees WHERE last_name LIKE '_\_%' ;或者可以通过自己定义的字符进行转义,利用我们想用$作为转义符,可以这样做:
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';注意以下几点:
1.这样书写可以提高简洁度 2.包含临界值 3.两个临界值不要调换顺序
查询员工的工种编号是AD_VP、ST_MAN、PU_MAN中的一个的员工名和编号。
如果按照我们之前学过的,可以这样进行查询:
SELECT last_name job_id FROM employees WHERE job_id = 'AD_VP' OR job_id = 'ST_MAN' OR job_id = 'PU_MAN' ;但是如果需要查询的东西比较多,这样就会显得太麻烦,我们可以使用in关键字。
in:判断某字段的值是否属于in列表中的某一项
特点:使用in可以提高代码的简洁度,in中值的类型必须统一或者兼容,不支持通配符。
SELECT last_name job_id FROM employees WHERE job_id IN( 'AD_VP' , 'ST_MAN' ,'PU_MAN' );= 或 <>不可以用来判断null的值 is null 或者 is not null 可以判断null值
查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL ;查询有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NOT NULL ;可读性差,也可以使用它进行查询是否为null。
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL ;并且还可以进行普通查询:
例如查询员工工资为12000的员工姓名和工资:
SELECT last_name,salary FROM employees WHERE salary <=> 12000 ;