不騙你,全網首創的超硬核的萬字SQL題

因為上次發了數據庫原理總結,瀏覽快上萬了,所以把我總結的題目?也送給大家

?上次的數據庫原理總結


一.根據員工工資計算其個人所得稅,3000元為起征點,超出3000元的部分按照10%的比例征收個人所得稅,例如:

員工工資表

員工編號

工資

個人所得稅

1

3100

?

2

3500

?

3

3800

?

.

.

.

.

.

.

.

.

.

1號員工個人所得稅為10元,2號員工個人所得稅為50元,3號員工個人所得稅為80元…,請使用游標編寫一段Transact-SQL程序段,計算每個員工的個人所得稅并更新員工工資表中的個人所得稅。

DECLARE @eno int, @salary float, @tax float,

DECLARE etax_cursor CURSOR FOR

SELECT 員工編號,工資,個人所得稅

FROM 員工工資表??????????????????????????????????? ---2

?

Open?? etax_cursor??????????????????????????????????

?

FETCH NEXT FROM etax_cursor

INTO @eno, @salary, @tax?????????????????????????? ?---1

?

WHILE ?@@fetch_status = 0?

BEGIN

?? select @tax= (@salary-3000)*0.1??

? ?update 員工工資表

?? set 個人所得稅=@tax????????????????????????????? ?---1

?

?? FETCH NEXT FROM etax_cursor

?? INTO @eno,@salary, @tax

END

Close etax_cursor

DEALLOCATE etax_cursor???????????????????????????? ?---1

?

?

二、按要求實現下列操作(每題2分,共20分)

現有關系數據庫如下,完成下面題目:

??? 學生(學號,姓名,性別,專業、獎學金)

??? 課程(課程號,名稱,學分)

??? 學習(學號,課程號,分數)

1.從學生表中查詢“數學”專業的學生的學號,姓名,性別。

?

SELECT 學號,姓名,性別

?? FROM? 學生

?? WHERE? 專業=‘數學’

?

?

2.查詢平均成績大于等于90分的成績信息,輸出列名為學號,平均成績,并按照平均成績的升序排序。

?

SELECT 學號,AVG(分數) AS 平均成績

?? FROM? 學習

?? GROUP BY 學號?

?? Having?? AVG(分數)>=90

ORDER BY AVG(分數)[微軟用戶1]?

?

?

?

3.查詢沒有選修課程的學生的名單。

?select *

from 學生

where 學號 not in (select distinct 學號? from 學習 )

select A.*

from 學生 A left outer join 學習 B

on A.sno = B.sno

where B.cno is null

?

?

?

?

4.檢索沒有獲得獎學金、同時至少有一門課程成績在90分以上的學生信息,包括學號、姓名和專業。

?SELECT學號,姓名,專業

?? FROM 學生

?? WHERE獎學金 is? null? AND 學號 in (select學號 from學習 where分數>90)

?

5.檢索沒有任何一門課程成績在85分以下的所有學生的信息,包括學號、姓名和專業。

SELECT 學號,姓名,專業

?? FROM 學生

?? WHERE not exists

?? (SELECT *

?? FROM 學習

?? WHERE學習.學號=學生.學號and 分數<85)

6. 將各門課程的選修人數及平均成績定義為視圖V_AVG,包括課程名稱,選修人數和平均成績。

create view V_AVG(名稱, 選修人數, 平均成績)

as

select 名稱,count(學號),avg(分數)

from 學習,課程

where 學習.課程號=課程.課程號

group by? 學習.課程號,名稱

7.請將學號為'006',課程號為'C3',分數為92的記錄插入學習表。

insert into 學習

values('006', 'C3',92)

8.請刪除數學專業學生的成績記錄。

delete

from 學習

where 學號 in (select 學號 from 學生 where 專業= ‘數學’)

9.請將高等數學這門課程的成績加5分。

? update 學習

? set 分數 = 分數 +5

where 課程號 =

(? select?? 課程號? from? 課程? where? 名稱=’高等數學’)

10請將學生表的查詢權限授予張英,并允許張英傳播此權限。

Grant? select? on? 學生

To? 張英

With ?grant? option

四、應用題(20分)

某網上書店后臺數據庫的部分關系模式如下:

會員會員編號,用戶名,密碼,姓名,地址,郵編,電話,消費額,積分)

圖書圖書編號,類型名稱,圖書名稱,作者,出版社,出版日期,ISBN,價格)

訂單訂單編號,會員編號,銷售額,訂購日期,出貨日期)

訂單明細訂單明細編號,訂單編號圖書編號,數量)

?

  1. 創建訂單表,訂單編號唯一識別一個訂單,會員編號為外碼。要求銷售額大于0。
  2. 在會員表的積分列上建立降序索引Index_point。
  3. 查詢名稱中包含“數據庫”的圖書的圖書名稱,作者,出版社和出版日期。
  4. 查詢每個會員的訂購圖書的情況,顯示用戶名、圖書名、作者、訂購日期。
  5. 查詢提供銷售(圖書表中有)但沒有銷售過(沒在訂單明細表中出現)的圖書名稱和出版社。
  6. 查詢已銷售的每種圖書的銷售數量,顯示圖書編號、銷售數量。
  7. 查詢訂購圖書數量最多的用戶名及其訂購的數量。

8、求書店總的銷售額。

9、刪除沒有銷售過的圖書。

10、將每位會員的積分增加10分。

創建訂單表,訂單編號唯一識別一個訂單,會員編號為外碼。要求訂購日期不能大于出貨日期。

create? table? order (

訂單編號? char(9)? primary key,

會員編號? char(10),

銷售額?? double? check(銷售額>0),

訂購日期? datetime? ,

出貨日期? datetime,

foreign key(會員編號)? references 會員 (會員編號)

)

在會員表的積分列上建立降序索引Index_point

create index Index_point on 會員(積分 desc)

?

查詢名稱中包含“數據庫”的圖書的圖書名稱,作者,出版社和出版日期。

select 圖書名稱,作者,出版社,出版日期

from? 圖書

where 圖書名稱 like ‘%數據庫%’

?

查詢每個會員的訂購圖書的情況,顯示用戶名、圖書名、作者、訂購日期。

select 用戶名、圖書名、作者、訂購日期

from會員 A, 圖書 B, 訂單 C, 訂單明細 D

where? A. 會員編號 = C. 會員編號 and

?????? ?? B. 圖書編號 = D. 圖書編號 and

?????? ?? C. 訂單編號 = D. 訂單編號

?

?

查詢提供銷售(圖書表中有)但沒有銷售過(沒在訂單明細表中出現)的圖書名稱和出版社。

select 圖書名稱、出版社

from 圖書

where圖書編號 not in (

?????? select? distinct 圖書編號

?????? from訂單明細

)

?

查詢已銷售的每種圖書的銷售數量,顯示圖書編號、銷售數量。

?

select 圖書編號,sum(數量)

from 訂單明細

group by圖書編號

?

?

查詢訂購圖書數量最多的用戶名及其訂購的數量。

select 用戶名, sum(數量)

from會員 A, 訂單 B, 訂單明細 C

where A. 會員編號 = B. 會員編號 and

?????? ?B. 訂單編號 = C. 訂單編號 and

group by會員編號, 用戶名

having sum(數量) >=all(

???? select? sum(數量)

from會員 A, 訂單 B, 訂單明細 C

where A. 會員編號 = B. 會員編號 and

?????? ?B. 訂單編號 = C. 訂單編號 and

group by會員編號, 用戶名

)

?

求書店總的銷售額。

select sum(銷售額)

from 訂單

?

刪除沒有銷售過的圖書。

delete

from 圖書

where 圖書編號 not in (

?????? select? distinct 圖書編號

?????? from訂單明細

)

將每位會員的積分增加10

upate 會員

set 積分= 積分+10

?

?

五、應用題(每題2分,共20分)

某書店后臺數據庫的部分關系模式如下:

圖書類別類別代號,類別名)

圖書書號,書名,ISBN,作者,單價,類別代號)

訂單訂單號,顧客編號,訂購日期,出貨日期)

訂單明細訂單號,書號,數量,總價)

按要求實現下列操作:

1.顯示ISBN為“9787302163305”、“7560922171”或“9787810097987”的圖書的書號、書名和ISBN。

2.顯示單價高于40元的圖書的書號、書名和單價。

3.在圖書表中顯示所有沒有類別代號的圖書的書號和書名。

4.統計有多少圖書的價格高于30元。

5.統計每本圖書的銷售數量總和。

6.顯示所有圖書的書號、書名和單價以及圖書對應的類別代號和類別名。

7.顯示書名中包含字符串“ASP”的圖書的銷售訂單號和銷售總價。

8.創建一個名為ViewBookSale的視圖,該視圖包含所有圖書的銷售信息,顯示圖書的編號、書名以及銷量總冊數和銷售總金額。

9.向圖書表中插入一條圖書記錄:書號為“9”,書名為“SQL Server 2005實現與維護”, ISBN為“9787302163350”, 作者為“Solid”, 單價為79.00, 類別代號為“CO01”。

10.將書號為1的圖書的單價打9折。

答案:

1.顯示ISBN“9787302163305”“7560922171”“9787810097987”的圖書的書號、書名和ISBN

SELECT 書號, 書名, ISBN

FROM 圖書

WHERE ISBN IN('9787302163305', '7560922171', '9787810097987')

?

2.顯示單價高于40元的圖書的書號、書名和單價。

SELECT 書號, 書名, 單價

FROM 圖書

WHERE 單價>40

?

3.在圖書表中顯示所有沒有類別代號的圖書的書號和書名。

SELECT 書號, 書名

FROM 圖書

WHERE 類別代號 IS NULL

?

4.統計有多少圖書的價格高于30元。

SELECT COUNT(*) AS 圖書冊數

FROM 圖書

WHERE 單價 >30

?

5.統計每本圖書的銷售數量總和。

SELECT SUM(數量) AS 銷售總冊數

FROM 訂單明細

GROUP BY 書號

?

6.顯示所有圖書的書號、書名和單價以及圖書對應的類別代號和類別名。

SELECT b.書號, b.書名, b.單價, c.類別代號, c. 類別名

FROM 圖書 b? LEFT OUTER JOIN 圖書類別 c

ON b.類別代號=c.類別代號

7.顯示書名中包含字符串“ASP”的圖書的銷售訂單號和銷售總價。

SELECT 訂單號, 總價

FROM 訂單明細

WHERE 書號 IN ( SELECT 書號

???????????????? FROM 圖書

???????????????? WHERE 書名 LIKE '%ASP%')

?

8.創建一個名為ViewBookSale的視圖,該視圖包含所有圖書的銷售信息,顯示圖書的編號、書名以及銷量總冊數和銷售總金額。

CREATE VIEW ViewBookSale

AS

SELECT b.書號, b.書名, SUM(數量) AS 銷量總冊數, SUM(總價) AS 銷售總金額

FROM 圖書 b LEFT JOIN訂單明細i ON b.書號=i.書號

GROUP BY b.書號, b.書名

?

9.向圖書表中插入一條圖書記錄:書號為“9”,書名為“SQL Server 2005實現與維護”, ISBN為“9787302163350, 作者為“Solid, 單價為79.00, 類別代號為“CO01”。

INSERT INTO 圖書

VALUES(‘9’,'SQL Server 2005實現與維護','9787302163350','Solid',79.00,'CO01')

?

10.將書號為1的圖書的單價打9折。

UPDATE 圖書

SET 單價=單價*0.9

WHERE 書號=1

五、簡答題(每題5分,共20)

1.(1)創建SQL Server登錄賬戶Sql1,密碼為“123456”;(2分)

(2)將Comments表的查詢、刪除和插入的權限授予數據庫用戶Sql1和Sql2,并且這兩個數據庫用戶還可以將得到的權限再授予其他人。(3分)?

?

2. 參照第三道應用題所給數據庫的部分模式,創建一個函數FunBook,根據用戶提供的圖書類別名查看相應類別圖書的詳細信息。

?

3. 根據第三道應用題所給數據庫的部分模式,創建一個觸發器TrInsUpd,當向圖書表中插入或更新一條記錄的類別代號時,新記錄的類別代號必須在圖書類別表中存在,否則提示類別代號不正確。

答案:

1.

CREATE LOGIN Sql1 WITH PASSWORD='123456'

GRANT SELECT,DELETE,INSERT ON Comments TO Sql1,Sql2? WITH GRANT OPTION

?

2. CREATE FUNCTION FunBook(@categoryName nvarchar(50))

RETURNS TABLE

AS RETURN

(SELECT b.*

FROM 圖書 b JOIN 圖書類別 c ON b.類別代號=c.類別代號

WHERE c.類別名=@categoryName

)

?

?

3. CREATE TRIGGER TrInsUpd ON 圖書 AFTER INSERT,UPDATE

AS

IF NOT EXISTS(SELECT * FROM inserted WHERE 類別代號 IN(

SELECT 類別代號 FROM 圖書類別))

?????? BEGIN

????????????? PRINT '類別代號不正確!'

????????????? ROLLBACK TRANSACTION

?????? END

?

?

六、應用題(每題2分,共20分)

某書店后臺數據庫的部分關系模式如下:

圖書類別類別代號,類別名)

圖書書號,書名,ISBN,作者,單價,類別代號)

顧客顧客編號,姓名,地址,推薦人編號

推薦人編號表示推薦這名顧客注冊的老顧客的編號

訂單訂單號,顧客編號,訂購日期,出貨日期)

訂單明細訂單號,書號,數量,總價)

按要求實現下列操作:

1.在圖書表中查看有哪些類別代號。

?

2.顯示類別代號是LA01或者單價低于20元的圖書的書號、書名、單價和類別代號。

?

3.顯示所有圖書的書號、書名、單價和類別代號,首先按照類別代號升序排序,對于類別代號相同的圖書再并按照圖書單價降序排。

4.統計類別代號是CO01的圖書冊數和單價總和。

5.統計銷售次數超過5次的圖書的書號和銷售總冊數。

6.顯示那些有推薦人的顧客的詳細信息以及其推薦人的姓名。

7.顯示2009年以后購買過圖書的顧客的編號和姓名。

8.創建一個名為ViewComputers的視圖,該視圖包含所有計算機類的圖書詳細信息以及類別名。

9.向表圖書中除了類別代號以外的所有列中插入數據,書號為“11”,書名為“英語閱讀詞匯雙突破”, ISBN為“7560922171”,作者為“楊建榮”,單價為19.00。

10.刪除編號為101的圖書記錄。

答案:

1.在圖書表中查看有哪些類別代號。

SELECT DISTINCT 類別代號

FROM 圖書

?

2.顯示類別代號是LA01或者單價低于20元的圖書的書號、書名、單價和類別代號。

SELECT 書號, 書名, 單價, 類別代號

FROM 圖書

WHERE 類別代號='LA01' OR 單價<20

?

3.顯示所有圖書的書號、書名、單價和類別代號,首先按照類別代號升序排序,對于類別代號相同的圖書再并按照圖書單價降序排。

SELECT 書號, 書名, 單價, 類別代號

FROM 圖書

ORDER BY 類別代號, 單價 DESC

?

4.統計類別代號是CO01的圖書冊數和單價總和。

SELECT COUNT(書號) AS 圖書冊數, SUM(單價) AS 單價總和

FROM 圖書

WHERE 類別代號='CO01'

?

5.統計銷售次數超過5次的圖書的書號和銷售總冊數。

SELECT 書號, SUM(數量) AS 銷售總冊數

FROM 訂單明細

GROUP BY 書號

HAVING COUNT(訂單號)>5

?

6.顯示那些有推薦人的顧客的詳細信息以及其推薦人的姓名。

SELECT c1.*, c2.姓名

FROM 顧客 c1, 顧客 c2

WHERE c1.推薦人編號=c2.顧客編號

?

7.顯示2009年以后購買過圖書的顧客的編號和姓名。

SELECT c.顧客編號, c.姓名

FROM 顧客 c

WHERE EXISTS ( SELECT *

??????????????? FROM 訂單 o

??????????????? WHERE o.訂購日期>='01/01/2009'? AND c.顧客編號=o.顧客編號)

?

8.創建一個名為ViewComputers的視圖,該視圖包含所有計算機類的圖書詳細信息以及類別名。

CREATE VIEW ViewComputers

AS

SELECT b.*, c.類別名

FROM 圖書 b JOIN 圖書類別 c ON b.類別代號=c.類別代號

WHERE c.類別名='計算機'

?

9.向表圖書中除了類別代號以外的所有列中插入數據,書號為“11”,書名為“英語閱讀詞匯雙突破”, ISBN為“7560922171,作者為“楊建榮”,單價為19.00

INSERT INTO 圖書(書號,書名,ISBN,作者,單價)

?????? VALUES(‘11’,'英語閱讀詞匯雙突破','7560922171','楊建榮',19.00)

?

10.刪除編號為101的圖書記錄。

DELETE FROM 圖書

WHERE 書號=’101’

?

?

?

七、簡答題(每題5分,共20)

1.(1)創建基于登錄賬戶Sql2的數據庫用戶Sql2,并為該用戶指定默認架構Sale。(3分)

(2)把用戶U5對SC表的INSERT權限收回。(2分)

?

?

2. 參照第三道應用題所給數據庫的部分模式,創建一個存儲過程PrcSelect,根據用戶提供的圖書類別名查看相應類別圖書的詳細信息。

3. 根據第三道應用題所給數據庫的部分模式,創建一個函數FunBookSale,該函數根據給定的書號返回該圖書銷售的數量。

答案:

1.1)(3分)

CREATE USER Sql2 FROM LOGIN Sql2

WITH DEFAULT_SCHEMA=Sale

2)(2分)

REVOKE? INSERT? ON ?TABLE SC ?FROM? U5?

?

2. CREATE PROCEDURE PrcSelect? @categoryName nvarchar(50)

AS

SELECT b.*

FROM 圖書 b JOIN 圖書類別 c ON b.類別代號=c.類別代號

WHERE c.類別名=@categoryName

?

3. CREATE FUNCTION FunBookSale (@bookID int)

RETURNS int

AS

BEGIN

?????? DECLARE @quantity int

?????? SELECT @quantity=SUM(quantity)

?????? FROM OrderItems

?????? WHERE bookID=@bookID

RETURN @quantity

END

?

八、請按要求完成操作(30分)

某校學生-課程數據庫部分關系模式如下:

學生表 Student(Sno,Sname,Sage,Ssexdepartment)??

課程表Course(Cno,Cname, CcreditTno)???

成績表?SC(Sno,Cno, grade)??

教師表Teacher(Tno,Tnametsex)?

?

  1. 數據查詢(每題2分,共20分)
  1. 查詢張姓學生的信息

(2) 查詢計算機學院女學生的信息,并按年齡降序排列

(3) 查詢選修了項天老師課程的學生信息

(4) 查詢至少有一門課程與李燕所選課程相同的學生的學號、姓名

(5) 求各門課程最高成績、最低成績、課程號。

?

?

  1. 求選修了全部課程的學生信息
  2. 求1995年前出生的學生信息
  3. 查詢所有學生的選課情況,包括沒有選課的學生
  4. 查詢兩門以上不及格課程的同學的學號及其平均成績
  5. 檢索至少選修兩門課程的學生學號

?

2. 請SQL語句完成下列要求(共10分)

(1)創建課程表(2分)

?

(2) 刪除成績表中成績為空的記錄(2分)

?

(3) 在課程表的教師編號列上建立降序索引。(2分)

(4)在學生表上創建一個觸發器trigger_delete,當刪除學生信息時,將刪除的學生保存到oldstudent表中,oldstudent和student表結構相同。(4分)

答案:

數據查詢(每題2分,共20分)

1. select *? from student where sname like '%'

?

2 select * from student where department ='IS' and ssex='' order by sage desc

?

3 select? *

from student a,sc b,course c,teacher d

where a.sno = b.sno and

????? b.cno = c.cno and

????? c.tno = d.tno and

????? tname = '項天'

?

?

4 select a.sno,sname

from student a,sc b

where a.sno = b.sno and sname <>'李燕' and

cno in(

? select distinct cno

? from student c,sc d

? where c.sno = d.sno and sname = '李燕'

)

?

5? select cno,max(grade),min(grade)

from sc

grop by cno

?

6 select *

from student

where not exists(

?? select *

?? from course

?? where not exists(

????? select *

????? from sc

????? where sno = student.sno and

??????????? cno = course.cno

?? )

)

?

7 select *

from student

where (year(getdate())-sage)<1995

?

8 select*

from student left outer join sc

on student.sno = sc.sno

?

9? select sno ,avg(grade)

from sc

where sno in (

?select sno

?from sc

?group by sno

?having count(case when grade<60 then 1)>=2

)

?

?

10?? select sno

from sc

group by sno

having count(*)>=2

?

?

2. SQL語句完成下列要求(共10分)

1create table course(

? cno varchar(5) primary key,

? cname varchar(30),

? ccredit float,

? tno varchar(5),

? foreign key (tno) refrences? teacher(tno)

2) delete

from sc

where grade is null

?

3) create index index_tno on teacher(tno desc)

?

4) create trigger trigger_delete

on student

after delete

as

begin

? insert into oldstudent

? select *? from deleted

end

?

?

九. 已知學生數據庫中存放了這樣的兩張表,一張為畢業生信息表(graduation),記錄畢業生的一些基本信息,一張為學生繳費表(fee),記錄了學生的繳費信息。由于學生畢業,我們要從學生信息表中把畢業生的記錄刪除,但是如果這個學生欠費的話,則不允許刪除這個學生的記錄。 (字段名都是中文,可以直接使用) (10分)

graduation (學號 姓名 性別 地址 聯系方式)

fee(學號 姓名 已交費用 欠費)

  1. 建立一個存儲過程pro_deletestudent在graduation表中刪除指定畢業學生的信息,輸入參數為學號。
  2. 在graduation表上建立一個觸發器tr_checkfee,判斷要刪除的學生是否欠費,欠費則不允許刪除該記錄,否則刪除該記錄

答案:

1) 建立一個存儲過程pro_deletestudentgraduation表中刪除指定畢業學生的信息,輸入參數為學號。

?? create procedure pro_deletestudent

?? @sno? char(9)

?? as

??? begin

????????????? delete? from graduation where 學號 = @sno

??? ? end

?

?

(2) graduation表上建立一個觸發器tr_checkfee,判斷要刪除的學生是否欠費,欠費則不允許刪除該記錄,否則刪除該記錄

create? TRIGGER? tr_checkfee

on? graduation

for delete

as

begin

?????? DECLARE @sno char(9);

?????? Select @sno=deleted.sno from ?deleted

?????? if exists(select * from? fee where 學號 = @sno and欠費>0)

????????????? rollback

end

?

十、某書店后臺數據庫的部分關系模式如下:

圖書類別類別代號,類別名)

圖書書號,書名,ISBN,作者,單價,類別代號)

顧客顧客編號,姓名,地址,推薦人編號

推薦人編號表示推薦這名顧客注冊的老顧客的編號

訂單訂單號,顧客編號,訂購日期,出貨日期)

訂單明細訂單號,書號,數量,總價)

按要求實現下列操作:

1.使用數據定義語言建立顧客、訂單明細兩張表的結構(注意添加相應的主外鍵約束)。(6分)

  1. 在圖書表中查看有哪些類別代號。(2分)
  2. 顯示類別代號是LA01或者單價低于20元的圖書的書號、書名、單價和類別代號。(2分)
  3. 顯示所有圖書的書號、書名、單價和類別代號,首先按照類別代號升序排序,對于類別代號相同的圖書再并按照圖書單價降序排。(3分)
  4. 統計類別代號是CO01的圖書冊數和單價總和。(3分)
  5. 顯示有推薦人的顧客的詳細信息以及其推薦人的姓名。(3分)
  6. 刪除編號為101的圖書記錄。(2分)
  1. 向表圖書中除了類別代號以外的所有列中插入數據,書號為“11”,書名為“英語閱讀詞匯雙突破”, ISBN為“7560922171”,作者為“楊建榮”,單價為19.00。(2分)
  2. 創建一個視圖,要求顯示訂單編號、書名、ISBN、并且要求書的作者為“王珊”。(3分)
  3. 創建一個角色ROLE1,將顧客表的查詢、更新、刪除的權限授予該角色,并使用該角色對張明、趙強、李峰授權。(4分)

?

答案:

1.使用數據定義語言建立顧客、訂單明細兩張表的結構(注意添加相應的主外鍵約束)。(6分)顧客顧客編號,姓名,地址,推薦人編號

訂單明細訂單號,書號,數量,總價)

?

CREATE TABLE 顧客

(

? 顧客編號 CHAR(9) PRIMARY KEY,

? 姓名? CHAR(10),

? 地址? VARCHAR(20),

? 推薦人編號 CHAR(9),

? FOREIGN KEY (推薦人編號) REFERENCES 顧客(顧客編號)

);

CREATE TABLE 訂單明細

(

? 訂單號 CHAR(8),

? 書號? CHAR(10),

? 數量? SMALLINT),

? 總價 NUMERIC(8,2),

? PRIMARY (訂單號, 書號),

? FOREIGN KEY (訂單號) REFERENCES 訂單(訂單號),

FOREIGN KEY (書號) REFERENCES 圖書(書號)

);

?

2.在圖書表中查看有哪些類別代號。(2分)

SELECT DISTINCT 類別代號

FROM 圖書

?

3.顯示類別代號是LA01或者單價低于20元的圖書的書號、書名、單價和類別代號。(2分)

SELECT 書號, 書名, 單價, 類別代號

FROM 圖書

WHERE 類別代號='LA01' OR 單價<20

?

4.顯示所有圖書的書號、書名、單價和類別代號,首先按照類別代號升序排序,對于類別代號相同的圖書再并按照圖書單價降序排。(3分)

SELECT 書號, 書名, 單價, 類別代號

FROM 圖書

ORDER BY 類別代號, 單價 DESC

?

5.統計類別代號是CO01的圖書冊數和單價總和。(3分)

SELECT COUNT(書號) AS 圖書冊數, SUM(單價) AS 單價總和

FROM 圖書

WHERE 類別代號='CO01'

?

6.顯示有推薦人的顧客的詳細信息以及其推薦人的姓名。(3分)

SELECT c1.*, c2.姓名

FROM 顧客 c1, 顧客 c2

WHERE c1.推薦人編號=c2.顧客編號

?

7.刪除編號為101的圖書記錄。(3分)

DELETE FROM 圖書

WHERE 書號=’101’

?

8.向表圖書中除了類別代號以外的所有列中插入數據,書號為“11”,書名為“英語閱讀詞匯雙突破”, ISBN為“7560922171”,作者為“楊建榮”,單價為19.00。(3分)

INSERT INTO 圖書(書號,書名,ISBN,作者,單價)

?????? VALUES(‘11’,'英語閱讀詞匯雙突破','7560922171','楊建榮',19.00)

9. CREATE ROLE ROLE1

?

? GRANT SELECT,UPDATE,DELETE

? ON TABLE 顧客

? TO ROLE1

?

? GRANT ROLE1

? TO 張明,趙強,李峰

?

十一、綜合題(每題20分,共40分)

1、某服裝銷售公司擬開發一套服裝采購管理系統,以便對服裝采購和庫存進行管理。經過需求分析和概念設計、邏輯設計階段最后得到的關系模式包括:

庫管員(庫管員編號,姓名,級別)Storekeeper(sno,sname,level)

倉庫信息(倉庫編號,倉庫位置,倉庫容量)Storehouse(stno,stadress,stvolume)

服裝(服裝編碼,服裝描述,服裝類型,尺碼,面料,銷售價格)Dress(dno,ddescribe,dtype,dsize,dplus,dprice)供應商(供應商編碼,供應商名稱,地址,聯系電話,企業法人)Supplier(suno,suname,suaddress,sutel,superson)關系模式之間的關聯關系為:每個倉庫有一個庫管員,一個倉庫管理員可以管理多個倉庫;每種服裝有一個供應商,每個供應商提供多種類型的衣服;每種衣服放在同一個倉庫里,每個倉庫里存放多種類型的衣服。

請完成以下題目:

1)請用把以上四個關系模式用SQL創建到數據中(每個創建表的語句2分,共計8分)

?

?

?

2)假設表中已經存在以下數據,請完成a)~e)中SQL語句的編寫(每個2分,共12分)

庫管表中的數據:

?

倉庫表中的數據:

?

供應商表中的數據:

?

服裝表中的數據:

?

  1. 請查詢存放在1號樓201倉庫中中的服裝信息
  2. 請查詢河北童泰服裝廠生產的服裝信息存儲的倉庫信息
  3. 由于庫存銷售量上升,現在“女士古典旗袍”的尺碼已經不全了,只剩下155~165的號了,請修改該服裝的尺碼信息
  4. 庫管員孫某某的離職,現在他的庫管工作全部由新來的員工李爽承擔,請將李爽的信息插入到庫管員表中(李爽的等級是3級),并把原來的孫某某的庫房指定給李爽管理。

?

  1. 由于換季,現在女士連衣裙已經下架不再銷售,請將服裝中的女士連衣裙刪除。

2、根據第一題中的需求描述,即某服裝銷售公司擬開發一套服裝采購管理系統,編寫以下數據庫程序。

1)編寫一個自定義函數實現按照某個的庫管員查找其所管轄的倉庫中的服裝的供應商的聯系人。(5分)

?

2)編寫一個存儲過程,將參數指定的服裝信息插入到數據庫dress表中。(5分)

?

3)定義一個觸發器,在插入供應商信息的時候檢查聯系人不能為空值(5分)

4)定義一個游標,實現統計服裝信息中價格在500元以內的服裝數量。(5分)

答案:

1.? 1)創建表的SQL語句:(每個創建表的SQL2分,共8分)

--創建庫管員表

create table Storekeeper(

sno int primary key,

sname varchar(20),

level char(2)

)

--創建倉庫表

create table Storehouse(

stno int primary key,

staddress varchar(100),

stvolume? int,

sno int,

foreign key (sno) references? Storekeeper(sno)

)

--創建供應商表

create table Supplier(

suno int primary key,

suname varchar(20),

suaddress varchar(100),

sutel varchar(20),

superson varchar(20)

)

--創建服裝表

create table Dress(

?dno int primary key,

?ddescribe varchar(100),

?dtype varchar(20),

dsize varchar(20),

?dplus varchar(20),

?dprice int,

?stno int,

?suno int,

?foreign key (stno) references Storehouse(stno),

?foreign key (suno) references Supplier(suno)

)

2)(共計12分)

a)select dress.* from dress,storehouse

where dress.stno=storehouse.stno

and storehouse.staddress='1號樓'(2)

?

b) select distinct storehouse.* from storehouse,dress,supplier

where dress.stno=storehouse.stno and supplier.suno=dress.suno

and supplier.suname='河北童泰服裝'2分)

?

c)update dress set dsize='155~165' where ddescribe='女士古典旗袍'2分)

?

d): insert into storekeeper values(4,'李爽',3)2分)

update storehouse set sno=4 where sno=32分)

e)delete from dress where ddescribe='女士連衣裙'2分)

?

2. 1)自定義函數:(5分)

create function fun1(@name varchar(20))

returns varchar(20)

as

begin

return

?(select superson from supplier

?where suno in(

????? select suno from dress,Storehouse

????? where dress.stno=storehouse.stno

????? and storehouse.sno=(select sno from storekeeper

????? ? where sname=@name)

?))

end

?

2)自定義存儲過程:(5分)

create proc myproc1

@dno int,

@ddescribe varchar(100),

@dsize varchar(20),

@dplus varchar(20),

@dprice int,

@dtype varchar(20),

@stno int,

@suno int

as

?begin

?insert into dress values(@dno,@ddescribe,@dsize,

?????????????????????????? @dplus,@dprice,@dtype,@stno,@suno)

?end

?

3)觸發器:(5分)

create trigger trigger1 on supplier

for insert

as

?begin

?declare @name varchar(20)

????? select @name=superson from supplier

????? if(@name is null)

????? RAISERROR ('聯系人的名字不能為null', 16, 10)

????? ?? ROLLBACK TRANSACTION

?End

?

4)聲明游標:(5分)

--聲明游標

declare cursor1 cursor

for select dprice from dress

for read only

--打開游標

open cursor1

--定義變量

declare @num int,@price int

set @num=0

--取游標中的數據

fetch next from cursor1 into @price

--循環

?while(@@FETCH_STATUS=0)

?begin

????? if(@price<500)

???????????? set @num=@num+1;?

????? fetch next from cursor1 into @price

?end

?print @num

--關閉游標

?close cursor1

--釋放游標

?deallocate cursor1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學姐面了美團阿里京東的面經

很真實的經歷&#xff0c;美團阿里京東全都嘗試過。希望對你們都有幫助 近一個多月 斷斷續續參加了一些校園秋季招聘&#xff0c;仍未上岸。 記錄近段時間的反思共享。 &#xff08;時間順序&#xff09; 【美團基礎研發部門-測試開發崗(功能測試&#xff0c;測試平臺研發&a…

學姐騰訊產品面經

順利拿到sp offer&#xff0c;不服不行&#xff0c;不是這塊料呀 系列文章歷史&#xff1a; 朋友面神策數據庫&#xff0c;第五個問題不會&#xff0c;直接再見 美女學姐面了美團阿里京東&#xff0c;這些經驗實在太真實了 首先&#xff0c;來個背景介紹&#xff1a; 騰訊實…

關于阿里云服務器本地訪問不了的問題

一&#xff1a;前幾天公司購買了一臺阿里云服務器&#xff0c;讓我把之前的項目都移到阿里云服務器上&#xff0c;我為此專門的研究了一下阿里云服務器的基本操作和安裝流程&#xff0c;這里我說一下我們公司的服務器配置如下&#xff1a; 系統就配置就是這個情況&#xff0c;下…

超硬核!十萬字c++題,讓你秒殺老師和面試官(上)

我發現呀&#xff0c;這大家對面試題的需求還是很大的&#xff0c;這里總結了上千道知識點&#xff0c;能換您一個收藏嗎 C 引用和指針的區別&#xff1f; 指針是一個實體&#xff0c;需要分配內存空間。引用只是變量的別名&#xff0c;不需要分配內存空間。 引用在定義的時候…

當年,學姐把這份Java總結給我,讓我在22k的校招王者局亂殺

可以說&#xff0c;學姐給我的這份文檔真的把我的知識查漏補缺&#xff0c;面試問到了好多&#xff0c;值得收藏。 并發編程 一.Executor 為什么使用線程池&#xff1a;手動創建線程耗費性能&#xff0c;不利于管理。 首先創建線程池有兩種方式&#xff1a;使用Executors工廠…

十萬字cpp成神總結-看完月薪25k

最近會放出cpp成神之路的所有總結&#xff0c;大家感興趣的可以收藏一波。 歷史文章&#xff1a; 超硬核&#xff01;十萬字c題&#xff0c;讓你秒殺老師和面試官 位運算 若一個數m滿足 m 2^n;那么k%mk&(m-1) 為什么內存對齊 平臺原因(移植原因)不是所有的硬件平臺都能…

測試必經之路(探索性測試)

接下來&#xff0c;百萬年薪測試方面也會有專題哦。 測試計劃&#xff1a; 測試范圍、方法、資源、進度、風險 測試報告&#xff1a; 就是把測試的過程和結果寫成文檔&#xff0c;對發現的問題和缺陷進行分析。 一、探索性測試 評估測試用例的標準 1 測試用例對被測對象的…

超硬核萬字!web前端學霸筆記,學完就去找工作吧

近期應粉絲要求&#xff0c;出多個前端大總結&#xff0c;適合小白復習查閱 #第一章 Web基礎知識 Web開發基本概念 1、萬維網是一個由許多相互鏈接的超文本組成的系統&#xff0c;通過互聯網訪問。 2、web&#xff1a;worldwideweb&#xff0c;萬維網&#xff0c;簡稱web&…

金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如:(¥1011)-(一千零一拾一元整)輸出。...

程序代碼如下&#xff1a; package cn.itcast.framework.interview;import java.text.NumberFormat; import java.util.HashMap;//金額轉換&#xff0c;阿拉伯數字的金額轉換成中國傳統的形式如&#xff1a;&#xff08;&#xffe5;1011&#xff09;&#xff0d;>&#xff…

大學四年自學進BAT,私下存的資源/工具/網站我全貢獻出來了

這些工具/網站是我橫掃BAT的重要一步&#xff0c;甚至是決定性的一步。以后會更簡歷書寫、面試筆試、大學學習、工具等文章。 大學四年&#xff0c;上課是不可能一直上課的&#xff0c;看課本也是不可能一直看課本的。 不是說老師教的不好&#xff0c;教材寫的不好&#xff0c…

我是CSDN最硬核作者,誰贊成,誰反對?

也許是現在&#xff0c;也許是未來&#xff0c;我是全網最硬核的作者&#xff0c;最值得愛學習愛編程的崽崽們關注的作者。 一、介紹自己 哈嘍大家好&#xff0c;我是兔老大&#xff0c;之前叫過兔兔兔兔兔兔、兔兔RabbitMQ等&#xff0c;反正都是兔子啦&#xff0c;自從大學…

當年,學姐總結奇安信18k常問面試題

她確實拿了18k&#xff0c;真人真事&#xff0c;也不是很高&#xff0c;我沒必要編。 黑色字為問題&#xff0c;紅色字為答案&#xff0c;空行為一個面試過程 自我介紹 家在哪&#xff0c;工作地 測試需要掌握啥 V模型W模型 最典型的V模型版本一般會在其開始部分對軟件開發…

最強阿里巴巴歷年經典面試題匯總:C++研發崗

這個系列計劃收集幾百份朋友和讀者的面經&#xff0c;作者合集方便查看&#xff0c;各位有面經屯著可以聯系我哦 本系列歷史文章&#xff1a; 關于我的那些面經——百度后端&#xff08;附答案&#xff09; 《關于我的那些面經》滴滴Java崗&#xff08;附答案&#xff09; 朋…

當年,兔子學姐靠這個面試小抄拿了個22k

本文順序是操作系統&#xff08;jvm&#xff09;、網絡、數據庫&#xff08;mysql/redis&#xff09;&#xff0c;都是當時兔子的學姐準備面試的時候總結的&#xff0c;學生面試基本不會跑出這個范圍&#xff0c;懂行的應該能看出來。 學姐原話&#xff1a;因為我本身的知識是A…

用JAVA SOCKET編程,讀服務器幾個字符,再寫入本地顯示

Server: package cn.itcast.framework.socket;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;//用JAVA SOCKET編程&#xff0c;讀服務器…

學姐,來挑戰字節最牛部門

字節&#xff08;分布式圖數據庫研發工程師&#xff09;真實面經&#xff0c;其實是個學長&#xff0c;但是同學們都叫他學姐&#xff0c;可能是因為帥到把女生都比下去了。 本系列歷史文章&#xff1a; 最強阿里巴巴歷年經典面試題匯總&#xff1a;C研發崗 關于我的那些面經…

學姐百度實習面經(輕松拿offer)

本系列歷史文章&#xff1a; 學姐&#xff0c;來挑戰字節最牛部門 最強阿里巴巴歷年經典面試題匯總&#xff1a;C研發崗 關于我的那些面經——百度后端&#xff08;附答案&#xff09; 《關于我的那些面經》滴滴Java崗&#xff08;附答案&#xff09; 朋友面神策數據庫&am…

阿里巴巴歷年經典面試題匯總:Java崗

這個系列計劃收集幾百份朋友和讀者的面經&#xff0c;作者合集方便查看&#xff0c;各位有面經屯著可以聯系我哦 本系列歷史文章&#xff1a; 學姐百度實習面經 學姐&#xff0c;來挑戰字節最牛部門 最強阿里巴巴歷年經典面試題匯總&#xff1a;C研發崗 關于我的那些面經—…

超經典,阿里巴巴歷年高頻面試題匯總:前端崗

這個系列計劃收集幾百份朋友和讀者的面經&#xff0c;作者合集方便查看&#xff0c;各位有面經屯著可以聯系我哦 本系列歷史文章&#xff1a; 阿里巴巴歷年經典面試題匯總&#xff1a;Java崗 學姐百度實習面經 學姐&#xff0c;來挑戰字節最牛部門 最強阿里巴巴歷年經典面試…

超經典,百度最愛考的安卓Android百題

這個系列計劃收集幾百份朋友和讀者的面經&#xff0c;作者合集方便查看&#xff0c;各位有面經屯著可以聯系我哦 本系列歷史文章&#xff1a; 超經典&#xff0c;阿里巴巴歷年高頻面試題匯總&#xff1a;前端崗 阿里巴巴歷年經典面試題匯總&#xff1a;Java崗 學姐百度實習面…