目录
一、基础查询
1)单个字段查询&多个字段查询&查询所有字段
改三个查询语句都相同,就是除了select后面的字段名字不一样而已
①、单个字段查询
语法:
select employee_id from t_mysql_employees
效果:
②、多个字段查询
语法:
select employee_id,first_name from t_mysql_employees
效果:
③、查询所有字段
语法:
select * from t_mysql_employees
效果:
2)查询常量值&表达式&函数
②、查询常量
语法:
SELECT 100;
SELECT 'john';
效果:
③、表达式
语法:
SELECT 100%98;
效果:
④、函数
语法:
SELECT VERSION();
效果:
改函数是查询数据库的版本
3)起别名&去重
①、起别名
第一种方式 as语法:
select employee_id as 员工编号 from t_mysql_employees
第二种方式 空格语法:
select employee_id 员工编号 from t_mysql_employees
两种的效果都是相同的,如以下图
②、去重
语法:
select DISTINCT manager_id from t_mysql_employees
效果:
4)案例:+号的作用
语法:
select 'liuliu'+1
效果:
java中的+号:
①运算符,两个操作数都为数值型
②连接符,只要有一个操作数为字符串
mysql中的+号:
仅仅只有一个功能:运算符
二、过滤查询
1)按条件表达式筛选
示例:查询部门编号不等于90号的员工名和部门编号
语法1:
select last_name,department_id from t_mysql_employees where department_id <> 90
语法2:
select last_name,department_id from t_mysql_employees where not(department_id = 90)
效果:
2)按逻辑表达式筛选
示例:查询工资z在10000到20000之间的员工名、工资以及奖金
语法:
select * from t_mysql_employees where salary BETWEEN 10000 and 20000
效果:
三、模糊查询
1)like
示例1:查询员工名中包含字符a的员工信息
语法:
select * from t_mysql_employees where last_name like '%a%'
效果:
示例2:查询员工名中第二个字符为_的员工名
语法:
select * from t_mysql_employees where last_name like '_$_%' escape '$'
效果:
因为_是占位符,所有我们要用$来替代
示例3:查询员工名中第二个字符为e,第五个字符为a的员工名和工资
语法:
select * from t_mysql_employees where last_name like '__e_a%'
效果:
2)between and
示例:查询员工编号在100到120之间的员工信息
语法:
select * from t_mysql_employees where employee_id BETWEEN 100 and 200
效果:
3)in
示例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
语法:
select * from t_mysql_employees where job_id in('IT_PROG','AD_VP','AD_PRES')
效果:
4)is null
示例1:查询没有奖金的员工名和奖金率
语法:
select first_name,commission_pct from t_mysql_employees where commission_pct is null
效果:
示例2:查询有奖金的员工名和奖金率
语法:
select first_name,commission_pct from t_mysql_employees where commission_pct is not null
效果:
示例3:查询没有奖金的员工名和奖金率
语法:
select first_name,commission_pct from t_mysql_employees where commission_pct <=> null
效果:
#is null pk <=>
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低
四、order by 子句
1)、按单个字段排序
#案例:按员工表薪资排序
select * from t_mysql_employees ORDER BY salary
结果
2)、添加筛选条件再排序
#案例:查询部门编号>=90的员工信息,并按员工编号降序
select * from t_mysql_employees where department_id >=90 ORDER BY employee_id desc;
结果
3)、按表达式排序
案例:查询员工信息 按年薪降序
select em.salary*12*(1+IFNULL(commission_pct,0)),em.* from t_mysql_employees em ORDER BY em.salary*12*(1+IFNULL(commission_pct,0)) desc;
结果
4)、按函数排序
案例:查询员工名,并且按名字的长度降序
select CONCAT(first_name,last_name),LENGTH(CONCAT(first_name,last_name)) from t_mysql_employees ORDER BY LENGTH(CONCAT(first_name,last_name)) desc
结果
5)、按多个字段排序
#案例:查询员工信息,要求先按工资降序,再按employee_id升序
select * from t_mysql_employees order by salary desc,employee_id ASC;
结果