日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

漫 談oracle 中 的 空 值

瀏覽:42日期:2023-11-16 15:53:17
;在 數 據 庫 中, 空 值 用 來 表 示 實 際 值 未 知 或 無 意 義 的 情 況。 在 一 個 表 中, 如 果 一 行 中 的 某 列 沒 有 值, 那 么 就 稱 它 為 空 值(NULL)。 任 何 數 據 類 型 的 列, 只 要 沒 有 使 用 非 空(NOT NULL) 或 主 鍵(PRIMARY KEY) 完 整 性 限 制, 都 可 以 出 現 空 值。 在 實 際 應 用 中, 如 果 忽 略 空 值 的 存 在, 將 會 造 成 造 成 不 必 要 的 麻 煩。 ---- 例 如, 在 下 面 的 雇 員 表(EMP) 中, 雇 員 名(ENAME) 為KING 的 行, 因 為KING 為 最 高 官 員(PRESIDENT), 他 沒 有 主 管(MGR), 所 以 其MGR 為 空 值。 因 為 不 是 所 有 的 雇 員 都 有 手 續 費(COMM), 所 以 列COMM 允 許 有 空 值, 除300、500、1400、0 以 外 的 其 它 各 行COMM 均 為 空 值。 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---- -------- -------- --------- -------- ------ ---------7369 SMITH CLERK 7902 17-DEC-80 800 207499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 307521 WARD SALESMAN 7698 22-FEB-81 1250 500 307566 JONES MANAGER 7839 02-APR-81 2975207654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 307698 BLAKE MANAGER 7839 01-MAY-81 2850307782 CLARK MANAGER 7839 09-JUN-81 2450107788 SCOTT ANALYST 7566 09-DEC-82 3000207839 KING PRESIDENT 17-NOV-81 5000107844 TURNER SALESMAN 7698 08-SEP-81 1500 0 307876 ADAMS CLERK 7788 12-JAN-83 1100207900 JAMES CLERK 7698 03-DEC-81 950307902 FORD ANALYST 7566 03-DEC-81 3000207934 MILLER CLERK 7782 23-JAN-82 130010---- 本 文 將 以 上 述EMP 表 為 例, 具 體 討 論 一 下 空 值 在 日 常 應 用 中 所 具 有 的 一 些 特 性。 ---- 一、 空 值 的 生 成 及 特 點 ---- 1. 空 值 的 生 成 ---- 如 果 一 列 沒 有 非 空(NOT NULL) 完 整 性 限 制, 那 么 其 缺 省 的 值 為 空 值, 即 如 果 插 入 一 行 時 未 指 定 該 列 的 值, 則 其 值 為 空 值。 ---- 使 用SQL 語 句INSERT 插 入 行, 凡 未 涉 及 到 的 列, 其 值 為 空 值; 涉 及 到 的 列, 如 果 其 值 確 實 為 空 值, 插 入 時 可 以 用NULL 來 表 示( 對 于 字 符 型 的 列, 也 可 以 用'' 來 表 示)。 ---- 例: 插 入 一 行, 其EMPNO 為1、ENAME 為'JIA'、SAL 為10000、job 和comm 為 空 值。 SQL >insert into emp(empno,ename,job,sal,comm) values(1,'JIA',NULL,1000,NULL);SQL >select * from emp where empno=1;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO--------- ---------- --------- --------- --------- ---------1 JIA 1000---- 可 以 看 到 新 插 入 的 一 行, 除job 和comm 為 空 值 外,mgr、hiredate、deptno 三 列 由 于 插 入 時 未 涉 及, 也 為 空 值。 ---- 使 用SQL 語 句UPDATE 來 修 改 數 據, 空 值 可 用NULL 來 表 示( 對 于 字 符 型 的 列, 也 可 以 用'' 來 表 示)。 例: SQL >update emp set ename=NULL,sal=NULL where empno=1;---- 2. 空 值 的 特 點 ---- 空 值 具 有 以 下 特 點: ---- * 等 價 于 沒 有 任 何 值。 ---- * 與 0、 空 字 符 串 或 空 格 不 同。 ---- * 在where 條 件 中, Oracle 認 為 結 果 為NULL 的 條 件 為FALSE, 帶 有 這 樣 條 件 的select 語 句 不 返 回 行, 并 且 不 返 回 錯 誤 信 息。 但NULL 和FALSE 是 不 同 的。 ---- * 排 序 時 比 其 他 數 據 都 大。 ---- * 空 值 不 能 被 索 引。 ---- 二、 空 值 的 測 試 ---- 因 為 空 值 表 示 缺 少 數 據, 所 以 空 值 和 其 它 值 沒 有 可 比 性, 即 不 能 用 等 于、 不 等 于、 大 于 或 小 于 和 其 它 數 值 比 較, 當 然 也 包 括 空 值 本 身( 但 是 在decode 中 例 外, 兩 個 空 值 被 認 為 是 等 價)。 測 試 空 值 只 能 用 比 較 操 作 符IS NULL 和IS NOT NULL。 如 果 使 用 帶 有 其 它 比 較 操 作 符 的 條 件 表 達 式, 并 且 其 結 果 依 賴 于 空 值, 那 么 其 結 果 必 定 是NULL。 在where 條 件 中,Oracle 認 為 結 果 為NULL 的 條 件 為FALSE, 帶 有 這 樣 條 件 的select 語 句 不 返 回 行, 也 不 返 回 錯 誤 信 息。 ---- 例 如 查 詢EMP 表 中MGR 為NULL 的 行: SQL >select * from emp where mgr='' no rows selectedSQL >select * from emp where mgr=null; no rows selectedSQL >select * from emp where mgr is null;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- --------- --------- --------- ---------7839 KING PRESIDENT 17-NOV-81 500010---- 第1、2 句 寫 法 不 妥,WHERE 條 件 結 果 為NULL, 不 返 回 行。 第 三 句 正 確, 返 回MGR 為 空 值 的 行。 ---- 三、 空 值 和 操 作 符 ---- 1. 空 值 和 邏 輯 操 作 符 ---- 邏 輯 操 作 符 ---- 表 達 式 ---- 結 果 ANDNULL AND TRUENULLNULL AND FALSEFALSENULL AND NULLNULLORNULL OR TRUETRUENULL OR FALSENULLNULL OR NULLNULLNOTNOT NULLNULL---- 可 以 看 到, 在 真 值 表 中, 除NULL AND FALSE 結 果 為FALSE、NULL OR TRUE 結 果 為TRUE 以 外, 其 它 結 果 均 為NULL。 ---- 雖 然 在where 條 件 中,Oracle 認 為 結 果 為NULL 的WHERE 條 件 為FALSE, 但 在 條 件 表 達 式 中NULL 不 同 于FALSE。 例 如 在NOT ( NULL AND FALSE ) 和NOT ( NULL AND NULL ) 二 者 中 僅 有 一 處FALSE 和TRUE 的 區 別, 但NOT ( NULL AND FALSE ) 的 結 果 為 TRUE, 而NOT ( NULL AND NULL ) 的 結 果 為NULL。 ---- 下 面 舉 例 說 明 空 值 和 邏 輯 操 作 符 的 用 法: SQL > select * from emp where not comm=null and comm!=0;no rows selectedSQL > select * from emp where not ( not comm=null and comm!=0 );EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- --------- --------- --------- ---------7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30---- 第 一 個Select 語 句, 條 件'not comm=null and comm!=0' 等 價 于NULL AND COMM!=0。 對 于 任 意 一 行, 如 果COMM 為 不 等 于0 的 數 值, 條 件 等 價 于NULL AND TRUE, 結 果 為NULL; 如 果COMM 等 于0, 條 件 等 價 于NULL AND FALSE, 結 果 為FALSE。 所 以, 最 終 結 果 不 返 回 行。 ---- 第 二 個Select 語 句 的 條 件 為 第 一 個Select 語 句 條 件 的' 非'(NOT), 對 于 任 意 一 行, 如 果COMM 為 不 等 于0 的 數 值, 條 件 等 價 于NOT NULL, 結 果 為NULL; 如 果COMM 等 于0, 條 件 等 價 于NOT FALSE, 結 果 為TRUE。 所 以, 最 終 結 果 返 回 行COMM 等 于0 的 行。 ---- 2. 空 值 和 比 較 操 作 符 ---- (1)IS [NOT] NULL: 是 用 來 測 試 空 值 的 唯 一 操 作 符( 見' 空 值 的 測 試')。 (2)=、!=、>=、<=、>、<SQL >select ename,sal,comm from emp where sal >comm;ENAME SAL COMM---------- --------- ---------ALLEN 1600 300WARD 1250 500TURNER1500 0---- sal 或comm 為 空 值 的 行,sal>comm 比 較 結 果 為NULL, 所 以 凡 是sal 或comm 為 空 值 的 行 都 沒 有 返 回。 ---- (3)IN 和NOT IN 操 作 符 SQL >select ename,mgr from emp where mgr in (7902,NULL);ENAME MGR---------- ---------SMITH 7902---- 在 上 述 語 句 中, 條 件'mgr in (7902,NULL)' 等 價 于mgr=7902 or mgr=NULL。 對 于 表EMP 中 的 任 意 一 行, 如 果mgr 為NULL, 則 上 述 條 件 等 價 于NULL OR NULL, 即 為NULL; 如 果mgr 為 不 等 于7902 的 數 值, 則 上 述 條 件 等 價 于FALSE OR NULL, 即 為NULL; 如 果mgr 等 于7902, 則 上 述 條 件 等 價 于TRUE OR NULL, 即 為TRUE。 所 以, 最 終 結 果 能 返 回mgr 等 于7902 的 行。 SQL >select deptno from emp where deptno not in ('10',NULL);no rows selected---- 在 上 述 語 句 中, 條 件'deptno not in ('10',NULL)' 等 價 于deptno!='10' and deptno!=NULL, 對 于EMP 表 中 的 任 意 一 行, 條 件 的 結 果 只 能 為NULL 或FALSE, 所 以 不 返 回 行。 ---- (4)any,some SQL >select ename,sal from emp where sal > any(3000,null);ENAME SAL---------- ---------KING 5000---- 條 件'sal > any(3000,null)' 等 價 于sal >3000 or sal >null。 類 似 前 述(3) 第 一 句, 最 終 結 果 返 回 所 有sal >3000 的 行。 ---- (5)All SQL >select ename,sal from emp where sal > all(3000,null);no rows selected---- 條 件'sal> all(3000,null)' 等 價 于sal >3000 and sal >null, 結 果 只 能 為NULL 或FALSE, 所 以 不 返 回 行。 ---- (6)(not)between SQL >select ename,sal from emp where sal between null and 3000;no rows selected---- 條 件'sal between null and 3000' 等 價 于sal >=null and sal< =3000, 結 果 只 能 為NULL 或FALSE, 所 以 不 返 回 行。 SQL >select ename,sal from emp where sal not between null and 3000;ENAME SAL---------- ---------KING 5000---- 條 件'sal not between null and 3000' 等 價 于sal3000, 類 似 前 述(3) 的 第 一 句, 結 果 返 回sal>3000 的 行。 ---- 下 表 為 比 較 操 作 符 和 空 值 的 小 結: ---- 比 較 操 作 符 ---- 表 達 式( 例:A、B 是NULL、C=10) ---- 結 果 IS NULL、IS NOT NULLA IS NULLTRUEA IS NOT NULLFALSEC IS NULLFALSEC IS NOT NULLTRUE=、!=、>=、< =、>、< A = NULLNULLA > NULLNULLC = NULLNULLC > NULLNULLIN (=ANY)A IN (10,NULL)NULLC IN (10,NULL)TRUEC IN (20,NULL)NULLNOT IN ( 等 價 于 !=ALL)A NOT IN (20,NULL)NULLC NOT IN (20,NULL)FALSEC NOT IN (10,NULL)NULLANY,SOMEA > ANY(5,NULL)NULLC > ANY(5,NULL)TRUEC > ANY(15,NULL)NULLALLA > ALL(5,NULL)NULLC > ALL(5,NULL)NULLC > ALL(15,NULL)FALSE(NOT)BETWEENA BETWEEN 5 AND NULLNULLC BETWEEN 5 AND NULLNULLC BETWEEN 15 AND NULLFALSEA NOT BETWEEN 5 AND NULLNULLC NOT BETWEEN 5 AND NULLNULLC NOT BETWEEN 15 AND NULLTRUE---- 3、 空 值 和 算 術、 字 符 操 作 符 ---- (1) 算 術 操 作 符: 空 值 不 等 價 于0, 任 何 含 有 空 值 的 算 術 表 達 式 其 運 算 結 果 都 為 空 值, 例 如 空 值 加10 為 空 值。 ---- (2) 字 符 操 作 符: 因 為ORACLE 目 前 處 理 零 個 字 符 值 的 方 法 與 處 理 空 值 的 方 法 相 同( 日 后 的 版 本 中 不 一 定 仍 然 如 此), 所 以 對 于, 空 值 等 價 于 零 個 字 符 值。 例: SQL >select ename,mgr,enamemgr,sal,comm,sal+comm from emp;ENAME MGR ENAMEMGRSAL COMM SAL+COMM---------- --------- ------------- --------- --------- ---------SMITH 7902 SMITH7902 800 ALLEN 7698 ALLEN76981600 300 1900WARD 7698 WARD7698 1250 500 1750JONES 7839 JONES78392975 MARTIN7698 MARTIN7698 1250 1400 2650BLAKE 7839 BLAKE78392850 CLARK 7839 CLARK78392450 SCOTT 7566 SCOTT75663000 KING KING 5000 TURNER7698 TURNER7698 1500 0 1500ADAMS 7788 ADAMS77881100 JAMES 7698 JAMES7698 950 FORD 7566 FORD7566 3000 MILLER7782 MILLER7782 1300 ---- 我 們 可 以 看 到, 凡mgr 為 空 值 的,enamemgr 結 果 等 于ename; 凡 是comm 為 空 值 的 行,sal+comm 均 為 空 值。 ---- 四、 空 值 和 函 數 ---- 1 . 空 值 和 度 量 函 數 ---- 對 于 度 量 函 數, 如 果 給 定 的 參 數 為 空 值, 則 其(NVL、TRANSLATE 除 外) 返 回 值 為 空 值。 如 下 例 中 的ABS(COMM), 如 果COMM 為 空 值,ABS(COMM) 為 空 值。 SQL > select ename,sal,comm,abs(comm) from emp where sal< 1500;ENAME SAL COMM ABS(COMM)---------- --------- --------- ---------SMITH 800WARD 1250 500 500MARTIN1250 1400 1400ADAMS 1100JAMES 950MILLER1300---- 2. 空 值 和 組 函 數 ---- 組 函 數 忽 略 空 值。 在 實 際 應 用 中, 根 據 需 要 可 利 用nvl 函 數 用 零 代 替 空 值。 例: SQL >select count(comm),sum(comm),avg(comm) from emp;COUNT(COMM) SUM(COMM) AVG(COMM)----------- --------- ---------4 2200 550SQL >select count(nvl(comm,0)),sum(nvl(comm,0)),avg(nvl(comm,0))from emp;COUNT(NVL(COMM,0)) SUM(NVL(COMM,0)) AVG(NVL(COMM,0))------------------ ---------------- ---------------- 14 2200157.14286---- 第 一 個SELECT 語 句 忽 略COMM 為 空 值 的 行, 第 二 個SELECT 語 句 使 用NVL 函 數 統 計 了 所 有 的COMM, 所 以 它 們 統 計 的 個 數、 平 均 值 都 不 相 同。 另 外 需 要 注 意 的 是, 在 利 用 組 函 數 進 行 數 據 處 理 時, 不 同 的 寫 法 具 有 不 同 的 不 同 含 義, 在 實 際 應 用 中 應 靈 活 掌 握。 例 如: SQL >select deptno,sum(sal),sum(comm), sum(sal+comm),sum(sal)+sum(comm),sum(nvl(sal,0)+nvl(comm,0)) from empgroup by deptno; DEPTNO SUM(SAL) SUM(COMM) SUM(SAL+COMM) SUM(SAL)+SUM(COMM) SUM(NVL(SAL,0)+NVL(COMM,0))--------- --------- --------- ------------- -------10 8750 8750 20 1087510875 30 9400 2200 780011600 11600---- 可 以 看 到SUM(SAL+COMM)、SUM(SAL)+SUM(COMM)、 SUM(NVL(SAL,0)+NVL(COMM,0)) 的 區 別:SUM(SAL+COMM) 為 先 加 然 后 計 算 各 行 的 和, 如 果SAL、COMM 中 有 一 個 為NULL, 則 該 行 忽 略 不 計;SUM(SAL)+SUM(COMM) 為 先 計 算 各 行 的 合 計 然 后 再 加,SAL、COMM 中 的NULL 都 忽 略 不 計, 但 如 果 SUM(SAL)、SUM(COMM) 二 者 的 結 果 之 中 有 一 個 為NULL, 則 二 者 之 和 為NULL; 在SUM(NVL(SAL,0)+NVL(COMM,0)) 里,SAL、COMM 中 的NULL 按0 處 理。 ---- 五、 空 值 的 其 它 特 性 ---- 1. 空 值 在 排 序 時 大 于 任 何 值。 例 如: SQL > select ename,comm from emp where deptno='30' order by comm;ENAME COMM---------- ---------TURNER 0ALLEN 300WARD 500MARTIN1400BLAKE JAMES---- 2. 空 值 不 能 被 索 引。 雖 然 在 某 列 上 建 立 了 索 引, 但 是 對 該 列 的 空 值 查 詢 來 說, 因 為 空 值 沒 有 被 索 引, 所 以 不 能 改 善 查 詢 的 效 率。 例 如 下 面 的 查 詢 不 能 利 用 在MGR 列 上 創 建 的 索 引。 SQL >select ename from emp where mgr is null;ENAME----------KING---- 另 外 正 是 因 為 空 值 不 被 索 引, 所 以 可 在 含 有 空 值 的 列 上 建 立 唯 一 性 索 引(UNIQUE INDEX)。 例 如, 可 以 在EMP 表 的COMM 列 上 建 立 唯 一 性 索 引: SQL > create unique index emp_comm on emp(comm);Index created.
標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品国产乱码久久久| 国产一区日韩| 日韩大片在线观看| 久久麻豆精品| 视频精品一区| 欧美精品91| 99热国内精品| 日韩视频久久| 欧美久久精品| 成人免费电影网址| 欧美二三四区| 一区二区精品| 成人看片网站| 四虎国产精品免费观看| 免费人成网站在线观看欧美高清| 国产极品久久久久久久久波多结野| 日本美女一区| 深夜福利亚洲| 日韩高清三区| 婷婷综合网站| 久久精品亚洲| 日韩中文字幕区一区有砖一区 | 韩国女主播一区二区三区| 欧美激情视频一区二区三区免费| 日韩三区免费| 日韩不卡免费视频| 国产精品久久久久久久久久10秀 | 久久中文字幕av一区二区不卡| 好吊日精品视频| 国产精品久久久一区二区| 999久久久免费精品国产| 日本亚洲最大的色成网站www | 亚洲精品在线国产| 国产va在线视频| 日韩av二区在线播放| 88xx成人免费观看视频库| 日本成人中文字幕在线视频| 群体交乱之放荡娇妻一区二区| 91精品国产自产观看在线| 欧美亚洲国产精品久久| 青青草91视频| 免费在线观看一区二区三区| 国产精品亚洲一区二区三区在线观看| 日韩精品午夜视频| 一本色道久久精品| 久久精品123| 精品黄色一级片| 日韩高清一区二区| 丝袜a∨在线一区二区三区不卡| 99视频精品视频高清免费| 精品三级在线| 精品一区二区三区中文字幕视频| 欧美日韩午夜电影网| 日韩视频1区| 天堂成人免费av电影一区| 亚洲黄色免费av| 欧美国产91| 亚洲视频电影在线| 99精品视频在线| 日韩精品亚洲专区| 亚洲一区资源| 日韩国产网站| 亚洲精品日本| 成人午夜亚洲| 日本国产精品| 青青草国产成人99久久| 卡一卡二国产精品| 久久久精品五月天| 成人污污视频| 国产成人精品亚洲线观看| 欧美天堂一区二区| 久久免费视频66| 麻豆国产在线| 成人av动漫在线观看| 亚洲制服少妇| 亚洲精品自拍| 欧美交a欧美精品喷水| 精品精品久久| 久久91导航| 久久av在线| 美女高潮久久久| 欧美精品一区二区三区精品| 亚洲制服一区| 精品99在线| 午夜久久tv| 一区二区三区国产在线| 亚洲精品一二三**| 成人综合一区| 亚洲一区二区日韩| 国产videos久久| 蜜桃伊人久久| 97精品一区二区| 在线精品亚洲| 黄毛片在线观看| 欧美日韩一区二区三区在线电影| 亚洲一级网站| 国产精品久久久久久久免费观看| 悠悠资源网久久精品| 久久国产日韩| 免费精品国产| 久久久一二三| 日韩一区自拍| 国产一区国产二区国产三区| 日韩精品一区二区三区中文 | 久久久精品五月天| 免费日韩成人| 国产亚洲高清在线观看| 日韩一区二区三区免费视频| 亚洲一区激情| 精品一区亚洲| 午夜久久tv| 国产精品天堂蜜av在线播放| 日本中文字幕一区二区| 亚洲欧美日韩国产一区二区| 日韩中文欧美在线| 日韩精品久久理论片| 日本三级亚洲精品| 国产精品麻豆成人av电影艾秋 | 蜜桃久久久久| 国产成人精品一区二区三区免费| 精品一区二区男人吃奶 | 日韩专区精品| 日本蜜桃在线观看视频| 桃色一区二区| 亚洲一区二区三区高清| 日韩欧美中文在线观看| 国产精品久久国产愉拍| 四虎国产精品免费观看| 影音国产精品| 中文字幕日韩欧美精品高清在线| 一区在线免费| 毛片不卡一区二区| 蜜桃国内精品久久久久软件9| 亚洲精品伊人| 精品国产美女a久久9999| 日本欧洲一区二区| 日韩中文在线电影| 欧美激情福利| 香蕉久久一区| 亚洲综合电影一区二区三区| 成人精品动漫一区二区三区| 三级在线观看一区二区| 免费一级欧美在线观看视频 | 国产亚洲精品v| 欧美日韩视频免费看| 久久国产日本精品| 男女男精品视频网| 成人精品天堂一区二区三区| 国产伦一区二区三区| 伊人久久婷婷| 嫩草伊人久久精品少妇av杨幂| 国产 日韩 欧美一区| 日韩午夜精品| 91偷拍一区二区三区精品| 亚洲天堂免费| 久久午夜影院| 日本不卡高清视频| 午夜视频精品| 四虎8848精品成人免费网站| 亚洲免费一区二区| 四虎4545www国产精品 | 欧美男人天堂| 精品三级av| 国产精品一区二区99| 欧美日韩视频| 久久国产成人午夜av影院宅| 精品国产乱码久久久| 欧美亚洲自偷自偷| 日本欧洲一区二区| 国产精品久久久久久久久久10秀| 国产一卡不卡| 国产一级成人av| 亚洲视频二区| 综合一区在线| 首页欧美精品中文字幕| 六月婷婷一区| 久热re这里精品视频在线6| 在线午夜精品| 亚洲日韩视频| 亚洲制服一区| 日本成人中文字幕| 国产精区一区二区| 久久蜜桃av| 在线免费观看亚洲| 欧美特黄一区| 亚洲资源av| 欧美激情99| 国产白浆在线免费观看| 999国产精品| 日韩中文欧美在线| 国产精品综合| 国产美女高潮在线| 99日韩精品| 日本视频中文字幕一区二区三区| 日韩高清电影免费| 国产精品va视频| 久久蜜桃av| 日韩国产欧美视频| 麻豆精品av| www.九色在线|