一、基础查询
语法:
select 查询列表 from 表名;
特点:
列表可以是:表中的字段、常量值、表达式、函数
查询的结果是一个虚拟的表格
1、查询单个字段
select last_name from employees;
2、查询表中的多个字段
select last_name,salary,email from employees;
3、查询所有数据
select * from employees;
4、查询常量、表达式、函数
select 常量; select 100*98; select version();
5、起别名
-
方式一: 使用as 作为关键字
select last_name as 姓,first_name as 名 from employees;
-
方式二:使用空格
select last_name 姓,first_name 名 from employees;
-
当关键字作为别名时要添加单引号或者是双引号
select salary as 'out put' from employees;
6、去重
#案例 查询所有部门的编号
select salary as 'out put' from employees;
7、+号的作用
mysql中加号只有一个作用那就是运算符
#案例
select 100+90; 只要两个都为数值型者可以进行加法运算 select '123'+90; 如果其中一方是字符类型的则试图将字符类型的转换成数值类型,
如果转换成功就继续进行加法运算
select 'json'+90; 如果失败则将字符类型的赋值为0,并进行加法运算 select null+90; 只要一方为null那么结果为null,
8、拼接
select CONCAT(last_name,first_name) as 姓名;
#如果拼接的字段为null,那么都会为null
9、如果为空
select ifnull(commission_pct,0) as 奖金率 commission_pct from employees;
#案例 语句的嵌套使用
select CONCAT(last_name,first_name,'job_id',ifnull(commission_pct,0)) as out_put from employees;
二、条件查询
1、语法规则
select 查询列表 from 表名 where 查询条件;
2、分类
#按照条件表达式筛选
简单条件运算符:>,<,<>,=,!=,>=,<=(其中<>与!=相等)
#按照逻辑表达式筛选
#使用and连接两个条件
三、模糊查询
1、like
特点可以搭配任意通配符使用
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符
#案例查找名字中包含a的人;
select * from employees where last_name like '%a%';
#案例 查询第三个字有o的名字
select * from employees where last_name like '__o%';
#案例 查询名字中包含下划线的名字;
select * from employees where last_name like '_\_%'; select * from employees where last_name like '_$_%' escape '$';// escape将$变成转义符
2、between and
- 使用between and 可以提高代码简洁度
- 包含临界点
- 临界点不能调换顺序
3、in
判断某字段的值是否属于in列表中的某一列
含义:
- 使用in比使用or提高
- in列表中的值必须与in类型保持一致
#案例
查询工种为 IT_PROT,AD_VP的人
select * from employees where last_name like '_$_%' escape '$';
4、is null
判断是否为空
#案例 判断是否奖金为空
select last_name,salary,commission_pct from employees where commission_pct is null;
#案例 判断工资是12000的员工
select last_name,salary,commission_pct from employees where salary <=> 12000;
is null 比较 <=>
Is null 只能就比较null值 可读性较高 建议使用
<=> 可以比较不同的值,不只限于null 可读性较差
4、排序查询
语法:
select 查询列表 from 表名 【where 筛选条件】 order by 排序列表【asc|desc】
#1、按单个字段排序
SELECT * FROM employees ORDER BY salary DESC;
#2、添加筛选条件再排序
#案例:查询部门编号>=90的员工信息,并按员工编号降序
SELECT * FROM employees WHERE department_id>=90 ORDER BY employee_id DESC;
#3、按表达式排序
#案例:查询员工信息 按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
#4、按别名排序
#案例:查询员工信息 按年薪升序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;
#5、按函数排序
#案例:查询员工名,并且按名字的长度降序
SELECT LENGTH(last_name),last_name FROM employees ORDER BY LENGTH(last_name) DESC;
#6、按多个字段排序
#案例:查询员工信息,要求先按工资降序,再按employee_id升序
SELECT * FROM employees ORDER BY salary DESC,employee_id ASC;