记录下学习sql的笔记,以后便于查阅哦~加油加油烦烦
目录
错误tips:
1、注意逗号的中英文区别!
2、注意空格,别瞎空格。
3、也不要随便打逗号。
4、英文不要打错了。。
1、条件查询
语法:select 查询列表 from 表名 where 筛选条件
分类:
1、按条件表达式筛选 : 条件运算符:<, >, =, !=,<> (不等于)
2、按逻辑表达式筛选:逻辑运算符:& | ! and or not
3、模糊查询: like,between and, in, is null
(1)条件运算符
#案例一:查询工资>12000的员工信息
USE myemployees
SELECT * FROM employees
WHERE salary>12000;
#案例二:查询部门编号不等于90号的员工号和部门编号
SELECT last_name, department_id
FROM employees
WHERE department_id<>90;
(2)逻辑表达式
USE myemployees
#二、按照逻辑表达式筛选
#案例一:查询工资在10000-20000之间的员工名、工资和奖金
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
#案例二、查询部门编号不是在90到110之间,或则工资高于15000的员工信息
SELECT *
FROM employees
WHERE department_id<90 OR department_id>110 OR salary>15000
#或者 where not(department_id>=90 and department_id<=110) or salary>15000
(3)模糊查询
i. like:
特点: 一般和通配符搭配使用
%:任意多个字符,包含0个字符
_: 任意单个字符
三、模糊查询
#案例一:查询员工名中包含字符a的员工信息
/*like:
特点:
1. 一般和通配符搭配使用
%:任意多个字符,包含0个字符
_: 任意单个字符
*/
#案例一:查询员工名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%'
# 感叹号%代表任意字符,字符引起来要用单引号
#案例二:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name, salary
FROM employees
WHERE last_name LIKE '__n_l%';
#案例三:查询员工名总第二个字符中为_的员工名
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$'
# 可用下划线\以及转义的方式如上,其中$可用任何abc的字符来替代
WHERE last_name LIKE '_\_%';
ii. between and
#提升简洁度,包含临界值,两个临界值不能调换顺序
不在xxx到xxx之间,可以用 WHERE xxx NOT BETWEEN xxx AND xxx
#案例1: 查询员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 120
#也可where employee_id>=100 and employee_id <=120;
iii. in
含义:判断某字段的值是否属于in列表总的某一项
特点:1.使用in比较简洁
2.in列表中的值类型比较一致兼容
3.in列表中不支持通配符
#案例:查询员工种编号IT_PROG、AD_VP、AD_PRES中的一个员工名和编号
SELECT last_name, job_id
FROM employees
WHERE job_id IN( 'IT_PROG', 'AD_VP', 'AD_PRES');
iiii. is null/ is not null
=或<>不能判断
要用is null 或者is not null
#案例:查询没有奖金的员工名和奖金率
SELECT last_name, `commission_pct`
FROM `employees`
WHERE commission_pct IS NOT NULL;
#补充 安全等于<=>
s null: 仅仅可以判断null值,可读性较高 推荐!
<=>: 既可以判断null值,有可以判断普通的数值,可读性较低
SELECT last_name, `commission_pct`
FROM `employees`
WHERE commission_pct <=> NULL;
#案例二:查询工资为12000的员工信息
SELECT `last_name`, salary
FROM `employees`
WHERE salary <=>12000;
案例:
#案例:查询员工号为170的员工姓名和部门号和年薪
SELECT last_name, department_id, salary*12*(1+IFNULL(`commission_pct`,0)) AS '年薪'
FROM employees
WHERE `job_id`=170;