简单查询是查询一张表的全部记录,限定查询是查询满足指定条件的记录。
**语法结构:
【3控制要显示的数据列】SELECT[DISTINCT]*|列名称[别名],…FROM 表名称[别名];
【1确定数据来源】FROM 表名称[别名]
【2确定满足条件的数据行】[WHERE 过滤条件(s)];
限定查询需要的运算符:
关系运算符:>、<、>=、<=、<>(!=)
逻辑运算符:AND、OR、NOT
范围运算符:BETWEEN……AND
谓词范围:IN、NOT IN
空判断:IS NULL、IS NOT NULL
模糊查询:LIKE
关系运算符
#查询工资大于1500的所有雇员信息
select *
from emp
where sal>1500;
#查询SMITH的完整信息
Select *from emp where ename=’SMITH’;
#查询工资等于5000的雇员信息
select *fron where sal=5000;
#查询职位不是销售人员的雇员的姓名、编号、职位
筛选行 筛选列
select empno,ename,job from emp where job!=’SALESMAN’;
逻辑运算符
#查询出工资范围在1500-3000范围的雇员信息
select * from emp where sal>=1500 and sal<=3000;
#查询所有工资大于2000或者职位是办事员的雇员信息
select *from emp where sal>2000 or job=’ANALIST’
#查询所有工资小于200的雇员信息(用非表示)
select * from emp where sal<200;
范围运算符
#查询工资在1500-2000之间的雇员(包含两个值)
select * from emp where sal>=1500 and sal<=3000;//匹配一个条件
Select* from emp where sal BETWEEN 1500 AND 2000;//匹配两个条件
#查询所有在1981年雇佣的雇员
select *from emp
where HIREDATE BETWEEN ’01-1月-81’ AND ’31-12月-81’;
空判断
空在数据库中指不确定的内容。NULL
**数据列为空的时候不代表数据是0;
select *from emp where comm=null; //错误未选定行
select *from emp where comm is null;
select *from emp where comm is not null;
**空不能用关系运算符完成判断,只能使用IS NULL 或IS NOTNULL
IN操作符 IN 和NOT IN
#要求查出雇员编号是7369、7566、7788、9999的雇员信息
select *from emp where empno=7369 or empno=7566 OR empno=7788 OR empno=9999;
---如果使用IN
Select * from emp where empno IN(7369,7566,7788,9999);
#要求查出雇员编号不是7369、7566、7788、9999的雇员信息
Select * from emp where empno NOT IN(7369,7566,7788,9999);
Select * from emp where NOT empno IN(7369,7566,7788,9999);
select *from emp where empno in (7369,7566,7788,null);
select *from emp where empno not in (7369,7566,7788,null);
**使用NOT IN 进行范围判断时,如果范围之中有NULL,则不会执行,返回未选定行;
相反,NULL对IN的使用没有任何影响。
模糊查询LIKE
模糊查询使用LIKE时,可使用两个通配符
“_”下划线匹配任意一个字符
“%”百分号匹配任意的0位,1位,2位
#查询雇员姓名中第一个字母是A
select* from emp where ename LILE ‘A%’;
#查询雇员姓名中第二个字母是A
select * from emp where ename LIKE ‘_A%’;
#查询姓名任意位置包含A
select * from emp where ename LIKE ‘%A%’;
#查询工资中包含数字9的雇员信息
select * from emp where sal LIKE ‘%9%’;
**LIKR如果不设置查询关键字,就相当于查询全部
select * from emp where sal LIKE ‘%%’;
总结:WHERE子句一般都写在FROM子句之后,紧跟FROM子句后边执行;
WHERE 控制查询显示的数据行,SELECT控制显示列
[DISTINCT]去重,紧跟SELECT后
空判断不能用关系运算符,必须用IS NULL或者IS NOT NULL