《SQL數(shù)據(jù)庫管理與開發(fā)教程與實訓(xùn)》試題
A.?dāng)?shù)據(jù)共享 B.數(shù)據(jù)完整性 C. 數(shù)據(jù)冗余很高 D.數(shù)據(jù)獨立性高 2. 目前( )數(shù)據(jù)庫系統(tǒng)已逐漸淘汰了網(wǎng)狀數(shù)據(jù)庫和層次數(shù)據(jù)庫,成為當(dāng)今最為流行的商用數(shù)據(jù)庫系統(tǒng)。 A.關(guān)系 B.面向?qū)ο?span lang=EN-US> C.分布 3. 數(shù)據(jù)庫設(shè)計中的概念結(jié)構(gòu)設(shè)計的主要工具是( )。 A.?dāng)?shù)據(jù)模型 B.E—R模型 C.新奧爾良模型 D.概念模型 4. ( )是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它屬于系統(tǒng)軟件,它為用戶或應(yīng)用程序提供訪問數(shù)據(jù)庫的方法。數(shù)據(jù)庫在建立、使用和維護時由其統(tǒng)一管理、統(tǒng)一控制。 A.DBMS B.DB C.DBS D.DBA 5. 在SQL中,建立視圖用的命令是 ( )。 A.CREATE SCHEMA B.CREATE TABLE C.CREATE VIEW D.CREATE INDEX 6. SQL語言中,條件“年齡BETWEEN 20 AND 30”表示年齡在20至30之間,且( )。 A.包括20歲和30歲 B.不包括20歲和30歲 C.包括20歲但不包括30歲 D.包括30歲但不包括20歲 8. 在MS SQL Server中,用來顯示數(shù)據(jù)庫信息的系統(tǒng)存儲過程是( )。 A. sp_dbhelp B. sp_db C. sp_help D. sp_helpdb 9. SQL語言中,刪除一個表的命令是( )。 A. DELETE B. DROP C. CLEAR D. REMOVE 10. SQL的視圖是從( )中導(dǎo)出的。 A.基本表 B. 視圖 C. 基本表或視圖 D. 數(shù)據(jù)庫 二、判斷題(每空1分,共10分) 1. "在那遙遠的地方" 是SQL中的字符串常量嗎? 2. "11.9" 是SQL中的實型常量嗎? 3. 語句 select 16%4, 的執(zhí)行結(jié)果是: 0 嗎? 4. "2005.11.09" 是SQL中的日期型常量嗎? 5. ¥2005.89 是SQL中的貨幣型常量嗎? 6. 語句 select 15/2 的執(zhí)行結(jié)果是: 7.5 嗎? 7. '李白'>'杜甫' 比較運算的結(jié)果為真嗎? 8. 在事務(wù)中包含create database語句嗎? 9. 創(chuàng)建唯一性索引的列可以有一些重復(fù)的值? 10.固定數(shù)據(jù)庫角色:db_datawriter 的成員刪除本數(shù)據(jù)庫內(nèi)任何表中的數(shù)據(jù)嗎? 三、填空題(每空1分,共20分) 1. 數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)的___________、_________和_________三級模式結(jié)構(gòu)。 2. SQL Server 2000局部變量名字必須以_________開頭,而全局變量名字必須以_________開頭。 3. 語句 select ascii('C'), char(68), len(' 你 是BigTiger ') 的執(zhí)行結(jié)果是: _________、_________和_________。 4. 語句 select upper('beautiful') , ltrim (' 我心中的太陽') 的執(zhí)行結(jié)果是: ____________和___________。 5. 關(guān)系運算主要有________、________、________。 6. 選擇運算是根據(jù)某些條件對關(guān)系做______分割;投影是根據(jù)某些條件對關(guān)系做______分割。 7. 索引的類型主要有_ _和_ __。 8. 在SQL Server 2000中,數(shù)據(jù)庫對象包括數(shù)據(jù)表、______、______、觸發(fā)器、規(guī)則、默認和用戶自定義的數(shù)據(jù)類型等。 四、簡述題(每小題5分,共10分) 1. 簡述使用游標的步驟。 2. 簡述SQL Server 2000的安全性管理機制,涉及登錄賬號、用戶、角色以及權(quán)限分配。 五、設(shè)計題(共50分) 現(xiàn)有關(guān)系數(shù)據(jù)庫如下: 數(shù)據(jù)庫名:學(xué)生成績數(shù)據(jù)庫 學(xué)生表(學(xué)號 char(6),姓名,性別,民族,身份證號) 課程表(課號 char(6),名稱) 成績表(ID,學(xué)號,課號,分數(shù)) 用SQL語言實現(xiàn)下列功能的sql語句代碼: 1. 創(chuàng)建數(shù)據(jù)庫[學(xué)生成績數(shù)據(jù)庫]代碼(2分); 2. 創(chuàng)建[課程表]代碼(2分); 課程表(課號 char(6),名稱) 要求使用:主鍵(課號)、非空(名稱) 3. 創(chuàng)建[學(xué)生表]代碼(6分); 學(xué)生表(學(xué)號 char(6),姓名,性別,民族,身份證號) 要求使用:主鍵(學(xué)號)、默認(民族)、非空(民族,姓名)、唯一(身份證號)、檢查(性別) 4. 創(chuàng)建[成績表]代碼(4分); 成績表(ID,學(xué)號,課號,分數(shù)) 要求使用:主鍵(課號)、外鍵(成績表.學(xué)號,成績表.課號)、檢查(分數(shù)),自動編號(ID) 5. 將下列課程信息添加到課程表的代碼(8分) 課號 課程名稱 100001 大學(xué)語文 100002 大學(xué)英語 100003 西班牙語 修改 課號為100002的課程名稱:實用英語 刪除 課號為100003的課程信息 6. 寫出創(chuàng)建:成績表視圖(學(xué)號,姓名,課號,課程名稱,分數(shù))的代碼;(4分) 7. 寫出創(chuàng)建:某門課程成績 內(nèi)嵌表值函數(shù)以及檢索的代碼;(6分) 檢索:所有修 實用英語 這門學(xué)生的成績; 8. 寫出創(chuàng)建:某門課程高低均分 計算某門課程成績最高分、最低分、平均分 存儲過程以及執(zhí)行的代碼;(6分) 執(zhí)行:所有修 實用英語 這門學(xué)生的最高分、最低分、平均分; 9. 檢索姓李的女同學(xué)的情況:姓名、性別、民族。(2分) 10. 檢索有一門或一門以上課程成績大于等于90分的所有學(xué)生的信息,包括學(xué)號、姓名。(4分) 11. 設(shè)置一SQL身份驗證的賬戶:登錄名:U領(lǐng)導(dǎo),密碼:888,數(shù)據(jù)庫用戶名:U讀者,權(quán)限:可查詢查詢本數(shù)據(jù)庫中所有表、視圖、內(nèi)嵌表值函數(shù)的數(shù)據(jù)。請寫出賬戶、權(quán)限設(shè)置的T_SQL腳本。(6分) 《SQL數(shù)據(jù)庫管理與開發(fā)教程與實訓(xùn)》試題參考答案 一、1.C 2.A 3. B 4.A 5.C 6.A 7. 8.D 9.B 10.C 二、1. N 2.N 3.Y 4.N 5.N 6.N 7. Y 8.N 9.N 10.Y 三、1. 外模式、模式、內(nèi)模式。 2. @,@@ 3. 67, D, 12 4. BEAUTIFAL, 我心中的太陽 5. 選擇、投影、連接。 6. 水平, 垂直 7. 聚簇索引 非聚簇索引 8. 視圖、存儲過程 四、簡述題 1. 簡述使用游標的步驟。 (1) 聲明游標:declare 游標名 cursor for select語句; (2) 打開游標:open 游標名; (3) 處理數(shù)據(jù): fetch delete update (4) 關(guān)閉游標:close 游標名; (5) 釋放游標:deallocate 游標名; 2. 要點: 1. 計算機的連接 2. SQL Server服務(wù)器登錄(登錄、固定服務(wù)器角色) 3. 數(shù)據(jù)庫的訪問(用戶/角色:固定/自定義數(shù)據(jù)庫角色) 4. 數(shù)據(jù)表(視圖)的訪問(select insert update delete) 5. 存儲過程/內(nèi)嵌表值函數(shù)的訪問(execute/select) 6. 數(shù)據(jù)表(視圖)中列(字段)的訪問(select update) 五、設(shè)計題 1. create database [學(xué)生成績數(shù)據(jù)庫] go use [學(xué)生成績數(shù)據(jù)庫] go 2. create table 學(xué)生表 ([學(xué)號] char(6) primary key, [姓名] nchar(4) not null, [性別] nchar(1) check([性別] in ('男', '女')), [民族] nchar(8) default '漢族' not null, [身份證號] char(18) unique ) 3. create table 課程表 ([課號] char(6) primary key, [名稱] char(40) not null ) 4. create table 成績表 (ID integer IDENTITY(1, 1), [學(xué)號] char(6) references 學(xué)生表(學(xué)號), [課號] char(6) references 課程表(課號), [分數(shù)] integer check([分數(shù)] between 0 and 100) ) 5. insert 課程表 values('100001', '大學(xué)語文') insert 課程表 values('100002', '大學(xué)英語') insert 課程表 values('100003', '西班牙語') update課程表 set 名稱='實用英語' where 課號='100002' delete課程表 where 課號='100003' 6. create view [成績表視圖] as select 成績表.學(xué)號,姓名,成績表.課號,名稱 課程名稱,分數(shù) from 成績表,學(xué)生表,課程表 where 成績表.學(xué)號=學(xué)生表.學(xué)號 and 成績表.課號=課程表.課號 create view [成績表視圖] as select 成績表.學(xué)號,姓名,成績表.課號,名稱 課程名稱,分數(shù) from 成績表 join 學(xué)生表 on 成績表.學(xué)號=學(xué)生表.學(xué)號 join 課程表 on 成績表.課號=課程表.課號 7. create function [某門課程成績](@課程名 varchar(40)) returns table as return (select 學(xué)號,姓名,課程名稱,分數(shù) from 成績表視圖 where 課程名稱=@課程名) create function [某門課程成績](@課程名 varchar(40)) returns table as return (select * from 成績表視圖 where 課程名稱=@課程名) select * from [某門課程成績]('實用英語') 8. create procedure [某門課程高低均分] @課程名 varchar(40) as select 課程名稱, 最高分=max(分數(shù))、最低分=min(分數(shù))、平均分=avg(分數(shù)) from 成績表視圖 where 課程名稱 = @課程名 execute [某門課程高低均分] '實用英語' 9. select 姓名, 性別, 民族 from 學(xué)生表 where 姓名 like '李%' and 性別='女' 10. select 學(xué)號, 姓名 from 學(xué)生表 where學(xué)號 in (select distinct 學(xué)號 from 成績表 where分數(shù)>=90) 11. use [學(xué)生成績數(shù)據(jù)庫] exec sp_addlogin 'U領(lǐng)導(dǎo)', NULL, '學(xué)生成績數(shù)據(jù)庫', '簡體中文' exec sp_password NULL, '888', 'U領(lǐng)導(dǎo)' exec sp_grantdbaccess 'U領(lǐng)導(dǎo)', 'U讀者' exec sp_addrolemember 'db_datareader', 'U讀者' use [學(xué)生成績數(shù)據(jù)庫] exec sp_addlogin 'U領(lǐng)導(dǎo)', '888', '學(xué)生成績數(shù)據(jù)庫' exec sp_grantdbaccess 'U領(lǐng)導(dǎo)', 'U讀者' exec sp_addrolemember 'db_datareader', 'U讀者' |
|