日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL基础--过滤和排序

發(fā)布時(shí)間:2025/6/15 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL基础--过滤和排序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

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

--SQL基礎(chǔ)-->過濾和排序

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

/*

一、使用WHERE字句實(shí)現(xiàn)對(duì)數(shù)據(jù)的過濾

??? 用法:SELECT *|{[DISTINCT] column|expression [alias],...}

????????? FROM table

????????? [WHERE condition(s)];

二、多條件連接

??? AND ?? 同時(shí)滿足

??? OR????? 滿足其中一個(gè)

?

三、比較符

??? ? ??? 大于

??? >= 大于等于

??? ? ??? 小于

??? <= 小于等于

??? <> 不等于

??? = ??? 不等于

??? IS NULL 是否為空值

??? IS NOT NULL 不為空值

??? NOT???????? 條件為FALSE時(shí)返回TRUE

?

??? BETWEEN x AND y?? 大于等于X,小于等于Y

??? IN (集合)? ?? ?在這個(gè)集合中,或者講在這個(gè)列表中

??? NOT IN(集合)? 不在這個(gè)集合中,或者講不在這個(gè)列表中

?

??? LIKE?? 使用LIKE操作符來執(zhí)行有效搜索字符串?dāng)?shù)值的通配符搜索

??? ? ??? 通配任意字符

??? _?? ??? 能配單個(gè)字符

???

四、日期和字符串的處理

??? 字符串和日期值使用單引號(hào)標(biāo)記嵌入

??? 字符數(shù)值是大小寫有關(guān),而日期數(shù)值是格式化的。

??? ORACLE默認(rèn)顯示的日期格式為:DDMONRR

??? 可以用alter session set nls_date_format='yyyy-mm-dd';修改日期格式

??? 永久性修改可以用:

??? alter system set nls_date_format='yyyy-mm-dd' scope=spfile;

?

??? 日期相加減:

??? ??? 日期+(-)數(shù)字? 返回一個(gè)往前或往后的天數(shù)的日期

?????? ??? ??? +往后? -往前

?

??? ??? 日期-日期????? 得到兩個(gè)日期之間相差的天數(shù)

??????

五、order by 排序

??? 默認(rèn)的排序方式:升序

??? 控制排序方式:?? 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

?

/*錯(cuò)誤的寫法*/

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????????? ???????? 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????????? ???????? 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????????? ???????? 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%_ 運(yùn)算符的用法*/

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

?

/*日期格式的修改,僅對(duì)當(dāng)前會(huì)話有效*/

SQL> alter session set nls_date_format = 'yyyy-mm-dd';

?

Session altered.

?

--查看修改后的日期格式

SQL> select sysdate from dual;

?

SYSDATE

----------

2010-03-28

?

--永久性修改,將其修改寫到參數(shù)文件中。

alter system set? nls_date_format =? 'yyyy_mm_dd' scope = spfile;

?

--日期的加減

--???? 日期+(-)數(shù)字? 返回往前或往后的天數(shù)日期

--???? +往前,-往后

--???? 日期- 日期

?

SQL> select sysdate + 10 from dual;

?

SYSDATE+10

----------

2010-04-07

?

SQL> select sysdate - 10 from dual;

?

SYSDATE-10

----------

2010-03-18

?

--日期相減(為相差的天數(shù))

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排序(默認(rèn)為升序)*/

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

?

--按第個(gè)字段降序排列,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 基礎(chǔ)-->SELECT 查詢

??? Sqlplus 常用命令

??? Oralce? 相關(guān)?

??? ??

?

?


原文鏈接: http://blog.csdn.net/robinson_0612/article/details/5487992

轉(zhuǎn)載于:https://my.oschina.net/dtec/blog/47476

總結(jié)

以上是生活随笔為你收集整理的SQL基础--过滤和排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。