一、
语法:
select
查询列表
from
表名
where
筛选条件;
筛选条件的分类:
1.按条件表达式筛选 —————— e.g.条件运算符:> < = !=或<> >= <=
2.按逻辑表达式筛选 —————— e.g. 逻辑运算符:&&或and ||或or !或not
3.模糊查询 —————— e.g. like 、 between and 、 in 、 is null
2.执行顺序:①表名,先看库里面有没有表
②筛选
③查询列表
二、例子
#查询employees库里的员工工资在10000到20000之间的员工姓氏和工资和奖金率
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary<=20000 AND salary>=10000;
模糊查询:
①、LIKE
#查询员工名中包含字符段a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
运算符like的特点:一般和通配符搭配使用
通配符:% 任意多个字符,包含零个
_ 任意单个字符
LIKE的效果和 last_name REGEXP='[a]';相同
#查询员工中第三个字母为e第五个字母为a的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE'__e_a%';
#查询员工名第二个字符为_的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '-\-%'; #\是转义字符
②、BETWEEN AND
#查询员工编号在100到200之间的员工信息(用between and可以避免重复写employee_id,提高语言简洁度)
SELECT
*
FROM
employees
WHERE
employee_id<200 AND employee>100;
或
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 200;
运算符BETWEEN AND的特点:1.提高语言简洁度
2.包含界值
3.两个临界值不要调换顺序(大于等于左边的值,小于等于右边的值)
③、
#查询员工的工种编号是IT_PROG、AD_VP中的员工名和工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id='IT_PROG' OR job_id='AD_VP';
用IN:
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN('IT_PROG' , 'AD_VP');
关键词IN特点:1.判断某字段的内容是否属于IN列表中的某一项
2.提高简洁度
3. IN列表的值类型要统一(或兼容)。
4.不支持通配符
④、IS NULL
#查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
关键词IS NULL特点:1.< 、> 、 =这三个符号不能用于判断null值
⑤、安全等于 <=>
可以判断null和数值,但可读性低
非条件查询的ifnull的用法
#查询员工姓名,部门号,年薪(salary是月薪)
SELECT
last_name,
department_id,
salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM
employees;
如果commision_pct为null,则返回0.