oracle學習筆記(十) 查詢練習(一)

来源:https://www.cnblogs.com/kexing/archive/2019/05/14/10864698.html
-Advertisement-
Play Games

查詢練習一 ...


查詢練習一

表創建
create table employee as select * from soctt.emp ;
--記得授權
sysdba用戶登錄
grant select on scott.emp to $username$

--表結構
create table empployee_demo(
   empno     number(4) not null primary key,  --員工編號,主鍵
   ename     varchar2(10) not null unique,    --員工名,唯一鍵
   job       varchar2(9),                     --職位、工作
   mgr       number(4),                       --經理編號
   hiredate  date default sysdate,            --入職日期,預設約束
   sal       number(7,2) check(sal>=500 and sal<=10000),   --工資
   comm      number(7,2),                     --資金
   deptno    number(2)                        --部門編號
)

--16. 找出各月倒數第三天受雇的所有員工
select * from employee where last_day(hiredate)-2=hiredate;

--17. 找出早於25年前受雇佣的員工
select * from employee where months_between(hiredate,sysdate)/12>25;
select * from employee where year(sysdate)-year(hiredate)>25;

--18. 以首字母大寫其它字母小寫的方式顯示所有的員工的姓名
select upper(substr(ename,0,1))||lower(substr(ename,1)) from employee;
--下麵這兩種寫法都是可以獲得同樣的結果,不過不太清楚加nls的區別
select nls_initcap(ename) from employee;
select initcap(ename) from employee;

--以首字母小寫其它字母大寫的方式顯示所有的員工的姓名。
select lower(substr(ename,1,1))||upper(substr(ename,2)) from employee;

--19. 顯示正好為5字元的員工的姓名
select ename from employee where length(ename)=5;

--20. 顯示不帶有‘R’的與員工的姓名
select ename from employee where ename not like '%R%';

--21. 顯示所有員工姓名的前三個字元。
select substr(ename,1,3) from employee --註意,與java中截取字元串的有所區別

--22. 顯示所有員工的姓名,用 A 替換 a 
select replace(ename,'a','A') from employee; --把a替換成A

--23. 顯示 滿25年 服務年限的員工的姓名 和受雇日期
select ename,hiretate from employee where months_between(hiredate,sysdate)/12 >=25

--24. 顯示員工的詳細資料,按姓名排序,姓名相同按工資降序排序。
select * from employee order by ename,sal desc; --asc升序 desc降序 預設升序

--25. 顯示與員工的姓名和受雇日期,根據其服務年限,將最老的員工排在最前面。
select ename,hiredate,months_between(hiredate,sysdate) 
from employee 
order by months_between(hiredate,sysdate)

select ename,hiredate,months_between(sysdate,hiredate) 
from employee 
order by months_between(sysdate,hiredate) desc

--26. 顯示所有員工的姓名,工作和薪金,按工作的降序排序,若工作相同按薪金排序
select ename,job,sal from employee 
order by job,sal;

/*
27. 顯示所有員工的姓名,加入公司的年份和月份,按受雇日期所在的月排序,
    若月份相同,則將最早的年份的員工排在最前面
*/
select ename,JOB,TO_CHAR(hiredate,'yyyy') year,
    TO_CHAR(hiredate,'mm') month
  from employee 
    order by month,year;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • UCOSII 使用空閑任務的計數值(OSIdleCtr)來實現CPU使用率的統計,首先統計一個固定時間內的計數值保存下來為 (MAX),然後再開啟一個固定的時間段,當時間到達時得到另外一個(OSIdleCtr)的計數值保存為(ctr)。在這一段時間中,當運行用戶任務時空閑任務因為優先順序低無法執行那麼 ...
  • Insus.NET把它們寫成自定義函數,再程式中直接套用即可。 前一天: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Create date: 2019-05-15 -- Update dat ...
  • 以前寫過一個方法,先去參考《T-SQL判斷是否為今天》https://www.cnblogs.com/insus/archive/2012/03/22/2411209.html 今天使用一個更加簡單的方法來實現: 實例演示: ...
  • 以前寫過2篇,關於日期比較的,需求不同,每一篇均有參考價值。 《MS SQL日期比較函數》https://www.cnblogs.com/insus/archive/2011/06/24/2089005.html 《MS SQL兩個日期比較,獲取最大或最小的日期》https://www.cnblog ...
  • 函數一般是在數據上執行的,它給數據的轉換和處理提供了方便。只是將取出的數據進行處理,不會改變資料庫中的值。函數根據處理的數據分為單行函數和聚合函數(組函數),組函數又被稱作聚合函數,用於對多行數據進行操作,並返回一個單一的結果,組函數僅可用於選擇列表或查詢的having子句;單行函數對單個數值進行操 ...
  • 測試說明: MERGE是oracle提供的一種特殊的sql語法,非常適用於數據同步場景,即: (把A表數據插到B表,如果B表存在相同主鍵的記錄則使用A表數據對B表進行更新) 數據同步的常規做法是先嘗試插入,插入失敗再進行更新,MERGE比這種常規做法效率高很多。 (特別是A與B表基本一致,同步時主鍵 ...
  • 從一字元串中,過濾所有非數字的字元,留下數字。迴圈所有字元,使用正則[0-9]來匹配。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Create date: 2019-05-14 -- Upd ...
  • 判斷是否為閏年的方法很多,如: 《指定日期,判斷其所屬年份是否為閏年》 https://www.cnblogs.com/insus/p/10841868.html《C#或VB.NET判斷指定的年份是否為閏年》https://www.cnblogs.com/insus/archive/2012/06/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...