數據庫基礎測試題
姓名: 工號:
一、單項選擇題,把合適的選項編號填寫在括號內。(每小題1分,共10分)
1.在數據庫技術中,實體-聯繫模型是一種( A )
A.概念數據模型 B.結構數據模型 C.物理數據模型 D.邏輯數據模型
2.關係數據模型通常由3部分組成,它們是( B )
A.數據結構,數據通信,關係操作
B.數據結構,數據操作,數據完整性約束
C.數據通信,數據操作,數據完整性約束
D.數據結構,數據通信,數據完整性約束
3.SQL語言中,刪除一個表的命令是( B )
A. DELETE B. DROP C. CLEAR D. REMOVE
4.在SQL的查詢語句中,order by選項實現對結果表的(D)功能
A. 分組統計 B. 求和 C. 查找 D. 排序
5. SQL Server觸發器主要針對下列語句創建( B )
A. SELECT,INSERT,DELETE
B. INSERT,UPDATE,DELETE
C. SELECT,UPDATE,INSERT
D. INSERT,UPDATE,CREATE
6. 下列哪個不是sql 數據庫文件的後綴。 C
A..mdf B..ldf C..tif D..ndf
7. 在SQL中,建立表用的命令是 ( A )。
A.CREATE TABLE B.CREATE RULE
C.CREATE VIEW D.CREATE INDEX
8. SQL語言中,條件“年齡BETWEEN 40 AND 50”表示年齡在40至50之間,且( A )。
A.包括40歲和50歲 B.不包括40歲和50歲
C.包括40歲但不包括50歲 D.包括50歲但不包括40歲
9. 模式查找like '_a%',下面哪個結果是可能的B
A.aili B. bai
C.bba D.cca
10. 若某表滿足1NF,且其所有屬性合起來組成主健,則一定還滿足範式 ( C )
A、只有2NF B、只有3NF
C、2NF和3NF D、沒有
二、填空題,把合適內容填在橫線上。(每空1分,共19分)
1.DBMS是指_______數據庫管理系統_________。
2.視圖是由一個或多個____表__或視圖導出的__虛表____或查詢表。
3.觸發器主要有2種類型,即_____DML___和__DDL_______。
4.數據完整性的類型有____引用____完整性、____實體___完整性、__ 域_____完整性和用戶自定義完整性。。
5.要用SQL Server驗證方式訪問SQL Server數據庫服務器,用戶必須提供正確的_____用戶名____和____密碼______。
6.在基本表的某個列上建立索引,可以使基本表中的所有記錄按該列值的__升序__ ___或__降序_____排列。
7.CHECK約束被稱爲___用戶自定義_____約束,UNIQUE約束被稱爲__唯一________約束。
8.______存儲過程_是已經存儲在SQL Server服務器中的一組預編譯過的Transact-SQL語句。
9.事務的ACID屬性是指____原子性____性、__一致______性、_隔離______性和__持久_____性。
三、根據下面所給的商品庫、教學庫,寫出下列每條SQL查詢語句的執行結果,或者寫出下列每條語句或程序段的功能。(每題3分,15分)
商品庫的數據庫兩張表,包括:
商品表1(商品代號char(8),分類名char(8),單價float,數量int)
商品表2(商品代號char(8),產地char(8),品牌char(8)
教學的數據庫三張表,包括:
學生(學生號 char(7),姓名 char(6),性別 char(2),出生日期 datetime,專業 char(10),年級 int)
課程(課程號 char(4),課程名 char(10),課程學分 int)
選課(學生號 char(7),課程號 char(4),成績 int)
1.select x.商品代號,分類名,數量,品牌
from 商品表1 x,商品表2 y
where x.商品代號=y.商品代號
2.select count(distinct 產地) as 產地數
from商品表2
3.select 課程.課程號,課程.課程名,count(*)as選課人數
from 課程,選課
where課程.課程號=選課.課程號
group by 課程.課程號,課程.課程名
4. select x.學生號,y.學生號,y.課程號
from 學生x,選課y
where x.學號=@s1 and y.學號=@s2
and x.課程號=y.課程號
5. select *
from 課程
where exists (select *
from 選課,課程
where課程.課程號=選課.課程號
)
四、根據第三題所給的商品庫和教學庫,按照下列給的每種功能寫出相應的查詢語句。(每題4分,32分)
1.從商品庫中查詢出數量大於10的商品種數。
select count(商品代號)
from 商品表1
where 數量>10
2.從商品庫中查詢出每類(即分類名相同)商品的最高單價。
select max(價格)
from 商品表1
group by 分類名
3.商品庫中查詢出比所有商品單價的平均值要高的全部商品。
select *
from 商品表1
where 單價>(select Avg(單價) from 商品表1 )
4.從商品庫中查詢出同一類商品多於一種的所有分類名。
Select 分類名
from (select 分類名, count(分類名) as 類型商品數
from 商品表1
group by 分類名
)
where 類型商品數>1
5.從教學庫中查詢出被2至4名學生選修的所有課程。
select a.課程號,b.課程名 ,count(學生號) as num from 課程 a,選課 b
where a.課程號=b.課程號
group by a.課程號,b.課程名
having num between 2 and 4
6. 寫一個課程表的觸發器,當要刪除的課程還沒有學生選修,允許刪除,否則不允許刪除
Create trigger tri課程表
On 課程
For delete
As
If(exists(select * from 選課,deleted where 選課號 =deleted.選課號))
Print ‘不允許刪除’
Else
Print ‘允許刪除’
Rollback transaction
7. 查詢選修課程超過5門的學生姓名和所選修課程的數目?
Select 姓名,num from 學生表 a,(
select 學生號,count(選課.學生號) num
From 選課
Group by 學生號
Having num>5) b where a.學生號 = b.學生號
8. 寫一個存儲過程,輸入選修課程名,得到選修該課程的所有學生的學號和姓名
Create procedure mypro
@in char(10)
As select 學生.學生號,學生.姓名
from 課程 inner join選課 on課程. 課程號=選課. 課程號 inner join學生 on 學生. 學生號=選課. 學生號 where 課程. 課程名=@in
五、問答題。(共10分)
1. 使用保存點是否可以保存事務的一部分?爲什麼?
可以
2. 什麼是存儲過程?存儲過程有哪些優點?用什麼來調用?
存儲過程(Stored Procedure)是一組編譯好存儲在服務器上的完成特定功能T-SQL代碼,是某數據庫的對象。客戶端應用程序可以通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行存儲過程。
優點:
(1)允許標準組件式編程,增強重用性和共享性,無須重寫sql
(2)能夠實現較快的執行速度
(3)能夠減少網絡流量
(4)可被作爲一種安全機制來充分利用
用exec 存儲過程名 來調用
六、綜合題。(共14分)
1. 查詢A(ID,Name)表中第31至40條記錄,ID作爲主鍵可能是不是連續增長的列
法一 Select top 10 * From A Where ID not in (select top 30 * from A)
法二 go
Select IDENTITY(INT,1,1) AS ID,NAME
Into B
From A
go
Select * from B where ID between 31 and 40
go
2. 查詢表A中存在ID重複三次以上的記錄
Select *
From A
Where id in(select ID from A group by id having count(id)>3)