SQL02过滤和排序数据 一、在查询中过滤行 1.WHERE 子句 SELECT * | {[DISTINCT] column|expression} FROM table WHERE condition(s); WHERE子句紧随FROM子句。 1)desc table_name;查看列名。 select ename, empno , deptno,job from emp where deptno=10; 2)字符和日期 字符和日期要包含在单引号中。 字符大小写敏感,日期格式敏感。 默认的日期格式是DD-MON-RR(日-月-年代) 字符: select ename, empno, deptno,job,hiredate from emp where ename=‘KING’;3) 修改日期类型 select ename, empno , deptno,job, hiredate from emp where hiredate=‘19-apr-87’; (临时变量) alter session set nls_date_format=‘YYYY-MM-DD’;(年-月-日) select ename,empno, deptno,job,hiredate from emp where hiredate>‘1987-04-19’; 2.比较运算符 1) between and select deptno,dname from dept where deptno between 10 and 30; 2) select last_name from employees where last_name between ‘King’ and ‘Smith’; 3) in 操作符 select ename , sal from emp where in (‘SCOTT’,‘KING’); 4)使用LIKE操作符 %代表一个或多个字符 代表一个字符 select fir_name from employees where first_name like ‘S%’; 5)通配符 ’ %‘和’-‘可以同时使用 可以使用escape标示符搜索实际的’%‘和’'符号 select last_name from emplyoyees where last_name like ‘_o%’; 6) 使用NULL条件:使用 is null 操作符判断空值 select last_name, manager_id from employees where manager_id is null. 7)逻辑运算符:and or not select employee_id, last_name, job_id,salsry from employees where salary >= 10000 and job_id like ‘%MAN’; select employee_id, last_name,job_id , salary from employees where salary >=10000 or job_id like ‘%MAN’; select last_name, job_id from employees where job_id not in (‘IT_PROG’,‘ST_CLERK’,‘SA_REP’); 8)优先级 算数运算符 连接符 比较符 IS [NOT] NULL,LIKE, [NOT] IN [NOT] BETWEEN 不等于 NOT AND OR 二、在查询中对行进行排序 使用ORDER BY 子句排序: ASC:升序,默认 DESC:降序 ORDER BY 子句在SELECT语句结尾: 1)查看员工姓名、工资升序排列 select ename,sal from emp order by sal asc; 2)加上部门编号 select ename, sal from emp order by detpno , sal; 3)降序排序 select last_name, job_id, department_id, hire_date from employees order by hire_data DESC ; 4)使用别名默认排序 select employee_id, last_name, salary12 annsal from employees order by annsal ; 5)使用列的数字位置 select last_name, job_id, department_id, hire_data from employees order by 3; 6)按多个列排序 select last_name, department_id,salary from employees order by department_id, salary DESC; 三、替代变量 1.使用符号替换限制和排序输出运行时间 使用&和&&临时存储值 set pages 200 llines 200 :在一页上展示 / 执行前面的命令 l显示上一个命令 2.使用替代变量,可以替代以下内容: where 条件 order by子句 列表达式 表名 整个SELECT语句 3.使用&替代变量 1)select employee_id,last_name,salary,department_id from employees where employee_id = &employee_num; 2)字符和日期替代变量 select last_name,department_id,salary12 from employees where job_id = ‘&job_title’; 3)指定列名、表达式和文本 select employee_id,last_name,job_id,&column_name from employees where &condition order by &order_column; 4.使用&&替代变量 每次重复使用变量值,不提示用户的情况下,使用&& select employee_id, last_name, job_id,&&column_name from employees order by &column_name; 5.使用DEFINE命令 使用DEFINE命令创建和分配一个变量的值。 使用UNDEFINE命令来删除一个变量。 define employee_num = 200; select emplyee_id ,last_name, salary,department_id from employees where employee_id = &employee_num; undefine employee_num 6.使用VERIFY命令 使用verify命令来显示的替代变量之前和之后SQL开发人员替换替换变量的值: set verify on select employee_id ,last_name, salary from employees where employee_id = &employee_num;