1.基础查询
1.1 语法:
语法:
select 查询列表
from 表名;
特点:
查询列表可以是:字段、常量、表达式、函数
查询的结果是虚拟表格
1.查询表中的单个字段
select 字段名 from 表名;
2.查询表中的多个字段
select 字段名,字段名,字段名 from 表名;
3.查询表中所有字段
select * from 表名;
4.查询常量
select 100;
select '字符、字符串';
5.查询表达式
select 100*98;
6.查询函数
select version();
7.起别名
方式一:使用as
select 100%98 as 别名;
方式二:使用空格
select last_name 姓,first_name 名 from employees;
/*
好处:
1.便于理解
2.如果查询的字段有重名的情况,使用别名可以区分开
*/
8.去重
select distinct department_id from employees;
9.+号的作用
功能:仅仅为运算符
select 100+90; 两个操作数都为数值型,则做加法运算
select '123'+90; 其中一方为数值型,试图将字符型数值转换成数值型,如果转换成功则继续做加法运算
select 'join'+90;如果转换失败,则将字符型数值转换成0再做加法运算
select null+10;只要其中一方为null,则结果为null
案例:查询员工名和姓连接成一个字段,显示为姓名
select concat(last_name,first_name) as 姓名 from employees;
1.2 注意的细节
1、在查询前,先切换数据库
2、对字段添加 ``
2.条件查询
2.1 语法
语法:
select 查询列表 from 表名 where 筛选条件;
分类:
1.按条件表示式筛选;
条件运算符:> < = != <> >= <=
2.按逻辑表达式筛选
逻辑运算符:&& || !
3.模糊查询
like,between and,in,is null
1.按条件表达式筛选
案例:查询工资>12000的员工信息
select
*
from
employees
where
salary > 12000;
2.按逻辑表达式筛选
案例:查询工资在10000到20000之间的员工们、工资以及奖金
select
last_name
salary
commission_pct
from
employees
where
salary>=10000 and salary<=20000;
3.模糊查询
3.1 like
特点:
(1)一般和通配符搭配使用
%:任意多个字符,包含0个字符
_:任意一个字符
\:转义字符
案例:查询员工名中包含字符a的员工信息
select * from employees where last_name like '%a%'
3.2 between and
特点:
(1)提高语言简洁程度
(2)包含临界值
(3)两个临界值不能调换顺序
案例:查询员工编号在100到120之间的员工信息
select * from employees where employee_id between 100 and 120;
3.3 in
含义:判断某字段的值是否属于in列表中的某一项
特点:
(1)使用in提高语句简介度
(2)in列表的值类型必须一致或兼容
案例:查询员工的工种编号 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
select
last_name,
job_id
from
employees
where
job_id in ('IT_PROG' ,'AD_VP' , 'AD_PRES');
3.4 is null
案例:查询没有奖金的员工名和奖金率
select
last_name,
commission_pct
from
employees
where
commission_pct is null;
4.安全等于 <=>
is null:仅仅可以判断null值,可读性较高,建议使用
<=>:既可以判断null值,又可以判断普通的数值,可读性较低
3.排序查询
语法:
select 查询列表
from 表
where 筛选条件
Order by 排序列表 asc|desc
特点:
(1)asc代表升序,desc代表的是降序,如果不写默认是升序
(2)order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
(3)order by 子句一般是放在查询语句的最后面,limit子句除外
案例:查询员工信息,要求工资从高到低排序
select * from employees Order by salary desc;
案例:查询部门编号>=90的员工信息,按入职时间的先后进行排序
select *
from employees
where department_id>=90
order by hiredate asc;
案例:查询员工信息,先按工资升序,再按员工编号降序
select *
from employees
Order by salary asc,employees_id desc;