--=======================================
--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的过滤和排序功能, 对于初学者是个不错的选择
在Oracle11g SQL基础-实验手册中,涵盖了使用Oracle SQL进行数据操作和管理的基础知识点。以下是对该手册中知识点的详细解释: 第1章 编写基本的SQL SELECT语句 这一章节介绍了如何编写基本的SQL查询语句。包括...
第2章过滤和排序数据讲述了如何使用WHERE子句过滤数据,包括使用判断条件、IN条件、NOT操作符、LIKE条件进行模糊匹配以及排序查询结果。本章是数据检索部分的核心内容,涉及到数据筛选和结果展示的技巧。 第3章单行...
3. **数据查看与操作**:可以查看和修改数据库中的数据,支持表格、网格和文本视图,还可以执行数据过滤、排序和分组操作。 4. **数据库对象管理**:用户可以创建、修改和删除数据库对象,如表、视图、存储过程、...
你可以根据需要选择一个或多个列,使用WHERE子句过滤结果,GROUP BY进行数据分组,HAVING来筛选分组后的结果,以及ORDER BY对结果进行排序。更进一步,还可以使用JOIN操作连接不同的表,获取更复杂的数据视图。 2. ...
这个压缩包"sql---基本练习.rar"显然包含了一些SQL基础练习,旨在帮助初学者掌握和巩固SQL的基本概念和操作。让我们详细探讨一下SQL的核心知识点: 1. 数据库与表: SQL主要用于操作数据库,其中数据库是由一张或...
3. **可视化结果**:查询结果以清晰的表格形式展示,可以方便地进行排序、筛选和导出。 4. **性能优化**:插件会自动优化SQL查询,尽可能地利用ES的特性提高查询效率。 **最佳实践** 1. **规划索引**:合理设计索引...
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
根据提供的文档内容,我们可以归纳并深入探讨Oracle SQL的相关知识点,主要围绕SELECT语句及其使用方法展开。...这些知识点是学习和掌握Oracle SQL的重要基础,能够帮助用户更高效地管理和查询数据库中的数据。
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
1. **基础查询**:介绍如何使用SELECT语句进行基本的数据检索,包括选择特定列、过滤行、排序结果以及分组数据。 2. **联接操作**:讲解如何通过JOIN语句连接多个表,以获取跨表的数据信息,包括内连接、外连接和...
- `SELECT` 可以用于复杂的查询,包括过滤(WHERE子句),排序(ORDER BY子句),分组(GROUP BY子句),聚合函数(COUNT, SUM, AVG等),以及使用LIKE,IN,BETWEEN等操作符进行数据筛选。 这些Transact-SQL语句...
这可能包括选择特定列、使用WHERE子句过滤结果、排序数据(ORDER BY)和分组数据(GROUP BY)。 2. **联接操作**:学习JOIN(如INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN)以合并来自不同表的数据。 3....
3、基础档案->往来单位->供应商档案 添加过滤功能 4、基础档案->存货->存货档案 添加过滤功能 5、库存管理->设置->期初结存 添加导入数据功能 6、存货核算->设置->存货期初 添加导入数据功能 2010-04-07 1,采购订单...
- **排序与分组**:使用ORDER BY和GROUP BY子句对查询结果进行排序和分组,便于数据分析。 #### 四、高级查询技术 - **连接查询**:掌握不同类型的连接(INNER JOIN, LEFT JOIN, RIGHT JOIN等),以便从多个表中...
除了基本的条件查询和排序,还可以结合`GROUP BY`和聚合函数(如`COUNT`、`SUM`、`AVG`、`MAX`、`MIN`)进行分组统计,或者使用`HAVING`来对分组后的结果进行过滤。 在Oracle 10g中,我们还可以使用Sql*Plus工具来...
课堂笔记-查询过滤排序.sql
通过以上介绍,我们可以了解到SQL注入过滤字典中包含了各种特殊字符和关键词,这些元素在实际应用中可能会导致安全问题。因此,开发者需要了解这些知识点,并采取适当的措施来防范SQL注入攻击。
此外,JOIN操作用于合并来自多个表的数据,WHERE子句用于筛选结果,GROUP BY和HAVING用于数据分组和过滤。 2. **T-SQL扩展**:SQL Server 2005支持T-SQL(Transact-SQL),它是SQL的Microsoft扩展,包含了存储过程...