`
fyd222
  • 浏览: 98787 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SQL基础-->过滤和排序

 
阅读更多

--=======================================

--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默认显示的日期格式为:DDMONRR

可以用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 相关

分享到:
评论

相关推荐

    sql过滤和排序

    描述了oracle sql的过滤和排序功能, 对于初学者是个不错的选择

    ERP源码20110803

    3、基础档案-&gt;往来单位-&gt;供应商档案 添加过滤功能 4、基础档案-&gt;存货-&gt;存货档案 添加过滤功能 5、库存管理-&gt;设置-&gt;期初结存 添加导入数据功能 6、存货核算-&gt;设置-&gt;存货期初 添加导入数据功能 2010-04-07 1,采购订单...

    三层ERP源代码

    3、基础档案-&gt;往来单位-&gt;供应商档案 添加过滤功能 4、基础档案-&gt;存货-&gt;存货档案 添加过滤功能 5、库存管理-&gt;设置-&gt;期初结存 添加导入数据功能 6、存货核算-&gt;设置-&gt;存货期初 添加导入数据功能 2010-04-07 1,采购订单...

    ERP源码程序下载.net

    3、基础档案-&gt;往来单位-&gt;供应商档案 添加过滤功能 4、基础档案-&gt;存货-&gt;存货档案 添加过滤功能 5、库存管理-&gt;设置-&gt;期初结存 添加导入数据功能 6、存货核算-&gt;设置-&gt;存货期初 添加导入数据功能 2010-04-07 1,采购订单...

    课堂笔记-查询过滤排序.sql

    课堂笔记-查询过滤排序.sql

    永思ERP,vb.net源码

    3、基础档案-&gt;往来单位-&gt;供应商档案 添加过滤功能 4、基础档案-&gt;存货-&gt;存货档案 添加过滤功能 5、库存管理-&gt;设置-&gt;期初结存 添加导入数据功能 6、存货核算-&gt;设置-&gt;存货期初 添加导入数据功能 2010-04-07 1,采购订单...

    Oracle-SQL基础到存储过程下载(第一阶段)

    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...

    sqldebug--通用数据库GUI

    对查询出来的数据进行二次分析,提供过滤,排序、查找、编辑、导出。特点:支持把字段置为null,显示每个字段的属性(完全和数据库数据类型对应),对长文本的查看,大多SQL查询器在显示很长文本,会耗尽系统资源,...

    SQL优化通用类/特殊字符过滤/优化查询排序/异常记录

    SQL/SqlParameter特殊字符过滤/优化查询排序/异常记录row_number()over(order by {1})as row 排序 not in 排序 SQL查询、更新、插入、分页排序,存储过程调用

    spring security 参考手册中文版

    13.3过滤器排序 115 13.4请求匹配和HttpFirewall 116 13.5与其他基于过滤器的框架一起使用 118 13.6高级命名空间配置 118 14.核心安全筛选器 119 14.1 FilterSecurityInterceptor 119 14.2 ...

    数据库基础查询sql

    sql的基本SQL-SELECT语句 过滤和排序 SQL函数 子查询 多表查询

    程序员的SQL金典4-8

    目录 第1章 数据库入门  1.1 数据库概述  1.1.1 数据库与数据库管理系统  1.1.2 数据库能做什么  1.1.3 主流数据库管理系统介绍  1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息

    2009达内SQL学习笔记

    再进入SQL:sqlplus sd0807/sd0807 帐号:sd0807-密码同样 公帐号:openlab-open123 设置环境变量: ORACLE_SID=oral10g\ --变局部变量 export ORACLE_SID --变全局变量 unset ORACLE_SID --卸载环境变量 ... --&gt;...

    T-SQL高级查询

    查询id大于2的数据,并完成运算后的结果进行分组和排序 select count(*), (sex * id) new from student where id &gt; 2 group by sex * id order by sex * id; --group by all 所有分组 按照年龄分组,是所有的年龄 ...

    sql笔试面试题目(oracle,含答案)

    题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目 等

    MySQL数据的过滤和排序,使用Python语言和MySQL连接库示例代码

    使用SELECT语句,我们通过WHERE子句和LIKE运算符对名字进行过滤,并使用ORDER BY子句对结果进行排序。在这个例子中,我们使用%Doe%作为通配符进行模糊匹配。 查询名为users的表中名字中包含"Doe"的用户数据,并按照...

    SQL基础和高级入门(必知必会)

    SQL是目前使用最为广泛的数据库语言之一。...本书涉及不同平台上数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,通过本书读者可以系统地学习到SQL的知识和方法

    sql-to-jdl:将SQL数据库转换为jHipster的JDL格式的工具(创建是由于要使用jHipster生成现有数据库并构建angular-java web)

    sql到jdl 将SQL数据库转换为jHipster的JDL格式的工具(由于要使用...不同的标准,支持JPA和jOOQ动态过滤和排序 如何使用 至少运行一次“ mvn compile”,以让jOOQ生成一些必需的表(请参阅已)。 我删除了生成的代码

    程序员的SQL金典6-8

    目录 第1章 数据库入门  1.1 数据库概述  1.1.1 数据库与数据库管理系统  1.1.2 数据库能做什么  1.1.3 主流数据库管理系统介绍  1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典7-8

    目录 第1章 数据库入门  1.1 数据库概述  1.1.1 数据库与数据库管理系统  1.1.2 数据库能做什么  1.1.3 主流数据库管理系统介绍  1.2 数据库基础概念 ... A.4 Microsoft SQL Server的安装和使用 显示部分信息

Global site tag (gtag.js) - Google Analytics