當前位置:首頁 » 數據倉庫 » oracle資料庫查詢練習題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫查詢練習題

發布時間: 2022-11-21 09:45:32

❶ 求ORACLE資料庫的練習題

使用scott/tiger用戶下的emp表完成下列練習,表的結構說明如下

emp員工表 欄位內容如下:

empno 員工號
ename 員工姓名
job 工作
mgr 上級編號
hiredate 受雇日期
sal 薪金
comm 傭金
deptno 部門編號

1.選擇部門30中的所有員工.

2.列出所有辦事員(CLERK)的姓名,編號和部門編號.

3.找出傭金高於薪金的員工.

4.找出傭金高於薪金的60%的員工.

5.找出部門10中所有經理(MANAGER)和部門20中所有辦事員(CLERK)的詳細資料.

6.找出部門10中所有經理(MANAGER),部門20中所有辦事員(CLERK),既不是經理又不是辦事員但其薪金大於或等於2000的所有員工的詳細資料.

7.找出收取傭金的員工的不同工作.

8.找出不收取傭金或收取的傭金低於100的員工.

9.找出各月倒數第3天受雇的所有員工.

10.找出早於12年前受雇的員工.

11.以首字母大寫的方式顯示所有員工的姓名.

12.顯示正好為5個字元的員工的姓名.

13.顯示不帶有"R"的員工的姓名.

14.顯示所有員工姓名的前三個字元.

15.顯示所有員工的姓名,用a替換所有"A"

16.顯示滿10年服務年限的員工的姓名和受雇日期.

17.顯示員工的詳細資料,按姓名排序.

18.顯示員工的姓名和受雇日期,根據其服務年限,將最老的員工排在最前面.

19.顯示所有員工的姓名、工作和薪金,按工作的降序排序,若工作相同則按薪金排序.

20.顯示所有員工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同則將最早年份的員工排在最前面.

21.顯示在一個月為30天的情況所有員工的日薪金,忽略余數.

22.找出在(任何年份的)2月受聘的所有員工。

23.對於每個員工,顯示其加入公司的天數.

24.顯示姓名欄位的任何位置包含"A"的所有員工的姓名.

25.以年月日的方式顯示所有員工的服務年限. (大概)

❷ Oracle測試題

Oracle的體系結構是一個需要掌握的比較重要的概念,這個結構體系也比較復雜,我稍為總結了一下概念。

Oracle資料庫主要的物理存儲結構包括構成資料庫的各種物理文件,包括數據文件、控制項文件、重演日誌文件、歸檔重演日誌文件、參數文件、警告、跟蹤日誌文件和備份文件等。

數據文件:
每個Oracle資料庫都有一個或者多個物理數據文件(datafile),數據文件包含了所有的資料庫數據,資料庫的邏輯結構的數據(如表、索引等)都被物理地存儲在分給資料庫的數據文件中。

數據文件包含下列類型的數據:
表數據
索引數據
數據字典定義
回滾事務所需的信息
存儲過程、函數和數據包的代碼
用來排序的臨時數據

數據文件的特點:
一個數據文件只能與一個資料庫相關聯。
可以對數據文件設置一些特性,在資料庫空間用完的情況下可以自動擴展。
一個或多個數據文件構成了一個資料庫存儲的邏輯單元——表空間(table space)。
數據會匯集在內存里,由資料庫的書寫進程(DBWR)決定。(DBWO?)

select status,bytes,name from v$datafile;

控制文件:
資料庫控制文件(control file)是一個很小的二進制文件,它維護著資料庫的全局物理結構,用以支持資料庫成功地啟動和運行。創建資料庫時,同時就提供了與之對應的控制文件。
每一個控制文件只能與一個Oracle資料庫相關聯。
控制文件包含了資料庫實例在啟動和正常操作時,訪問資料庫所需的關於資料庫的信息。

控制文件包含以下的信息:
資料庫名稱
資料庫創建的時間戳
相關的數據文件、重演日誌文件的名稱和位置
表空間信息
數據文件離線范圍
日誌歷史
歸檔日誌信息
備份組和備份塊信息
備份數據文件和重演日誌信息
數據文件拷貝信息
當前日誌序列數
檢查點(checkpoint)信息

保護控制文件,必須注意的幾個方面:
每一個資料庫都要使用多路復制的控制文件
把每一個控制文件的復件保存在不同的物理磁碟上
使用操作系統的冗餘鏡像機制
監控備份

select name from v$controlfile;

重演日誌文件:
每一個Oracle資料庫都有一個由兩個或多個重演日誌文件(redo log file)構成的文件組,這組重演日誌文件合稱為資料庫的重演日誌。
一個重演日誌文件是由重做條目(redo entry,也叫重做記錄)組成的。
重演日誌的主要功能是記錄下所有數據的改變。
重演日誌文件中的信息可以用在資料庫從系統失敗或者介質失敗的恢復之中 。

select * from v$logfile;

歸檔重演日誌文件:
歸檔重演日誌文件(archive log file)就是對寫滿的重演日誌文件復制若保存生成的文件。可以通過設置資料庫在歸檔模式(ARCHIVELOG mode)下來自動地保存日誌文件。歸檔進程(ARCO)在後台負責把寫滿的重演日誌文件復制到歸檔日誌目標中。歸檔日誌文件在資料庫恢復時起決定性作用。

Select * From v$archived_log

參數文件:
參數文件(parameter file)包含了一組關於資料庫和實例的配置參數。Oracle推薦用戶使用一個伺服器參數文件(SPFILE)作為維護初始化參數的動態手段。一個伺服器參數文件允許用戶在一個伺服器端的磁碟文件里持久地保存和管理初始化參數。

警告、跟蹤日誌文件:
每一個伺服器和後台進程都可以寫入一個相關的跟蹤文件(trace file)。當一個進程發現了一個內部錯誤的時候,它把關於錯誤的信息轉儲到它的跟蹤文件里。寫入到跟蹤文件的一部分信息是給資料庫管理員使用的,而其他信息是給Oracle支持服務的。跟蹤文件信息還可以用於調整應用程序和實例。
警告文件(alert file)是一種特殊的跟蹤文件,一個資料庫的警告文件就是包括按時間排序的消息和錯誤的記錄。

備份文件:
用戶管理的備份和恢復實際上就是要求用戶在試圖恢復備份的時候先還原備份文件。伺服器管理的備份和恢復管理了備份過程,例如,調度備份及恢復過程就是在需要恢復的時候施加正確的備份文件。

❸ 求解答:oracle資料庫的題目.

a. 找出最貴的商品(item)的名稱和價格
SELECT
name, price
FROM
item
WHERE
price = ( SELECT MAX(it.price) FROM item it);

b. 找出每個月每個商品的銷售總金額;
SELECT
TO_CHAR(transaction.date, 'MM') AS 月,
item.name AS 商品名,
SUM( itemSale.quantity * item.price ) AS 銷售額
FROM
transaction, itemSale, item
WHERE
transaction.transid = itemSale.transid
AND itemSale.itemid = item.itemid
GROUP BY
TO_CHAR(transaction.date, 'MM') ,
item.name

c. 找出從來也沒有銷售過的商品;
SELECT
*
FROM
item
WHERE
itemid NOT IN ( SELECT DISTINCT itemid FROM itemSale)
-- 上面這個估計執行效率不高...

d.找出從來也沒有買過「酒」的所有客戶。

SELECT
*
FROM
customer
WHERE
customer.custid NOT IN
( SELECT transaction.custid
FROM
transaction, itemSale, item
WHERE
transaction.transid = itemSale.transid
AND itemSale.itemid = item.itemid
AND item.name LIKE '%酒%'
)
-- 上面這個估計執行效率也是不高...

❹ 關於Oracle資料庫的幾個習題求答案。謝謝

2--c
3--b
7--
9--c
6--1~8
7--tnsping或者netca
9--dba_indexes (user_indexes)

❺ 急求 解 一道oracle 資料庫 數據查詢入門基礎題 數據操作方面

DECLARE
v_id INT;
v_last_name VARCHAR2(20);
v_first_name VARCHAR2(20);
v_userid CHAR(8);
v_salary NUMBER(6);
BEGIN
v_id:=&輸入ID;
v_last_name:='&請輸入last_name';
v_first_name:='&請輸入first_name';
v_salary:='&請輸入salary';
v_userid:=SUBSTR(v_first_name,1,1)||SUBSTR(v_last_name,1,7);
INSERT INTO my_employee VALUES(v_id,v_last_name,v_first_name,v_userid,v_salary);
dbms_output.put_line(v_id);
dbms_output.put_line(v_last_name);
dbms_output.put_line(v_first_name);
dbms_output.put_line(v_userid);
dbms_output.put_line(v_salary);
commit;
END;

❻ oracle資料庫關於查詢的一些習題.

1、select * from t_download where down_date>=to_date('2012-03-07 15','yyyy-mm-dd HH24') and rownum<=100 order by down_date desc;
2、select price_id,app_date from t_appinfo where app_id in (select app_id from t_download where trunc(down_date)=trunc(sysdate-1);
3、select log_id from t_download group by log_id having count(log_id)>50;
4、select * from t_appinfo where app_name like '%中%';
5、select substr(app_id,5,1),substr(app_id,8,1) from t_appinfo;

❼ oracle練習題 列出至少有兩個雇員的部門名稱

既然求各部門總雇員數,應該要分組。你的語句沒有分組選項。
各部門的雇員數:
select deptno,count(deptno) from emp group by deptno;
部門雇員大於1:
select deptno,count(deptno) from emp having count(*)>1 group by deptno;

❽ oracle資料庫的上機題求助:

補齊函數lpad()或者rpad(),一個是左邊補齊lpad(),一個是後邊補齊rpad(),舉例:
lpad('aa',5,『0』)這個意思是在左邊用0補齊5位,結果是000aa。
截取函數:substr(『1234567』,1,5)意思是把1234567這個字元串從1個位置開始截取,截取到第五個

第一題:select substr(lpad('1234567',5,'0'),1,5) from al; 結果12345
select substr(lpad('123',5,'0'),1,5) from al; 結果00123
第二題:select case when length('1234567')>5 then '1234567' else lpad('1234567',5,'0') end from al; 結果1234567
select case when length('1234')>5 then '1234' else lpad('1234,5,'0') end from al; 結果01234

實驗通過了,望採納

❾ oracle練習題…………求解

1、select * from 員工表 where 上級 is null;
2、select * from 員工表 where bmid in (HY001,HY003,HY004)
3、select max(工資),姓名,崗位 from 員工表;
後面的看你了!