条件查询和模糊查询

#条件查询和模糊查询

DESC emp;
/**条件查询
        不是将表中所有数据都查出来,是查询出来所有符合条件的。
        语法格式:
                SELECT
                        ...
                FROM
                        ...
                WHERE
                        条件;*/
                        
# = 等于 查询薪资等于800的员工姓名和编号
SELECT empno,ename,job FROM emp WHERE sal = 800;
#查询SMITH的编号和薪资
SELECT empno,job,sal FROM emp WHERE ename = SMITH; #字符串需要使用单引号括起来

# <>!= 不等于 查询薪资不等于800的员工姓名和编号?
SELECT empno,ename,job FROM emp WHERE sal !=800;
SELECT empno,ename,job FROM emp WHERE sal <> 800;

#<<=>>= 小于,小于等于,大于,大于等于
SELECT empno,ename,job FROM emp WHERE sal <  2000;
SELECT empno,ename,job FROM emp WHERE sal <= 2000;
SELECT empno,ename,job FROM emp WHERE sal >  2000;
SELECT empno,ename,job FROM emp WHERE sal >= 2000;

#BETWEEN ... and ...两个值之间,等同于>= and <=
SELECT
    empno,ename,sal 
FROM 
    emp 
WHERE 
    sal BETWEEN 1000 AND 2000;
SELECT empno,ename,sal FROM emp WHERE sal >= 1000 AND sal <= 2000;
#注意:使用 BETWEEN AND的时候,必须遵循左小右大。 BETWEEN 2000 AND 1000;这种是查不出来的,并且 BETWEEN AND 是闭区间,包括了两段的值

#is NULLNULL (is NOT NULL 不为空)
#查询哪些员工的津贴/补助为null?
#SELECT empno ename sal comm. 注意 查询NULL不可以使用=,需要使用is NULL。因为数据库中的 NULL并不是值。
SELECT 
    empno,ename,sal,comm
FROM
    emp
WHERE
    comm is NULL;

#查询哪些员工的津贴/补助不为null?
SELECT empno,ename,sal,comm FROM emp WHERE comm is NOT NULL;

#AND并且
SELECT empno,ename,job,sal FROM emp WHERE job = MANAGER AND sal >=2500;

#or 或者
SELECT empno,ename,job,sal FROM emp WHERE job = MANAGER OR sal > 3000;

# AND和or同时出现的话,有优先级问题吗?
#查询工资大于2500,并且部门编号为10或20的部门的员工
SELECT 
    empno,ename,job,sal,deptno 
FROM 
    emp 
WHERE 
    sal>2500 AND deptno = 10 or deptno = 20;
/**分析以上语句问题?
            AND优先级比or高
            以上语句会先执行and,然后执行or.
            以上这个语句表示什么含义?
                    找出工资大于2500并且部门编号为10的员工,或者编号为20的员工。*/
#改进
SELECT 
    empno,ename,job,sal,deptno 
FROM 
    emp 
WHERE 
    sal>2500 AND (deptno = 10 or deptno = 20);#AND和OR同时出现and 优先级较高,如果想让or先执行,需要加“()”。
                            如果不确定优先级,只需要加上"()"就可以了。 #
in 包含,相当于多个or(not in 不在这个范围中) #查询工作岗位是MANAGER和SALESMAN的员工? SELECT ename,job FROM emp WHERE job IN (manager,salesman); #注意:in不是一个区间,in后面跟的是具体的值。 #查询薪资是800和5000的员工信息 SELECT ename,job,sal FROM emp WHERE sal in (800,5000); SELECT ename,job,sal FROM emp WHERE sal not in (800,5000); /**NOT 可以取非,主要用在is或in中 is NULL is not NULL in not in */ /** LIKE 称为模糊查询,支持%或下划线匹配 % 匹配任意个字符 下划线,一个下划线只匹配一个字符 (%是一个特殊的符号,——也是一个特殊的字符) */ #找出名字中含有o的 SELECT ename FROM emp WHERE ename LIKE %o%; #找出名字以T结尾的? SELECT ename FROM emp WHERE ename LIKE %t; #找出名字以K开始的? SELECT ename FROM emp WHERE ename LIKE k%; #找出第二个字母是A的 SELECT ename FROM emp WHERE ename LIKE _a%; #找出第三个字母是R的 SELECT ename FROM emp WHERE ename LIKE __R%; #如何找出名字中带有_的? SELECT name FROM STUDETN WHERE name like %_% # 这样是不可以的,下划线代表了任意一个字符,这样会将表中的所有name都查询到 SELECT name FROM STUDETN WHERE name like %\_% # \带有转译效果,在_前加上\即可查询到名字中带_的name数据。

 

条件查询和模糊查询

上一篇:ref数据获取


下一篇:常用的Dos命令