一、基础查询
1、查询表中的单个字段
select last_name from t_mysql_xx
2、查询表中的多个字段
select last——name,salary,email from t_mysql_xx
3、查询常量值
select 100
select 'john'
4、查询表达式
select 100%98
5、起别名
优点:
1、便于理解
2、如果要查询的字段有重名的情况,使用别名可以区分开来
方法一:使用as
select 100%98 as 结果;
select last_name as 姓,first_name名 from t_mysql_xx
方法二:使用空格
select last_name 姓,first_name 名 from t_mysql_xx
去重
select distinct department_id from t_mysql_xx
3、+号的作用
mysql中的加号仅仅只有一个功能:运算符
select 100+90 两个操作数都为数值型,则做加法运算
select '123'+90 只要其中一方为字符型,试图将字符型数值转换成数值型
select null+10 只要其中一方为null,则结果肯定为null
二、过滤查询
1、逻辑运算符
作用:用于连接条件表达式
&&|| !
and or not
&&和and:两个条件都为true,结果为true,反之为false
||或or:只要有一个条件都为true,结果为true,反之为false
!或not:如果连接的条件本身为false,结果为true,反之为false
三、模糊查询
like
特点:一般和通配符搭配使用
通配符:% 任意多个字符,包含0个字符;_ 任意单个字符
如:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select last_name, salary FROM t_mysql_xx WHERE last_name LIKE '__e_a%';
between and
特点:可以提高语句的简洁度,包含临界值,两个临界值不要调换顺序
如:查询员工编号在100到120之间的员工信息
SELECT * FROM t_mysql_xx WHERE employee_id BETWEEN 100 AND 120;
in
含义:判断某字段的值是否属于in列表中的某一项
特点:
1、使用in提高语句简洁度
2、in列表的值类型必须一致或兼容
3、in列表中不支持通配符
如:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT last_name, job_id FROM t_mysql_xx WHERE job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
is null
特点:=或<>不能用于判断null值,is null或is not null 可以判断null值
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=> (安全等于) :既可以判断NULL值,又可以判断普通的数值,可读性较低
如:查询没有奖金的员工名和奖金率
SELECT last_name, commission_pct FROM t_mysql_xx WHERE commission_pct IS NULL;
SELECT last_name, commission_pct FROM t_mysql_xx WHERE commission_pct <=>NULL;
3、order by 子句
①、asc:代表的是升序,可以省略
desc:代表的是降序
②、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
③、order by子句在查询语句的最后面,除了limit子句
语法:
select 查询列表
from 表名
【where 筛选条件】
order by 排序的字段或表达式;
1、按单个字段排序
SELECT * FROM t_mysql_xx ORDER BY salary DESC
2、添加筛选条件再排序
示例:查询部门编号>=90的员工信息,并按员工编号降序
SELECT * FROM t_mysql_xx WHERE department_id>=90 ORDER BY xx_id DESC
3、按表达式排序
示例:查询员工信息 按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM t_mysql_xx ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
4、按别名排序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM t_mysql_xx ORDER BY 年薪 ASC;
5、按多个字段排序
示例:查询员工信息,要求先按工资降序,再按employee_id升序
SELECT * FROM t_mysql_xx ORDER BY salary DESC,xx_id ASC;
四、分组查询
分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算
4、count函数的单独介绍,一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段
①、简单的使用
SELECT SUM(salary) FROM t_mysql_xx
SELECT AVG(salary) FROM t_mysql_xx
SELECT MIN(salary) FROM t_mysql_xx
SELECT MAX(salary) FROM t_mysql_xx
SELECT COUNT(salary) FROM t_mysql_xx