【正文】
o 歸還書籍 values(39。00000939。,39。20214639。,39。西游記 39。) go insert into 歸還書籍 values(39。00000439。,39。20214639。,39。紅樓夢(mèng) 39。) go insert into 歸還書籍 values(39。00000639。,39。20215539。,39。概率論與數(shù)據(jù)統(tǒng)計(jì) 39。) go insert into 歸還書籍 values(39。00001139。,39。20216439。,39。中國近現(xiàn)代史 39。) go insert into 歸還書籍 values(39。00000239。,39。20219239。,39。SQL Server 202139。) go ( 5) 實(shí)現(xiàn)各種查詢功能 1, 能根據(jù)圖書編號(hào)或者圖書名稱查詢此書在圖書館中 14 是否存在以及此書的書目類別、存在的位置、數(shù)量等等。 代碼如下: select 是否在庫 ,類別 ,存放位置 ,庫存量 from 圖書信息 ,管理信息 where 圖書信息 .圖書編號(hào) =管理信息 .圖書編號(hào) and 圖書信息 .圖 書編號(hào) =39。00001039。 go 2, 個(gè)人借閱信息查詢。輸入借閱人編號(hào)后,能查出該借閱人的所有信息。 代碼如下: select * from 借閱人 where 圖書證號(hào) =39。20214639。 go 3, 催還數(shù)目查詢。查詢出所有已到期、過期、尚未歸還的書目信息。 代碼如下: select 圖書信息 .* from 圖書信息 ,管理信息 ,借閱信息 where 圖書信息 .圖書編號(hào) =管理信息 .圖書編號(hào) and 管理信息 .登記借書日期 =借閱信息 .借書時(shí)間 and (getdate()借書時(shí)間 =30) or (getdate()借書時(shí)間 30) go ( 6) 觸發(fā)器設(shè)計(jì)部分 1, 用 TSQL 語言實(shí)現(xiàn)借閱圖書和歸還圖書功能。 ① 借閱 書籍 觸發(fā)器。 要求同時(shí)最多只能借 5本,并且能用觸發(fā)器來實(shí)現(xiàn),若超過 5本,就不能再借圖書,并且提示已經(jīng)達(dá)到了借閱的最大數(shù)量。 代碼如下: create trigger tr_借閱圖書 on 借閱書籍 for insert as begin if exists(select * from 借閱人 ,inserted where 借閱人 .圖書證號(hào) =inserted.圖書證號(hào) and 已借書數(shù)目 =5) begin print39。已經(jīng)達(dá)到了借閱的最大數(shù)量 39。 rollback transaction end 15 end ② 歸還 書籍 觸發(fā)器。 當(dāng)輸入歸還書籍的圖書編號(hào)時(shí),若其圖書編號(hào)與圖書證號(hào)不與外鍵約束沖突的話,將該條 記錄 插入歸還 書籍表中,同時(shí)將借閱書籍表中與之相同的記錄刪除。 代碼如下: create trigger tr_歸還書籍 on 歸還書籍 for insert as begin declare @tsbh char(6),@tszh nvarchar(50) select @tsbh=圖書編號(hào) from inserted select @tszh=圖書證號(hào) from inserted if exists(select * from 借閱書籍 where 借閱書籍 .圖書編號(hào) =@tsbh and 借閱書籍 .圖書證號(hào) =@tszh) delete from 借閱書籍 where 借閱書籍 .圖書編號(hào) =@tsbh and 借閱書籍 .圖書證號(hào)=@tszh end 2, Update 觸發(fā)器 在數(shù)據(jù)庫中創(chuàng)建一個(gè) update 觸發(fā)器,當(dāng)用戶更新圖書名稱時(shí),提示用戶不能修改圖書名稱。代碼如下: create trigger tr_sm on 圖書信息 for update as if update(書名 ) begin print39。用戶不能修改圖書名稱 39。 rollback transaction end go update 圖書信息 set 書名 =39。冰心語錄 39。 where 圖書編號(hào) =39。00000739。 go ( 7) 視圖的設(shè)計(jì)部分 創(chuàng)建一個(gè)視圖,存放每個(gè)讀者的編號(hào),姓名,單位名稱及所借書籍的名稱和數(shù)量。代碼如下: create view v_借閱人信息 as select 借閱書籍 .圖書證號(hào) ,姓名 ,單位名稱 ,已借書數(shù)目 ,借閱書籍 .書名 from 借閱人 ,借閱書籍 16 where 借閱人 .圖書證號(hào) =借閱書籍 .圖書證號(hào) go ( 8) 默認(rèn)值約束的建立 在圖書信息表上,為書名字段創(chuàng)建一個(gè)默認(rèn)值約束。代碼如下: alter table 圖書信息 add constraint df_fm default 39。Delphi 739。 for 書名 go ( 9) 函數(shù)的設(shè)計(jì)部分 編寫一個(gè)函數(shù),該函數(shù),可以通過輸入借書時(shí)間來判斷是否到期,當(dāng)借閱時(shí)間大于 30天,返回已經(jīng)過期;否則返回還未到期。 代碼如下: create function fun_jysj(@jysj smalldatetime) returns char(16) begin declare @ret char(8) if (getdate()@jysj)30 set @ret=39。已經(jīng)過期 39。 else set @ret=39。還未到期 39。 return @ret end ( 10) 存儲(chǔ)過程創(chuàng)建部分 創(chuàng)建一個(gè)存儲(chǔ)過程,它帶有一個(gè)參數(shù),用于接收借閱人編號(hào),顯示該借閱人的借書情況 。代碼如下: create proc proc_tszh @tszh char(12) as select 已借書數(shù)目 ,能否借書 ,書名 ,借書時(shí)間 from 借閱人 ,管理信息 ,圖書信息 ,借閱信息 where 借閱人 .圖書證號(hào) =管理信息 .圖書證號(hào) and 管理信息 .圖書編號(hào) =圖書信息 .圖書編號(hào) and 借閱信息 .借書時(shí)間 =管理信息 .登記借書日期 and 借閱人 .圖書證號(hào) =@tszh go exec proc_tszh 39。20214639。 go 四, 實(shí)訓(xùn)心得 通過本次的課程設(shè)計(jì),讓我又熟悉了一次教材。這次的實(shí)訓(xùn)將整個(gè)大二上學(xué)期的 SQL Server 2021 所學(xué)內(nèi)容都融匯到了里面。 而實(shí)訓(xùn)的大綱僅僅只是老師提供了一個(gè)輪廓,整體的設(shè)計(jì)都要求同學(xué)們 獨(dú)立完成,更是培養(yǎng)了同學(xué)們獨(dú)立思考的好習(xí)慣。這樣的實(shí)訓(xùn)我更愿意稱之為“復(fù)習(xí)實(shí)訓(xùn)”,因?yàn)樗C合了 SQL Server 2021 的數(shù)據(jù)庫、表、視圖、觸發(fā)器、存儲(chǔ)過程及函數(shù)的創(chuàng)建與應(yīng)用,以及數(shù)據(jù)的增、刪、改的 簡單操作,讓我真真切切地感覺學(xué)到了些東西。