第一篇:SQL數據庫題庫及答案 (6)
實訓11用戶自定義函數及存儲過程
--
1、創建一個存儲過程,查看student表里的所有記錄,并運行該存儲過程。其代碼如下: CREATE PROC pr_studentCodes AS SELECT * FROM student GO EXEC pr_studentCodes
--
2、修改pr_studentcodes存儲過程,使其按照學號排序 ALTER PROC pr_studentCodes AS SELECT * FROM student ORDER BY Studentid EXEC pr_studentCodes
--
3、刪除存儲過程Pr_studentCodes drop procedure pr_studentCodes
--
4、創建向Class表中插入一條記錄(‘’,‘電子UI班’,null,)的存儲過程pr_InsertClass create procedure pr_InsertClass as insert into Class values('10901','電子UI班',null,1)go exec pr_InsertClass--5 創建存儲過程up_Add,要求該存儲過程能夠實現對輸入的兩個數相加,并將結果輸出 create proc up_Add @num1 int,@num2 int,@sum int output as
begin select @sum=@num1+@num2 end
--6 執行存儲過程up_Add,計算加上的和。declare @he int exec up_Add @num1=78,@num2=82,@sum=@he output print '結果是:'+convert(char,@he)
--
三、閱讀代碼寫結果--1 create proc pr_grade(@sno char(9), @cname char(8), @grade int output)as select @grade=score from score,course where score.courseid=course.courseid and studentid=@sno and coursename=@cname--2 declare @score int exec pr_grade '10701001','高等數學',@score output select @score
--3 create proc pr_count(@classid varchar(8), @num int output)as select @num=count(*)from student where Classid=@classid--4 declare @peop int exec pr_count @classid='10701',@num=@peop output select @peop
drop procedure pr_count
第二篇:SQL數據庫選擇題及答案
1、在數據庫技術中,獨立于計算機系統的模型是_C__。A、面向對象的模型B、關系模型C、E-R模型D、層次模型
2、數據庫系統的控制中樞是__B_。A、數據庫、b、數據庫管理系統C、數據庫管理員D、數據庫應用系統
3、使用SQL命令將學生表STUDENT中的學生年齡AGE字段的值增加1歲,應該使用的命令是__C_。
A、UPDATE SET AGE WITH AGE+1
B、REPLACE AGE WITH AGE+1
C、UPDATE STUDENT SET AGE=AGE+1
D、UPDATE STUDENT AGE WITH AGE+1
4、在關系數據庫中,建立數據庫表時,將年齡字段值限制在12~40歲之間的這種約束屬于__B__。
A、視圖完整性約束B、域完整性約束C、參照完整性約束D、實體完整性約束
5、在 SQL 語句中,與 X BETWEEN 20 AND 30 等價的表達式是__D_。A、X>=20 AND X<30
B、X>20 AND X<30
C、X>20 AND X<=30
D、X>=20 AND X<=30
6、在數據庫中,概念模型是_D__。A、用于現實的建模,與具體的DBMS有關B、用于信息世界的建模,與具體的DBMS有關
C、用于現實的建模,與具體的DBMS無關D、用于信息世界的建模,與具體的DBMS無關
7、數據庫的并發操作可能帶來的問題包括__B_。A非法用戶的使用B丟失更新C數據獨立性會提高D增加數據冗余度
8、在關系數據庫中,模式對應的是__A___。A、視圖和所有基本表
B、視圖和部分基本表
C、基本表
D、索引
9、能實現絕對的與平臺無關性的Web數據庫訪問技術是_D_。A、ADO
B、ActiveX
C、WebbaseAPI
D、JDBC
10、在下列描述中,正確的描述是__B___。
A、SQL 是一種過程化語言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高級語言程序中
D、SQL 是一種 DBMS
11、數據庫系統是由__A__組成的。A、數據庫、數據庫管理系統和用戶
B、數據文件、命令文件和報表
C、數據庫文件結構和數據
D、常量、變量和函數
12、在SQL查詢時,使用WHERE子句指出的是__B__。A、查詢目標B、查詢條件C、查詢視圖D、查詢結果
13、在下列 RDMBS 產品中,屬于小型數據庫系統的是_A_。A、Access B、Oracle C、Sybase D、Informix
14、數據庫類型是按照_A_來劃分的。
A、數據模型B、記錄形式C、數據存取方法D、文件形式
15、作為Microsoft Office家族成員之一的_A_數據庫,能夠與其他Office組件進行數據交換共享數據資源,易于生成集文字處理、圖表生成和數據管理于一體的辦公自動化系統。A、Access
B、Oracle
C、Sybase
D、Informix
16、數據庫管理系統更適合于_D_方面的應用。A、CAD
B、過程控制C、科學計算D、數據處理
17、下列四組SQL命令,全部屬于數據定義語句的命令是_C__。A、CREATE,DROP,ALTER
B、CREATE,DROP,UPDATE
C、CREATE,DROP,GRANT
D、CREATE,DROP,SELECT
18、通過Internet及瀏覽器處理的數據庫,應該是_C__處理。A、集中式
B、分布式
C、主從結構式D、以上3種模式
19、數據的邏輯獨立性是指__D_。A、數據與存儲結構的邏輯獨立性 B、數據元素之間的邏輯獨立性
C、存儲結構與物理結構的邏輯獨立性
D、數據與程序的邏輯獨立性
20、在數據庫技術中,獨立于計算機系統的模型是_C__。A面向對象的模型
B關系模型
C、E-R模型
D、層次模型
21、關系代數的3個基本運算是–D--、投影、連接。A、關系與B、蘊含C、關系或D、選擇
22、下面命題不正確的是:A、若冗余數據可以控制,則數據更新的一致性得以保證
B、數據庫減少了不必要的數據冗余C、數據庫的數據可以共享D、數據庫中不存在數據冗余
23、在基本SQL中不可以實現: A、定義視圖B、并發控制C、定義基表D、查詢視圖和基表
24、用二維表來表示實體及實體之間聯系的數據模型稱為_C___。
A、實體-聯系模型B、層次模型C、關系模型D、網狀模型
25、查找工資在600元以上并且職稱為工程師的紀錄,邏輯表達式為_D___。
A、“工資”>600.OR.職稱=“工程師”
B、工資>600.AND.職稱=工程師
C、“工資”>600.AND.“職稱”=“工程師”
D、工資>600.AND.職稱=“工程師”
26、數據庫鏡像可以用于__C_。(1分)
A、實現數據庫的安全性
B、實現數據共享C、進行數據庫恢復或并發操作D、保證數據庫的完整性
27、在下列類型的數據庫系統中,應用最廣泛的是__C___。(1分)
A、分布型數據庫系統B、邏輯型數據庫系統C、關系型數據庫系統D、層次型數據庫系統
28、在下列描述中,正確的描述是__B__。(1分)A、SQL 是一種過程化語言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高級語言程序中
D、SQL 是一種 DBMS
第三篇:數據庫 sql習題及答案
/*
Question 1:Find the titles of all movies directed by Steven Spielberg.select title from movie where director='Steven Spielberg'
Question 2:Find all years that have a movie that received a rating of 4 or 5, and sort them in increasing order.select distinct year from movie,rating where movie.mid=rating.mid and stars in(4,5)order by year
Question 3:Find the titles of all movies that have no ratings
select title from movie where mID in
(select mid from Movie except
select mid from rating)
select title from movie except
select title from movie,rating where movie.mid=rating.mid
Question 4:Some reviewers didn't provide a date with their rating.Find the names of all reviewers who have ratings with a NULL value for the date.select name from reviewer,rating where reviewer.rid=rating.rid and ratingdate is null
Question 5:Write a query to return the ratings data in a more readable format: reviewer name, movie title, stars, and ratingDate.Also, sort the data, first by reviewer name, then by movie title, and lastly by number of stars.select name,title,stars,ratingdate from movie,rating,reviewer where movie.mid=rating.mid and reviewer.rid=rating.rid order by name,title,stars
Question 6:For all cases where the same reviewer rated the same movie twice and gave it a higher rating the second time, return the reviewer's name and the title of the movie.select name,title
from rating as F,Rating as S,Movie,Reviewer where F.rID=S.rID and F.mID=S.mID and F.stars and F.ratingDate select name,title from movie,reviewer,(select r1.rid,r1.mid from rating as r1,rating as r2 where r1.rid=r2.rid and r1.mid=r2.mid and r1.ratingdate>r2.ratingdate and r1.stars>r2.stars)as r where movie.mid=r.mid and reviewer.rid=r.rid Question 7:For each movie, find the highest number of stars that movie received as a rating.Return the movie title and number of stars.Sort by movie title.select title,MAX(stars)as max_star from rating,Movie where Rating.mID=Movie.mID group by title order by title select title,maxrating from movie,(select mid,max(stars)as maxrating from rating group by mid)as r where movie.mid=r.mid order by title Question 8:For each movie, return the title and the ‘rating spread(范圍)', that is, the difference between highest and lowest ratings given to that movie.Sort by rating spread from highest to lowest, then by movie title.select title,MAX(stars)-MIN(stars)as rating_spread from rating,Movie where Rating.mID=Movie.mID group by title order by rating_spread desc,title select title,spread as “rating spread” from movie,(select mid,max(stars)-min(stars)as spread from rating group by mid)as r where movie.mid=r.mid order by spread desc,title Question 9:Find the difference between the average rating of movies released before 1980 and the average rating of movies released after 1980.(Make sure to calculate the average rating for each movie, then the average of those averages for movies before 1980 and movies after.Don't just calculate the overall average rating before and after 1980.) select F.avg_star-S.avg_star from,(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year>=1980 group by Rating.mID)as S(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year<1980 group by Rating.mID)as F)as F)as S select r1979.avgm-r1980.avgm from ,Question 10:Add the reviewer Roger Ebert to your database, with an rID of 209.insert into Reviewer values(209,'Roger Ebert') Question 11: Insert 5-star ratings by James Cameron for all movies in the database.Leave the review date as NULL.insert into Rating(rID,mID,stars)select rid,mID,5 as stras from movie,(select rid from Reviewer where name='James Cameron')as T insert into rating(rid,mid,stars)select rid,mid,5 from reviewer,movie where name='James Cameron' Question 12:For all movies that have an average rating of 4 stars or higher, add 25 to the release year.(Update the existing tuples;don't insert new tuples.) update Movie set year=year+25(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year>=1980 group by movie.mid)(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year<1980 group by movie.mid) as r) as r1979 as r) as r1980 where mID in (select mID from Rating group by mID having AVG(stars)>=4) */ SQL Server數據庫試題七及答案 一.單項選擇題(每題2分,計30分) 1._______是數據庫系統的核心,它負責數據庫的配置、存取、管理和維護等工作。(c)A、操作系統 B、關系模型 C、數據庫管理系統 D、數據庫 2.SQL Server2000是一款基于_________體系的關系型數據庫管理系統。(A)A、客戶機/服務器 B、主機 C、N層 D、單機 3.下面哪一個不是SQL Server2000的基本數據類型(A)A、VARIANT B、VARCHAR C、VARBINARY D、NVARCHAR 4.下面的類型中寬度最大的是(C)A、CHAR(5)B、VARCHAR(5)C、NCHAR(5)D、BIGINT 5.表達式LEN('電子學院')+ DATALENGTH(GETDATE())的值為(C)A、8 B、10 C、12 D、16 6.在SQL Server2000中,數據存儲的基本單位是頁,頁的大小是(D)A、1K B、2K C、4K D、8K 7.在使用CREATE DATABASE命令創建數據庫時,FILENAME選項定義的是(D)A、文件增長量 B、文件大小 C、邏輯文件名 D、物理文件名 8.關于表結構的定義,下面說法中錯誤的是(C)A、表名在同一個數據庫內應是唯一的 B、創建表使用CREATE TABLE命令 C、刪除表使用DELETE TABLE命令 D、修改表使用ALTER TABLE命令 9.下面哪一個約束用來禁止輸入重復值?(A)A、UNIQUE B、NULL C、DEFAULT D、FOREIGN KEY 10.下面關于登錄賬戶、用戶和角色的說法錯誤的是(C)A、登錄賬戶是服務器級的 B、用戶是登錄賬戶在某個數據庫中的映射 C、用戶不一定要和登錄賬戶相關聯 D、角色其實就是用戶組 11.在SELECT語句中,用于去除重復行的關鍵字是(B)A、TOP B、DISTINCT C、PERCENT D、HAVING 12.若想查詢出所有姓張的、且出生日期為空的學生信息,則WHERE條件應為(C)A、姓名 LIKE ‘張%’ AND 出生日期 = NULL B、姓名 LIKE ‘張*’ AND 出生日期 = NULL C、姓名 LIKE ‘張%’ AND 出生日期 IS NULL D、姓名 LIKE ‘張_’ AND 出生日期 IS NULL 13.下面關于視圖的說法中,錯誤的是(C)A、視圖是個虛擬表 B、可以使用視圖更新數據,但每次更新只能影響一個表 C、不能為視圖定義觸發器 D、可以創建基于視圖的視圖 14.下面關于觸發器的描述,錯誤的是(A)A、觸發器是一種特殊的存儲過程,用戶可以直接調用 B、觸發器表和DELETED表沒有共同記錄 C、觸發器可以用來定義比CHECK約束更復雜的規則 D、刪除觸發器可以使用DROP TRIGGER命令,也可以使用企業管理器 15.下面關于事務的描述,錯誤的是(D)A、事務可用于保持數據的一致性 B、事務應該晝小且應盡快提交 C、應避免人工輸入操作出在在事務中 D、在事務中可以使用ALTER DATEABSE 二.填空題(每空1分,計20分) 1.SQL Server是作為Windows NT或2000的一個__服務________運行的,用戶可以啟動、暫停或停止它。 2.SQL Server服務包括有__ SQL Server服務________、___ SQL Server Agent服務_______、Microsoft Search和MS DTC服務。 3.SQL Server有兩類數據庫,__系統數據庫________和用戶數據庫。其中為新的用戶數據庫提供模板的系統數據庫是____ model ______。 4.所有的數據庫都有一個____主數據文件______和一個或多個事務日志文件,此外,還可能有_____次要數據文件_____。 5.向表中添加數據應使用___ INSERT(或填INSERT INTO)_______命令,更新數據應使用___ UPDATE _______命令。 6.在SQL Server2000中,約束有非空約束、缺省約束、_主鍵約束_________、____外鍵約束______、檢查約束和唯一約束等6種類型。 7.對象權限是指用戶基于數據庫對象層次上的訪問和操作權限,共有5種:SELECT、INSERT、DELETE、___ UPDATE_______和____ EXECUTE ______。(或填更新、執行) 8._____ UNION _____可以把兩個或多個SELECT語句的查詢結果組合成一個結果集,使用時要求所有SELECT語句的列數應_______相同___,對應列的數據類型相容。 9.索引表的順序與數據行的物理順序相同的索引稱為___聚集(或聚簇 或簇)_______索引。 10.使用游標的一般步驟應為:__創建游標 ________、_____打開游標_____、從游標的結果集中讀取數據、對游標中的數據逐行操作、關閉游標和釋放游標。 11.___事務_______是指一個操作序列,這些操作序列要么都被執行,要么都不被執行。 12.___差異備份_______只記錄自上次完整數據庫備份后發生更改的數據。 三.判斷題(每題1分,計10分) 1.外鍵是指一個表中含有與另外一個表的主鍵相同的列或列組,外鍵不要求惟一。(√)2.SQL Server2000支持Unicode字符集,相應數據類型為text、char和varchar。(×) 3.企業管理器是SQL Server提供的最主要的數據庫管理工具,它以樹形結構的形式來管理數據庫服務器、數據庫和數據庫中的對象。(√) 4.全局變量與局部變量一樣,用戶必須進行聲明后才能使用。(×)5.在SQL Server2000中,由于不能跨頁存儲數據行,所以頁中每一行最多包含的數據量是8060B。(√) 6.數據完整性就是指數據的正確性、完備性和一致性。(√) 7.若使用REVOKE命令撤消某用戶創建表的權限,則該用戶將肯定無權創建表。(×) 8.WITH CHECK OPTION表示使用視圖更新數據時應滿足視圖定義中設置的條件(√)9.表的每個觸發動作只能有一個INSTEAD OF觸發器。(√) 10.在使用差異數據庫備份還原數據庫時,應先還原最新的完整數據庫備份。(√) 四.查詢設計(每題5分,計25分)某個學籍數據庫有如下表結構: 學生(學號,姓名,性別,出生日期,班級)課程(課程號,課程名稱,課程類別,課時)選課(學號,課程號,成績)請完成下列查詢要求。 1.查詢出“軟件041”班的所有男生的學號和姓名。 SELECT 學號, 姓名 FROM學生 WHERE班級 = ‘軟件041’ AND性別 = ‘男’ 2.查詢出所有姓張的同學的姓名和班級。SELECT * FROM課程 WHERE課程名稱 LIKE ‘%語言%’ 3.查詢出“C語言”課程成績前5名的學生的學號、姓名和班級。SELECT TOP 5學生.學號, 姓名, 班級 FROM學生 JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘C語言’ ORDER BY 成績 DESC 4.查詢出各班級學生人數。SELECT 班級, COUNT(*)AS 人數 FROM 學生 GROUP BY班級 5.查詢出“計算機應用基礎”課程成績高于張三同學此門課程成績的學生的學號和姓名。 SELECT學生.學號, 姓名 FROM 學生JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘計算機應用基礎’ AND 成績 >(SELECT成績 FROM 學生JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘計算機應用基礎’ AND姓名 = ‘張三’) 五.綜合題(每空3分,計15分) 根據下面某教學管理數據庫的表結構,完成下面的程序填空題。教師(職工號,姓名,學歷,職稱)課程(課程號,課程名稱,課程類別)任課(職工號,課程號,周課時) 1.補填下面的存儲過程的定義,使其被調用時,能根據調用程序提供的教師姓名使用輸出參數返回該教師任課的課程數。CREATE PROCEDURE 按教師姓名查詢任課課程數 @姓名 VARCHAR(10), @課程數 INT __ OUTPUT ___________________ AS SELECT __@課程數 = COUNT(*)___________________ FROM 教師 JOIN 任課 ON 教師.職工號 = 任課.職工號 WHERE ____姓名 = @姓名_________________ 2.完成下面的觸發器的定義,當向任課表中插入記錄時,觸發器能判斷若插入的記錄使該教師的任課周課時總計超過20,則回滾插入操作。CREATE TRIGGER 添加教學任務 ON 任課 AFTER INSERT AS DECLARE @總課時 INT SELECT @總課時 = SUM(任課.周課時)FROM 任課 JOIN _ INSERTED ON任課.職工號 = INSERTED.職工號 ____________________ IF @總課時 > 20 _____ ROLLBACK TRANSACTION ________________ 參考答案 一.單項選擇題(每題2分,計30分)1.C 2.A 3.A 4.C 5.C 6.D 7.D 8.C 9.A 10.C 11.B 12.C 13.C 14.A 15.D 二.填空題(每空1分,計20分)1.服務 2.SQL Server服務 SQL Server Agent服務(或填主服務、代理服務)3.系統數據庫 model 4.主數據文件 次要數據文件 5.INSERT(或填INSERT INTO)UPDATE 6.主鍵約束 外鍵約束 7.UPDATE EXECUTE(或填更新、執行)8.UNION 相同 9.聚集(或聚簇 或簇)10.創建游標 打開游標 11.事務 12.差異備份 三.判斷題(每題1分,計10分)1.√ 2.× 3.√ 4.× 5.√ 6.√ 7.× 8.√ 9.√ 10.√ 四.查詢設計(每題5分,計25分) 1.查詢出“軟件041”班的所有男生的學號和姓名。SELECT 學號, 姓名 FROM學生 WHERE班級 = ‘軟件041’ AND性別 = ‘男’ 2.查詢出所有姓張的同學的姓名和班級。SELECT * FROM課程 WHERE課程名稱 LIKE ‘%語言%’ 3.查詢出“C語言”課程成績前5名的學生的學號、姓名和班級。SELECT TOP 5學生.學號, 姓名, 班級 FROM學生 JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘C語言’ ORDER BY 成績 DESC 4.查詢出各班級學生人數。SELECT 班級, COUNT(*)AS 人數 FROM 學生 GROUP BY班級 5.查詢出“計算機應用基礎”課程成績高于張三同學此門課程成績的學生的學號和姓名。 SELECT學生.學號, 姓名 FROM 學生JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘計算機應用基礎’ AND 成績 >(SELECT成績 FROM 學生JOIN 選課 ON 學生.學號 = 選課.學號 JOIN 課程 ON課程.課程號 = 選課.課程號 WHERE課程名稱 = ‘計算機應用基礎’ AND姓名 = ‘張三’)五.綜合題(每空3分,計15分) 1.OUTPUT @課程數 = COUNT(*)姓名 = @姓名 2.INSERTED ON任課.職工號 = INSERTED.職工號 ROLLBACK TRANSACTION 先創建下面三個表: (book表) (borrow表) (reader表) 1)找出姓李的讀者姓名(NAME)和所在單位(COMPANY)。 2)列出圖書庫中所有藏書的書名(BOOK_NAME)及出版單位(OUTPUT)。3)查找“高等教育出版社”的所有圖書名稱(BOOK_NAME)及單價(PRICE),結果按單價降序排序。 4)查找價格介于10元和20元之間的圖書種類(SORT),結果按出版單位(OUTPUT)和單價(PRICE)升序排序。 5)查找書名以”計算機”開頭的所有圖書和作者(WRITER)。 6)檢索同時借閱了總編號(BOOK_ID)為112266和449901兩本書的借書證號(READER_ID)。 ##7)* 查找所有借了書的讀者的姓名(NAME)及所在單位(COMPANY)。8)* 找出李某所借所有圖書的書名及借書日期(BORROW_DATE)。 9)* 無重復地查詢2006年10月以后借書的讀者借書證號(READER_ID)、姓名和單位。 ##10)* 找出借閱了 11)找出與”趙正義”在同一天借書的讀者姓名、所在單位及借書日期。12)查詢2006年7月以后沒有借書的讀者借書證號、姓名及單位。#13)求”科學出版社”圖書的最高單價、最低單價、平均單價。##14)* 求”信息系”當前借閱圖書的讀者人次數。 #15)求出各個出版社圖書的最高價格、最低價格和總冊數。#16)分別找出各單位當前借閱圖書的讀者人數及所在單位。 17)* 找出當前至少借閱了2本圖書(大于等于2本)的讀者姓名及其所在單位。18)分別找出借書人次數多于1人次的單位及人次數。 19)找出藏書中各個出版單位的名稱、每個出版社的書籍的總冊數(每種可能有多冊)、書的價值總額。 20)查詢經濟系是否還清所有圖書。如果已經還清,顯示該系所有讀者的姓名、所在單位和職稱。 附錄:建表語句 創建圖書管理庫的圖書、讀者和借閱三個基本表的表結構: 創建BOOK:(圖書表) CREATE TABLE BOOK(BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int); 創建READER:(讀者表) CREATE TABLE READER(READER_ID int, COMPANY VARCHAR(10), NAME VARCHAR(10), SEX VARCHAR(2), GRADE VARCHAR(10), ADDR VARCHAR(50)); 創建BORROW:(借閱表) CREATE TABLE BORROW(READER_ID int, BOOK_ID int, BORROW_DATE datetime) 插入數據: BOOK表: insert into BOOK values(445501,'TP3/12','數據庫導論','王強','科學出版社',17.90);insert into BOOK values(445502,'TP3/12','數據庫導論','王強','科學出版社',17.90);insert into BOOK values(445503,'TP3/12','數據庫導論','王強','科學出版社',17.90);insert into BOOK values(332211,'TP5/10','計算機基礎','李偉','高等教育出版社',18.00);insert into BOOK values(112266,'TP3/12','FoxBASE','張三','電子工業出版社',23.60);insert into BOOK values(665544,'TS7/21','高等數學','劉明','高等教育出版社',20.00);insert into BOOK values(114455,'TR9/12','線性代數','孫業','北京大學出版社',20.80);insert into BOOK values(113388,'TR7/90','大學英語','胡玲','清華大學出版社',12.50);insert into BOOK values(446601,'TP4/13','數據庫基礎','馬凌云','人民郵電出版社',22.50);insert into BOOK values(446602,'TP4/13','數據庫基礎','馬凌云','人民郵電出版社',22.50);insert into BOOK values(446603,'TP4/13','數據庫基礎','馬凌云','人民郵電出版社',22.50);insert into BOOK values(449901,'TP4/14','FoxPro大全','周虹','科學出版社',32.70);insert into BOOK values(449902,'TP4/14','FoxPro大全','周虹','科學出版社',32.70);insert into BOOK values(118801,'TP4/15','計算機網絡','黃力鈞','高等教育出版社',21.80);insert into BOOK values(118802,'TP4/15','計算機網絡','黃力鈞','高等教育出版社',21.80); READER表: insert into reader values(111,'信息系','王維利','女','教授','1號樓424');insert into reader values(112,'財會系','李 立','男','副教授','2號樓316');insert into reader values(113,'經濟系','張 三','男','講師','3號樓105');insert into reader values(114,'信息系','周華發','男','講師','1號樓316');insert into reader values(115,'信息系','趙正義','男','工程師','1號樓224');insert into reader values(116,'信息系','李 明','男','副教授','1號樓318');insert into reader values(117,'計算機系','李小峰','男','助教','1號樓214');insert into reader values(118,'計算機系','許鵬飛','男','助工','1號樓216');insert into reader values(119,'計算機系','劉大龍','男','教授','1號樓318');insert into reader values(120,'國際貿易','李 雪','男','副教授','4號樓506');insert into reader values(121,'國際貿易','李 爽','女','講師','4號樓510');insert into reader values(122,'國際貿易','王 純','女','講師','4號樓512');insert into reader values(123,'財會系','沈小霞','女','助教','2號樓202');insert into reader values(124,'財會系','朱 海','男','講師','2號樓210');insert into reader values(125,'財會系','馬英明','男','副教授','2號樓212'); BORROW表: insert into borrow values(112,445501,'3-19-2006');insert into borrow values(125,332211,'2-12-2006');insert into borrow values(111,445503,'8-21-2006');insert into borrow values(112,112266,'3-14-2006');insert into borrow values(114,665544,'10-21-2006');insert into borrow values(120,114455,'11-2-2006');insert into borrow values(120,118801,'10-18-2006');insert into borrow values(119,446603,'11-12-2006');insert into borrow values(112,449901,'10-23-2006');insert into borrow values(115,449902,'8-21-2006');insert into borrow values(118,118801,'9-10-2006'); 現有關系數據庫如下: 數據庫名:圖書借閱管理系統 讀者表(讀者編號 char(6),姓名,性別,年齡,單位,身份證號,職稱)圖書表(圖書編號char(6),圖書名稱,出版社,作者)借閱表(讀者編號,圖書編號,借閱時間)用SQL語言實現下列功能的sql語句代碼。(1)創建數據表book; book表(圖書編號 char(6),圖書名稱,出版社,作者)要求使用:主鍵(圖書編號)、非空(圖書名稱),非空(作者)(2)創建數據表reader表; 學生信息表(reader編號 char(8),姓名,性別,年齡,工作單位,身份證號,職稱)要求使用:主鍵(reader編號)、默認(職稱)、非空(工作單位,姓名)、唯一(身份證號)、檢查(性別),檢查(年齡)(3)創建借書表borrow; borrow(ID,讀者編號,圖書編號,借書日期)要求使用:外鍵(學號,課號)(4)將下列課程信息添加到book表的代碼 圖書編號 名稱 100101 數據庫原理 100102 數據結構 修改 課號為100102的圖書名稱:數據結構與算法 刪除 課號為100101的圖書信息(5)創建視圖讀者借書信息的代碼; 讀者借書信息視圖(讀者編號,姓名,圖書編號,圖書名稱,借書日期)(6)從讀者表book中查詢姓李的女讀者的情況:姓名、性別、工作單位。(7)查詢統計出借書量超過5本的單位平均年齡 (8)創建帶參數的存儲過程[借某圖書的讀者高低均年齡]、執行該過程的代碼 存儲過程功能:查詢借閱某圖書的的讀者最高年齡、最低年齡、平均年齡; 執行該過程,查詢所有借閱’數據庫基礎’這本書的讀者的最高年齡、最低年齡、平均年齡; 1)找出姓李的讀者姓名(NAME)和所在單位(COMPANY)。 SELECT NAME,COMPANY FROM READER WHERE NAME LIKE '李%' 2)列出圖書庫中所有藏書的書名(BOOK_NAME)及出版單位(OUTPUT)。 SELECT BOOK_NAME, OUTPUT FROM BOOK 3)查找“高等教育出版社”的所有圖書名稱(BOOK_NAME)及單價(PRICE),結果按單價降序排序。 SELECT BOOK_NAME,PRICE FROM BOOK WHERE OUTPUT='高等教育出版社' ORDER BY PRICE DESC 4)查找價格介于10元和20元之間的圖書種類(SORT),結果按出版單位(OUTPUT)和單價(PRICE)升序排序。 SELECT SORT,OUTPUT,PRICE FROM BOOK WHERE PRICE BETWEEN 10 AND 20 ORDER BY OUTPUT ,PRICE 5)查找書名以”計算機”開頭的所有圖書和作者(WRITER)。 SELECT BOOK_NAME,WRITER FROM BOOK WHERE BOOK_NAME LIKE '計算機%' 6)檢索同時借閱了總編號(BOOK_ID)為112266和449901兩本書的借書證號(READER_ID)。 SELECT A.READER_ID FROM BORROW A,BORROW B WHERE A.BOOK_ID='112266' AND B.BOOK_ID='449901' AND A.READER_ID=B.READER_ID ##7)* 查找所有借了書的讀者的姓名(NAME)及所在單位(COMPANY)。 SELECT DISTINCT NAME,COMPANY FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID 8)* 找出李某所借所有圖書的書名及借書日期(BORROW_DATE)。 SELECT BOOK.BOOK_NAME,BORROW.BORROW_DATE FROM BOOK,BORROW,READER WHERE BOOK.BOOK_ID=BORROW.BOOK_ID AND READER.READER_ID=BORROW.READER_ID AND READER.NAME LIKE '李%' 9)* 無重復地查詢2006年10月以后借書的讀者借書證號(READER_ID)、姓名和單位。 SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE >='2006-10-1') ##10)* 找出借閱了 SELECT DISTINCT READER_ID FROM BORROW,BOOK WHERE BORROW.BOOK_ID=BOOK.BOOK_ID AND BOOK.BOOK_NAME LIKE 'FoxPro大全' 11)找出與”趙正義”在同一天借書的讀者姓名、所在單位及借書日期。 SELECT NAME,COMPANY,BORROW_DATE FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID AND BORROW_DATE IN(SELECT BORROW_DATE FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID AND NAME='趙正義') 12)查詢2006年7月以后沒有借書的讀者借書證號、姓名及單位。 SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID NOT IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE>='2006-7-1') #13)求”科學出版社”圖書的最高單價、最低單價、平均單價。 SELECT MAX(PRICE)最高單價,MIN(PRICE)最低單價,AVG(PRICE)平均單價 FROM BOOK WHERE OUTPUT='科學出版社' ##14)* 求”信息系”當前借閱圖書的讀者人次數。 SELECT COUNT(DISTINCT READER_ID)當前借閱圖書的讀者人次數FROM BORROW WHERE READER_ID IN(SELECT READER_ID FROM READER WHERE COMPANY IN('信息系')) #15)求出各個出版社圖書的最高價格、最低價格和總冊數。 SELECT MAX(PRICE)最高價格,MIN(PRICE)最低價格,COUNT(PRICE)總冊數FROM BOOK GROUP BY OUTPUT #16)分別找出各單位當前借閱圖書的讀者人數及所在單位。 SELECT COUNT(COMPANY)讀者人數,COMPANY FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY 17)* 找出當前至少借閱了2本圖書(大于等于2本)的讀者姓名及其所在單位。 SELECT NAME 讀者姓名,COMPANY 單位FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW GROUP BY READER_ID HAVING COUNT(*)>=2) 18)分別找出借書人次數多于1人次的單位及人次數。 SELECT COMPANY,COUNT(*)人次數 FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY HAVING COUNT(*)>1 19)找出藏書中各個出版單位的名稱、每個出版社的書籍的總冊數(每種可能有多冊)、書的價值總額。 SELECT OUTPUT,COUNT(*)書籍的總冊數,SUM(PRICE)書的價值總額 FROM BOOK GROUP BY OUTPUT 20)查詢經濟系是否還清所有圖書。如果已經還清,顯示該系所有讀者的姓名、所在單位和職稱。 SELECT NAME,COMPANY FROM READER WHERE NOT EXISTS(SELECT* FROM READER,BORROW WHERE READER.READER_ID=BORROW.READER_ID AND COMPANY='經濟系')第四篇:SQL Server數據庫試題七及答案
第五篇:數據庫sql課后練習題及答案解析