【正文】
。該例中雇員名稱右側(cè)連接若干個 “ .”, 湊足 15位 , 然后與雇員職務(wù)連接成列表 。 輸入并執(zhí)行查詢: SELECT concat(rpad(ename,15,39。 輸入并執(zhí)行查詢: SELECT empno, ename, deptno FROM emp WHERE lower(ename) =39。 B 39。 S S M IT H 39。 39。 39。 r 39。 W e l l c o m 39。 Co u rs e 39。 S Q L c o u rs e 39。 S Q L Co u rs e 39。 常用的字符型函數(shù)如表 26所示 。 結(jié)果為: ROUND(ABS(SIN(230*)),1) .8 說明:本步驟進行四舍五入 , 保留小數(shù)點后 1位 。 SELECT abs(sin(230*)) FROM dual。 步驟 1:執(zhí)行查詢 。 SELECT cos() FROM dual。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 步驟 7:使用求余數(shù)函數(shù) mod。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 步驟 6:使用截斷函數(shù) trunc。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 步驟 5:使用四舍五入函數(shù) round。 執(zhí)行結(jié)果: CEIL() 3 說明:該函數(shù)求得大于等于 , 結(jié)果為 3。 SELECT sqrt(2) FROM dual。 步驟 1:使用求絕對值函數(shù) abs。 執(zhí)行結(jié)果為: ENAME MGR KING 注意:以下用法是錯誤的 。 如果不填寫 , 或設(shè)置為空則我們說該字段的內(nèi)容為 NULL。 執(zhí)行結(jié)果從略 , 請自行執(zhí)行并察看結(jié)果 。 執(zhí)行結(jié)果為: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 1712月 80 800 20 7788 SCOTT ANALYST 7566 194月 87 3000 20 說明: SMITH和 SCOTT名字均以 S開頭,名字后邊的字符和長度任意。 _ :代表一個任意字符 。 以上用法同樣適用于數(shù)值型集合 , 請自行執(zhí)行并察看結(jié)果 。MANAGER39。SALESMAN39。 請自行執(zhí)行并察看結(jié)果 。 輸入并執(zhí)行查詢: SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2022。 fro m d u a l w h e re e x i s t s (s e l e c t * fro m e m p w h e re e n a m e = 39。 ) [N O T ] L IK E 用于進行模式匹配 S e l e c t * fro m e m p W h e re e n a m e l i k e 39。 , 39。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 練習(xí) 2】 請說明在如上練習(xí)中如果省略括號 , 該語句所代表的含義和查詢的結(jié)果 。 【 訓(xùn)練 4】 顯示部門 10和部門 20中工資小于 1500的雇員 。 輸入并執(zhí)行查詢: SELECT * FROM emp WHERE NOT deptno=10。 OR 39。 OR job=39。MANAGER39。 執(zhí)行結(jié)果從略 。 輸入并執(zhí)行查詢: SELECT * FROM emp WHERE job=39。 注意:條件 sal1000 AND sal2022不能寫成 sal1000 AND 2022。 下面是使用邏輯與運算的練習(xí) 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 表 23 邏輯運算符 運算符 說 明 實 例 AND 邏輯與,表示兩個條件必須同時滿足 S e l e c t * fro m e m p w h e re s a l 1 0 0 0 a n d s a l 2 0 0 0 OR 邏輯或,表示兩個條件中有一個條件滿足即可 S e l e c t * fro m e m p w h e re d e p t n o = 1 0 o r d e p t n o = 2 0 NOT 邏輯非,返回與某條件相反的結(jié)果 S e l e c t * fro m e m p w h e re n o t j o b = 39。 執(zhí)行結(jié)果為: ENAME HIREDATE 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 SCOTT 194月 87 ADAMS 235月 87 MILLER 231月 82 說明:檢查 hiredate字段的內(nèi)容 , 都在 82年以后 。 缺省中文日期格式為 DDMM月 YY, 如 2022年 1月 10日應(yīng)該表示為 “ 101月 03”。 注意:在本練習(xí)中 , 如果 SALESMAN寫成小寫或大小寫混合 , 將不會有查詢結(jié)果輸出 。SALESMAN39。 條件表達式中可以包含比較運算 ,表達式的值為真的記錄將被顯示 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 執(zhí)行結(jié)果為: EMPNO ENAME TOTAL 7876 ADAMS 7369 SMITH 7900 JAMES 7654 MARTIN 說明:求得雇員工作月份的函數(shù) Months_between將在后面介紹。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 結(jié)果如下: ENAME DEPTNO HIREDATE CLARK 10 096月 81 KING 10 1711月 81 MILLER 10 231月 82 SMITH 20 1712月 80 JONES 20 024月 81 FORD 20 0312月 81 SCOTT 20 194月 87 說明:該排序是先按部門升序排序 , 部門相同的情況下 , 再按雇傭時間升序排序 。 結(jié)果如下: ENAME HIREDATE ADAMS 235月 87 SCOTT 194月 87 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 MILLER 231月 82 JAMES 0312月 81 FORD 0312月 81 注意: DESC表示降序排序,不能省略。 輸入并執(zhí)行查詢: SELECT ename, sal FROM emp ORDER BY sal。 排序有升序和降序之分 , ASC表示升序排序 , DESC表示降序排序 。 【 練習(xí) 5】 顯示 EMP表中不同的部門編號。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 訓(xùn)練 8】 使用 DISTINCT消除重復(fù)行顯示 。 IS 39。 字符和日期的常量需要用單引號引起 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 訓(xùn)練 6】 在查詢中使用連接運算 。 5. 連接運算符 在前面 , 我們使用到了包含數(shù)值運算的計算列 , 顯示結(jié)果也是數(shù)值型的 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 訓(xùn)練 5】 在列別名上使用雙引號 。 在列名和別名之間要用 AS分隔 , 如 ename和它的別名 “ 名稱 ”之間用 AS隔開 。 特別是對于計算列 , 可以為它起一個簡單的列別名以代替計算表達式在表頭的顯示 。 輸入并執(zhí)行查詢 : SELECT ename,sal,sal*(1+20/100) FROM emp。 * *:乘法運算符 。 表達式中可以包含列名 、 算術(shù)運算符和括號 。 【 訓(xùn)練 2】 顯示 EMP表的行號 。 對于字符型數(shù)據(jù) , 左對齊顯示 , 如 dname列 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 顯示結(jié)果如下: DEPTNO DNAME 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 說明:結(jié)果只包含 2列 deptno和 dname。 SELECT * FROM emp。 在表名前面要添加模式的名字 , 在表的模式名和表名之間用 “ .”分隔 。 輸入并執(zhí)行查詢: SELECT * FROM emp WHERE deptno=10。 語句查詢的結(jié)果往往是表的一部分行和列 。 SELECT為查詢語句的關(guān)鍵字 , 后跟要查詢的字段名列表 , 字段名列表用來指定檢索特定的字段 , 該關(guān)鍵字不能省略 。 * 從句一般寫在另一行的開始處 。 * 語句可以寫在一行或多行 。主句表示該語句的主要功能 , 從句表示一些條件或限定 , 有些從句是可以省略的 。 按照 SQL語言的不同功用 , 可以進一步對 SQL語言進行劃分 。 它由關(guān)鍵字 、 表名 、 字段名 , 表達式等部分構(gòu)成 。 * SQL語言在書寫上類似于英文 , 簡潔清晰 , 易于理解 。 * SQL語言的主要關(guān)鍵字有: ALTER、 DROP、 REVOKE、AUDIT、 GRANT、 ROLLBACK、 COMMIT、 INSERT、 SELECT、COMMENT 、 LOCK 、 UPDATE 、 CREATE 、 NOAUDIT 、VALIDATE、 DELETE、 RENAME等 。 其語句一般由主句和若干個從句組成 , 主句和從句都由關(guān)鍵字引導(dǎo) 。 * 語句的大小寫不敏感 (查詢的內(nèi)容除外 )。 * 為了提高可讀性 , 可以使用縮進 。 SELECT 字段名列表 FROM 表名 WHERE 條件 。 WHERE條件限定檢索特定的記錄 , 滿足 “ 條件 ” 的記錄被顯示出來 , 不滿足條件的被過濾掉 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 訓(xùn)練 1】 查詢部門 10的雇員 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 基本查詢和排序 查詢的基本用法 在 Oracle數(shù)據(jù)庫中 , 對象是屬于模式的 , 每個賬戶對應(yīng)一個模式 , 模式的名稱就是賬戶名稱 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 但如果登錄用戶訪問屬于用戶模式本身的表 , 那么可以省略表名前面的模式名稱 。 輸入并執(zhí)行查詢: SELECT deptno,dname FROM dept。 對于日期和數(shù)值型數(shù)據(jù) , 右對齊顯示 , 如 deptno列 。 我們在查詢中也可以顯示這個列 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 3. 顯示計算列 在查詢語句中可以有算術(shù)表達式 , 它將形成一個新列 ,用于顯示計算的結(jié)果 , 通常稱為計算列 。 * :減法運算符 。 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 【 訓(xùn)練 3】 顯示雇員工資上浮 20%的結(jié)果 。 4. 使用別名 我們可以為表的列起一個別名 , 它的好處是 , 可以改變表頭的顯示 。 顯示結(jié)果為: 名稱 工資 SMITH 800 ALLEN 1600 中國電信廣東公司 綜合部 廣東省電信規(guī)劃設(shè)計院 說明:表頭顯示的是列別名 , 轉(zhuǎn)換為漢字顯示 。 別名如果含有空格或特殊字符或大小寫敏感,需要使用雙引號將它引起來。 【 練習(xí) 3】 顯示 DEPT表的內(nèi)容 , 使用別名將表頭轉(zhuǎn)換成中