--=======================================
--SQL基础-->过滤和排序
--=======================================
/*
一、使用WHERE字句实现对数据的过滤
用法:SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
二、多条件连接
AND 同时满足
OR 满足其中一个
三、比较符
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于
!= 不等于
IS NULL 是否为空值
IS NOT NULL 不为空值
NOT 条件为FALSE时返回TRUE
BETWEEN x AND y 大于等于X,小于等于Y
IN (集合) 在这个集合中,或者讲在这个列表中
NOT IN(集合) 不在这个集合中,或者讲不在这个列表中
LIKE 使用LIKE操作符来执行有效搜索字符串数值的通配符搜索
% 通配任意字符
_ 能配单个字符
四、日期和字符串的处理
字符串和日期值使用单引号标记嵌入
字符数值是大小写有关,而日期数值是格式化的。
ORACLE默认显示的日期格式为:DD-MON-RR
可以用alter session set nls_date_format='yyyy-mm-dd';修改日期格式
永久性修改可以用:
alter system set nls_date_format='yyyy-mm-dd' scope=spfile;
日期相加减:
日期+(-)数字 返回一个往前或往后的天数的日期
+往后 -往前
日期-日期 得到两个日期之间相差的天数
五、order by 排序
默认的排序方式:升序
控制排序方式: ASC 升序
DESC 降序
六、演示*/
/*使用WHERE条件查询*/
SQL> select * from scott.emp where sal > 2000
2 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7566 JONES MANAGER 7839 02-APR-81 2975 20
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7902 FORD ANALYST 7566 03-DEC-81 3000 20
/*多条件连接*/
SQL> select * from scott.emp where deptno = 20 and sal > 2000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
/*错误的写法*/
SQL> select * from scott.emp where 1000<=sal<=2000;
select * from scott.emp where 1000<=sal<=2000
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
/*正确的写法*/
SQL> select * from scott.emp where sal >= 1000 and sal <= 2000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
/*BETWEEN的用法*/
SQL> select * from scott.emp where sal between 1000 and 2000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
/*IN的用法,以下两条语句等同*/
SQL> select * from scott.emp where sal = 3000 or sal = 5000;
SQL> select * from scott.emp where sal in (3000,5000);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> select * from scott.emp where sal = 3000 or sal = 5000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7902 FORD ANALYST 7566 03-DEC-81 3000 20
--not in的用法
SQL> select * from scott.emp where sal not in (3000,5000);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7934 MILLER CLERK 7782 23-JAN-82 1300 10
/*LIKE、%、_ 运算符的用法*/
SQL> select * from scott.emp where ename like 'A%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
SQL> select * from scott.emp where ename like '_L%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
--日期格式:未修改前
SQL> select sysdate from dual;
SYSDATE
---------
28-MAR-10
/*日期格式的修改,仅对当前会话有效*/
SQL> alter session set nls_date_format = 'yyyy-mm-dd';
Session altered.
--查看修改后的日期格式
SQL> select sysdate from dual;
SYSDATE
----------
2010-03-28
--永久性修改,将其修改写到参数文件中。
alter system set nls_date_format = 'yyyy_mm_dd' scope = spfile;
--日期的加减
-- 日期+(-)数字 返回往前或往后的天数日期
-- +往前,-往后
-- 日期- 日期
SQL> select sysdate + 10 from dual;
SYSDATE+10
----------
2010-04-07
SQL> select sysdate - 10 from dual;
SYSDATE-10
----------
2010-03-18
--日期相减(为相差的天数)
SQL> select empno,ename,sysdate,sysdate - hiredate from scott.emp;
EMPNO ENAME SYSDATE SYSDATE-HIREDATE
---------- ---------- ---------- ----------------
7369 SMITH 2010-03-28 10693.4346
7499 ALLEN 2010-03-28 10628.4346
7521 WARD 2010-03-28 10626.4346
7566 JONES 2010-03-28 10587.4346
7654 MARTIN 2010-03-28 10408.4346
7698 BLAKE 2010-03-28 10558.4346
7782 CLARK 2010-03-28 10519.4346
7788 SCOTT 2010-03-28 8379.43456
7839 KING 2010-03-28 10358.4346
7844 TURNER 2010-03-28 10428.4346
7876 ADAMS 2010-03-28 8345.43456
--使用null值过滤
SQL> select * from scott.emp where comm is null;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 800 20
7566 JONES MANAGER 7839 1981-04-02 2975 20
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7782 CLARK MANAGER 7839 1981-06-09 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7839 KING PRESIDENT 1981-11-17 5000 10
7876 ADAMS CLERK 7788 1987-05-23 1100 20
7900 JAMES CLERK 7698 1981-12-03 950 30
7902 FORD ANALYST 7566 1981-12-03 3000 20
7934 MILLER CLERK 7782 1982-01-23 1300 10
/*ORDER BY排序(默认为升序)*/
SQL> select * from scott.emp where sal > 2000 order by sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 1981-06-09 2450 10
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7566 JONES MANAGER 7839 1981-04-02 2975 20
7902 FORD ANALYST 7566 1981-12-03 3000 20
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7839 KING PRESIDENT 1981-11-17 5000 10
--多字段排序
SQL> select * from scott.emp where sal > 2000 order by sal desc ,ename asc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7839 KING PRESIDENT 1981-11-17 5000 10
7902 FORD ANALYST 7566 1981-12-03 3000 20
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7566 JONES MANAGER 7839 1981-04-02 2975 20
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7782 CLARK MANAGER 7839 1981-06-09 2450 10
--按第个字段降序排列,order by 4 desc
SQL> select empno,ename,job,sal from scott.emp where sal > 2000 order by 4 desc ;
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7839 KING PRESIDENT 5000
7902 FORD ANALYST 3000
7788 SCOTT ANALYST 3000
7566 JONES MANAGER 2975
7698 BLAKE MANAGER 2850
7782 CLARK MANAGER 2450
七、更多
SQL 基础-->SELECT 查询
Sqlplus 常用命令
Oralce 相关
分享到:
相关推荐
描述了oracle sql的过滤和排序功能, 对于初学者是个不错的选择
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
课堂笔记-查询过滤排序.sql
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
005.sql基础查询_排序 .mp4 006.sql基础查询_分组聚合过滤002.mp4 007.sql基础查询_建表注释002.mp4 008.sql基础查询_增删改002.mp4 009.sql基础查询_锁表.mp4 010.sql基础查询_delete与truncate的区别.mp4 011.sql...
对查询出来的数据进行二次分析,提供过滤,排序、查找、编辑、导出。特点:支持把字段置为null,显示每个字段的属性(完全和数据库数据类型对应),对长文本的查看,大多SQL查询器在显示很长文本,会耗尽系统资源,...
SQL/SqlParameter特殊字符过滤/优化查询排序/异常记录row_number()over(order by {1})as row 排序 not in 排序 SQL查询、更新、插入、分页排序,存储过程调用
13.3过滤器排序 115 13.4请求匹配和HttpFirewall 116 13.5与其他基于过滤器的框架一起使用 118 13.6高级命名空间配置 118 14.核心安全筛选器 119 14.1 FilterSecurityInterceptor 119 14.2 ...
sql的基本SQL-SELECT语句 过滤和排序 SQL函数 子查询 多表查询
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 1.1.2 数据库能做什么 1.1.3 主流数据库管理系统介绍 1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息
再进入SQL:sqlplus sd0807/sd0807 帐号:sd0807-密码同样 公帐号:openlab-open123 设置环境变量: ORACLE_SID=oral10g\ --变局部变量 export ORACLE_SID --变全局变量 unset ORACLE_SID --卸载环境变量 ... -->...
查询id大于2的数据,并完成运算后的结果进行分组和排序 select count(*), (sex * id) new from student where id > 2 group by sex * id order by sex * id; --group by all 所有分组 按照年龄分组,是所有的年龄 ...
题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目 等
使用SELECT语句,我们通过WHERE子句和LIKE运算符对名字进行过滤,并使用ORDER BY子句对结果进行排序。在这个例子中,我们使用%Doe%作为通配符进行模糊匹配。 查询名为users的表中名字中包含"Doe"的用户数据,并按照...
SQL是目前使用最为广泛的数据库语言之一。...本书涉及不同平台上数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,通过本书读者可以系统地学习到SQL的知识和方法
sql到jdl 将SQL数据库转换为jHipster的JDL格式的工具(由于要使用...不同的标准,支持JPA和jOOQ动态过滤和排序 如何使用 至少运行一次“ mvn compile”,以让jOOQ生成一些必需的表(请参阅已)。 我删除了生成的代码
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 1.1.2 数据库能做什么 1.1.3 主流数据库管理系统介绍 1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 1.1.2 数据库能做什么 1.1.3 主流数据库管理系统介绍 1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息