Oracle資料庫,簡單SQL練習與答案

来源:https://www.cnblogs.com/Zanpo/archive/2018/08/11/9460255.html
-Advertisement-
Play Games

1.數據 --創建職員表create table tbEmp( eID number primary key, --職員編號 eName varchar2(20) not null, --職員姓名 eSex varchar2(2) not null --職員性別 check(esex in ('男' ...


1.數據


--創建職員表
create table tbEmp
(
eID number primary key, --職員編號
eName varchar2(20) not null, --職員姓名
eSex varchar2(2) not null --職員性別
check(esex in ('男','女')),
eAge number not null check(eage>=18), --職員年齡
eAddr varchar2(50) not null, --職員地址
eTel varchar2(30) not null, --職員電話
eEmail varchar2(30) null, --職員郵箱
eJoinTime date not null --入職時間
);
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(1,'趙龍','男',25,'湖南省長沙市伍家嶺江南苑9棟203號','0731-4230123','[email protected]','5-10月-2005');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(2,'李雲','女',23,'湖南省長沙市東風路東風新村21棟502號','0731-4145268','[email protected]','3-7月-2003');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(3,'孫一成','男',24,'湖南省株洲市601廠宿舍15棟308號','0732-8342567','[email protected]','2-11月-2002');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(4,'林笑','男',27,'湖南省郴洲市人民醫院20棟301號','0735-2245214','[email protected]','5-1月-2006');
insert into tbemp
(eID,ename,esex,eage,eaddr,etel,eemail,ejointime)
values
(5,'衛晴','女',23,'湖南省長沙市望月湖12棟403號','0731-8325124','[email protected]','5-3月-2007');

commit;

 

2.習題

--1. 查詢所有職員的所有信息
select * from tbemp;

--2. 查詢所有職員的姓名,電話,地址
select ename,etel,eaddr from tbemp;

--3. 查詢所有女職員的詳細信息
select * from tbemp where esex = '女'

--4. 查詢年齡在24到26歲之間的職員的姓名,性別
select ename,esex from tbemp where eage between 24 and 26

--5. 查詢家住長沙的女職員的姓名,電話,地址
select ename,etel,eaddr from tbemp where esex = '女' and eaddr like '%長沙市%'

--6. 查詢李雲,孫一成,林笑的電話,地址
select ename,etel,eaddr from tbemp where ename in ('李雲','孫一成','林笑');

--7. 查詢郴洲和株洲的職員的姓名,性別,年齡
select ename,esex,eage from tbemp where eaddr like '%郴洲%' or eaddr like '%株洲%';

--8. 查詢家住長沙,年齡在25到28歲之間的男職員的姓名
select ename from tbemp where eaddr like '%長沙%' and (eage between 25 and 28) and esex = '男';

--9. 查詢郵件地址為空的職員
select * from tbemp where eemail is null;

--10.查詢入職時間超過兩年的員工 ----這裡涉及日期的運算,當前時間-入職時間---------------------------
select * from tbemp where months_between(sysdate,ejointime)/12 > 2

--11.查出1月份入職的員工
select * from tbemp where Extract(month from ejointime) = 1;

--12.將所有email為163.net的郵箱改為126.com ----修改查詢出來的結果,字元串替換函數-------------------
select * from tbemp where eemail like '%163.net%'

--13.找出年齡最小的兩位長沙員工------------分頁查詢--------------------
--1.分頁寫法 三層嵌套,上兩層是分頁處理,最裡面一層是解決rownum分頁和order by在一起導致排序錯誤
select a1.* from
    (select a2.*,rownum as rn from
        (select * from tbemp order by eage) a2
    where rownum <= 2) a1
where rn >= 1;

--14.查找員工信息,要求結果集表達方式為
--欄位名:個人信息
--內容描述:'員工1,趙龍,今年25歲,家住湖南省長沙市伍家嶺江南苑9棟203號'
select '員工'||eid||','||ename||',今年'||eage||'歲,家住'||eaddr as 員工介紹 from tbemp;

--15.求所有員工的年齡總和
select sum(eage) as 年齡總和 from tbemp;

--16.分別求男,女員工年齡總和
select esex as 性別,sum(eage) as 年齡總和 from tbemp group by esex;

 

3.總結

1.基本SQL格式

 

2.日期的運算

  a.日期運算:
      後面時間-前面時間
      日期相減預設結果是相差天數

      months_between(後面時間-前面時間)
      months_between預設返回結果是相差月數

  b.取日期的值
      Extract函數
      Extract(year from sysdate)

 

3.分頁查詢

  rownum:oracle特有關鍵字,用於分頁

  a.嵌套實現分頁查詢

    分頁查詢採用兩條查詢嵌套,內部查詢用來指定上界,且結果集返回rownum,外部查詢指定下界

  b.排序和分頁聯合使用的問題

    rownum分頁與order by在一起使用分頁排序,會導致排序錯誤,解決方法:多嵌套一層select

   

             select a1.* from
      (select a2.*,rownum as rn from
        (select * from tbemp order by eage) a2
      where rownum <= 2) a1  
       where rn >= 1;

 


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

-Advertisement-
Play Games
更多相關文章
  • 用戶添加修改刪除 1 useradd添加用戶 添加一個新用戶hehe,指定uid為3000,家目錄為/home/haha 這裡 u是uid, g可以指定組id,不定值系統自動分配, G可以指定附加組,如果不想讓用戶登錄系統可以指定參數 ,例如apache,nginx等等 2 groupadd添加新組 ...
  • 1. 下載 2. 解壓縮文件 3. 創建安裝文件的路徑 4. 編譯安裝 進入到解壓的目錄中 ,然後是 ,`make install` 5. 此時若報錯 看這個地方 ,花了一下午的時間找到了這個解決方案,只有這個是對我有效的,然後,輸入python3就進入到了py3的環境中了,輸入pip3也可以了 ...
  • 1.圖例 >原圖出處 2. 結構圖 根目錄說明 3.linux相關命令 cd(change directory切換目錄): cd /. 進入根目錄 cd .. 返回上一次目錄 cd - 返回上一次的工作目錄 cd ~ 切換到當前登錄的住文件夾下 cd ~/ for_bar 切換到名字叫name的主文 ...
  • 一、安裝環境 1、操作系統版本:CentOS 7.5 2、MySQL版本:5.7.22(社區版) 3、MySQL安裝包:mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 二、安裝步驟 1、檢查系統中是否安裝了其他版本的MySQL(root用戶) 首先檢查系統中是否 ...
  • 占座 ...
  • 1.安裝和配置Docker 伺服器版本阿裡雲CentOS7.4 docker版本18.06.0-ce docker安裝步驟https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1 下載mysql鏡像 啟動兩 ...
  • 1 創建topic: kafka-topics.sh --create --zookeeper 3.3.3.3:2181 --replication-factor 1 --partitions 3 --topic test_one replication-factor 副本的個數 (因為創建的副本都 ...
  • 差異備份 (differential backup)定義 一種數據備份,基於完整資料庫或部分資料庫或一組數據文件或文件組(差異基準)的最新完整備份,並且僅包含自確定差異基準以來發生更改的數據。 使用SSMS資料庫管理工具進行資料庫差異備份 1、選擇資料庫-》右鍵點擊-》選擇任務-》選擇備份。 2、在 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...