當前位置:首頁 » 參考文獻 » 資料庫例題

資料庫例題

發布時間: 2021-03-12 06:24:44

1. 資料庫的題目

、等級查詢

題目:員工信息表中有員工ID、姓名、上級員工ID欄位,現要求用一條語句,查詢出全部員工的ID、姓名及級別——最高為1級,其下依次為2、3、4等,如下圖所示:

對於排序,我原來只知道利用ROWNUM偽列:

SELECT E.*,
ROWNUM
FROM (SELECT *
FROM EMPLOYEES
ORDER BY SALARY DESC) E

然後再用這個結果集和其他表關聯,針對本題,這種方法可以查出每個員工在整個公司以及本部門工資的排名,但在我看來有如下兩個問題:

1、一張事實表關聯兩次,效率低下;

2、無法查詢出每個員工在整個公司以及本部門工資的排名,除非用循環,但又不是一條語句了。

資料庫表中對數值欄位進行排名,應使用RANK函數,該函數的作用就是計算一個值在一組值中的排名,返回值為數值型,形式為RANK() OVER (PARTITION BY … ORDER BY …),其中:

1、PARTITION BY關鍵字為用於排序的分組,也就是說如果查詢全部數據中的排名,則該關鍵字可省略;

2、ORDER BY關鍵字即為按哪個欄位進行排序,空或ASC為升序,DESC為降序,與標准SQL沒區別;

3、如果兩行數據用於排序的欄位值完全相同,則二者的RANK返回值(序號)也相同,序號不連續(英文是Identical salary values receive the same rank and cause nonconsecutive ranks),還有類似的DENSE_RANK()函數,相同值的序號相同,序號連續;ROW_NUMBER()函數,每個值的序號唯一,相同值有可能按照ROWNUM的次序編號(這個不確定,官方文檔沒說,我推測的-_-),這三個函數的使用方法相同。

2. 資料庫試題

二、襲選擇題
1、B
2、B
3、D
4、C
5、D
6、C
7、D
8、C
9、A
10、D
三、判斷題
1、對
2、對
3、錯,數據文件只能有一個,日誌可以有多個
4、錯
5、錯,float(24)最多7位
6、對
7、對
8、對
9、錯
10、對
11、對
12、對
13、對
14、對
15、錯
做完了,也檢查過了。

3. 資料庫習題。

環境:sqlserver,參見下面代碼,有問題再追問。

createtablememeber
(memb_novarchar(10),namevarchar(10),dobvarchar(10));
createtablebooks
(isbnvarchar(10),authorsvarchar(10),publishervarchar(10));
createtableborrowed
(memb_novarchar(10),isbnvarchar(10),datevarchar(10));

insertintomemeber
select'001','wangp','a'unionall
select'002','wangx','b'unionall
select'003','heihei','c'unionall
select'004','wjq','d'unionall
select'005','zhh','e'unionall
select'006','linlin','f'unionall
select'007','chengou','g';

insertintobooks
select'00A','Tom','P1'unionall
select'00B','Jack','P1'unionall
select'00C','Jerry','P1'unionall
select'00D','John','P1'unionall
select'00E','Alex','P1'unionall
select'00F','Alex','P2'unionall
select'00G','John','P2'unionall
select'00H','John','P3'unionall
select'00I','John','P3'unionall
select'00J','Alex','P3'UNIONALL
SELECT'00K','Alex','P3'UNIONALL
SELECT'00L','John','P3';

insertintoborrowed
select'001','00A','TIME1'unionall
select'001','00B','TIME2'unionall
select'002','00C','TIME3'unionall
select'001','00D','TIME4'unionall
select'003','00B','TIME5'unionall
select'001','00E','TIME6'unionall
select'002','00F','TIME7'unionall
select'002','00A','TIME8'unionall
select'002','00I','TIME9'unionall
select'003','00F','TIME10'unionall
select'003','00I','TIME11'unionall
select'003','00B','TIME12'unionall
select'004','00B','TIME13'unionall
select'005','00H','TIME14'unionall
select'005','00I','TIME15'unionall
select'005','00J','TIME20'UNIONALL
select'005','00K','TIME15'unionall
select'005','00L','TIME20'UNIONALL
select'001','00C','TIME16'unionall
select'001','00A','TIME17'unionall
select'006','00G','TIME18'unionall
select'001','00J','TIME19';

--a.
,borrowedb,booksc
wherea.memb_no=b.memb_no
andb.isbn=c.isbn
andpublisher='P1'

--b.
(
select*frombooksbwherepublisher='P1'
andnotexists(select*fromborrowedc
wherea.memb_no=c.memb_noandb.isbn=c.isbn))

--c.
select*frommemeberwherememb_noin(selectmemb_nofrom(
selectc.memb_no,c.isbnfrombooksb,borrowedc
whereb.publisher='P1'andb.isbn=c.isbn
groupbyc.memb_no,c.isbn)tmpgroupbymemb_no
havingCOUNT(*)>=5)

--d.
select*frommemeberwherememb_noin(selectmemb_nofrom(
selectc.memb_no,c.isbnfrombooksb,borrowedc
whereb.isbn=c.isbngroupbyc.memb_no,c.isbn)tmp
groupbymemb_no
havingCOUNT(*)>=5)

--e.
selectsum(cnt)/(selectCOUNT(*)frommemeber)from(
selectmemb_no,COUNT(*)cntfromborrowedgroupbymemb_no)tmp

4. 資料庫編程練習題

1、select * from 圖書 where 出版單位='高等教育出版社出版' and 單價 >= 20。
2、select * from 圖書 where 出版單位= '清華大學版' order by 單價。
3、select 借書證號, count(*) from 借閱 group by 借書證號。
4、select b.借書證號,b.姓名,b.單位,a.書名 from 圖書 a,讀者 b,圖書 c where a.總編號=c.總編號 and b.借書證號 = c.借書證號。
5、select * from ZGJK where 基本工資 between 300 and 500。
第六第七無能為力了,抱歉

5. 資料庫題目

  1. 人員(科研人員)、機構(科研機構、科研門戶、推廣中心、保障平台)、科研項目(縱向、橫向)、預算(科研經費)、活動(學術活動、科研經費)、決策、評估。

  2. 人員(員工編號pk、姓名、職位編碼)、機構(機構編碼pk、機構類別、)、科研項目(項目編碼pk,名稱,類別,生效決策編碼)、預算(預算編碼、項目編碼、日期、預算額度、審批人)、活動(活動編碼pk、項目編碼、機構編碼、成本數值、時間)、決策(決策編碼、項目、決策人編碼)、評估(評估編碼pk、決策編碼、評估人、評估內容)

  3. 見上

  4. E-R圖就不畫了,太復雜~

---------------------------------------------

最後一句話,決定系統ER設計的是業務流程與擴展期望,而簡單的一句話不可能講清楚需求,而系統設計者的見識(是否了解業務需求)往往是E-R設計好壞(是否更適合)的關鍵。

6. SQL資料庫的例題請教一下大家

看了你的題,首先幾個表需要說明一下Out_Goods和In_Goods在定義表時少了Sh_address列,列的屬性參考Provider表中的Address

問題解答:
問題1、自定義一個函數,計算供貨商編號為PD001所提供產品的平均價格,如果平均價格〉70,則輸出「價格適中」;如果平均價格<=70,則輸出價格較低。
CREATE FUNCTION [dbo].[fn_calc_avg_price]
(
@PID char(10) = 'PD001'-----------貨商編號,此處默認值為PD001
)

RETURNS varchar(50) AS

BEGIN
DECLARE @vchPriceDesc varchar(50)
DECLARE @mnyPriceAvg money

SELECT @mnyPriceAvg = AVG(PPrice)
FROM Proct WHERE PID = @PID

IF (@mnyPriceAvg > 70) SET @vchPriceDesc = '價格適中'
IF (@mnyPriceAvg <= 70) SET @vchPriceDesc = '價格較低'

RETURN @vchPriceDesc
END

問題2、創建一個內聯表值函數,返回一個時間段內的出貨信息,要求包括出貨商品名稱、供貨商名稱、出貨價格、出貨數量、出貨日期。
CREATE FUNCTION [dbo].[fn_get_out_goods_info]
(
@dtBeginTime datetime, --------------------------時間段的起始時間
@dtEndTime datetime --------------------------時間段的終止時間
)

RETURNS @TempTable table
(
out_proct_name varchar(20),
out_provider_name varchar(20),
out_proct_price money,
out_proct_num int,
out_date datetime
)
AS

BEGIN
INSERT INTO @TempTable
SELECT
Proct.PName,
Provider.ProviderName,
Out_Goods.OutPrice,
Out_Goods.OutNum,
Out_Goods.OutDate
FROM
Proct, Provider, Out_Goods
WHERE
Provider.ProviderId = Out_Goods.ProviderId
AND Proct.PId = Out_Goods.PId
AND Out_Goods.OutDate <= @dtEndTime
AND Out_Goods.OutDate >= @dtBeginTime
RETURN
END

問題3、創建一個after觸發器,當Provider 供貨商信息表中的ProviderId發生更改時,同時更改In_Goods進貨信息表和Out_Goods出貨信息表ProviderId欄位的值。
CREATE TRIGGER [trig_update_proID]
ON [dbo].[Provider]
AFTER UPDATE

AS

IF UPDATE(ProviderID)
BEGIN
UPDATE In_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
UPDATE Out_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
END

問題4、定義一個存儲過程,要求使用游標,計算某段時間內售出產品的平均價格。

坦白的說,其實沒必要使用游標,既然用了,那就順便用下WHILE循環好了
CREATE PROCEDURE [dbo].[sp_calc_part_sales_price]
(
@dtBeginTime datetime,
@dtEndTime datetime
)
AS

DECLARE @mnyTotalPrice money
DECLARE @mnyCurPrice money
DECLARE @nCount int SELECT @nCount = 0

DECLARE cursPrice CURSOR LOCAL
FOR SELECT OutPrice FROM Out_Goods WHERE Out_Goods.OutDate <= @dtEndTime AND Out_Goods.OutDate >= @dtBeginTime

OPEN cursPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice

WHILE @@FETCH_STATUS=0
BEGIN
SET @nCount = @nCount + 1
SET @mnyTotalPrice = @mnyTotalPrice + @mnyCurPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice
END

IF @nCount = 0 SELECT 0 AS '平均價格'
IF @nCount > 0 SELECT @mnyTotalPrice/@nCount AS '平均價格'

OK,就這樣吧,如果有不明白或者我寫錯的地方,再聯系,Good Luck!

7. 資料庫練習題(幫我做個答案)

1 disp stru
2 modi stru
3 (兩條)
3
insert blank
4 list all for 專業="網路技術"
太多了

8. SQL資料庫練習題

1. SQL Server 2000是典型的關系型資料庫產品。 ( 1 )
2. 在一台計算機上可以同時運行多個版本的SQL Server。 ( 1 )
3. 在SQL Server中日誌文件是維護資料庫完整性的重要工具。 ( 0 )
4. 在定義數據表時,定義某列為標識列的關鍵字是Identity。 ( 1 )
5. 浮點數據類型的優點是能夠存儲范圍非常大的數字,但容易發生誤差。 ( 0 )
6. 資料庫完整性的目的是為了防止錯誤信息輸入和輸出。 ( 0 )
7. 在Update語句中,一次可以更新多個表。 ( 0)
8. 盡量使用Select * ,可以加快查詢速度。 ( 0 )
9. 在SQL Server 2000中表示注釋可以用類似C語言的/*...*/和//。 ( 0 )
10. 在SQL Server中,RTRIM函數刪除字元串右邊的空白字元。 ( 1 )
11. 一個表只能有一個聚集索引(簇索引)。 ( 1 )
12. SQL查詢語言中,如果沒有指定排序方式,則默認是升序方式。 ( 1 )
13. 在SQL Server 2000中ntext類型的欄位不能進行排序操作。 ( 0 )
14. 在SQL Server 2000中bit類型的欄位不能建立索引。 ( 1 )
15. 在被定義為唯一索引的列上的數據不能有重復的值。 ( 1 )
16. 在被定義為唯一索引的列上的數據不允許空。 ( 0可以的但是只能有一個null值 )
17. 在SQL Server中,每張表都應該建立一個索引,以提高查詢速度。 ( 0 )
18. 視圖在SQL Server中是一張虛擬表。 ( 1 )
19. 當一個視圖由2個以上基本表構成時,不能進行刪除視圖中的數據。 ( 0 )
20. 在SQL Server中,觸發器是一種特殊的存儲過程。 ( 1 )
21. 由於存儲過程是解釋執行,所以每次執行時都要檢查是否有語法錯誤。 ( 0 )
22. 可以在用戶正在使用的資料庫上執行資料庫恢復操作。 ( 0 )
1表示正確

熱點內容
塗鴉論文 發布:2021-03-31 13:04:48 瀏覽:698
手機資料庫應用 發布:2021-03-31 13:04:28 瀏覽:353
版面217 發布:2021-03-31 13:04:18 瀏覽:587
知網不查的資源 發布:2021-03-31 13:03:43 瀏覽:713
基金贖回參考 發布:2021-03-31 13:02:08 瀏覽:489
懸疑故事範文 發布:2021-03-31 13:02:07 瀏覽:87
做簡單的自我介紹範文 發布:2021-03-31 13:01:48 瀏覽:537
戰略地圖參考 發布:2021-03-31 13:01:09 瀏覽:463
收支模板 發布:2021-03-31 13:00:43 瀏覽:17
電氣學術會議 發布:2021-03-31 13:00:32 瀏覽:731