資料庫實驗四
阿新 • • 發佈:2022-05-28
T-SQL程式設計
內容:
1.定義變數並且通過select語句給變數賦值. 查詢學號為“201215121”的學生的姓名和年齡,將其分別賦予變數name和age
2.if-lese選擇結構的使用. 查詢學生資訊,如果學生人數多於10人,則只顯示前5名,否則顯示所有學生資訊
3.while迴圈結構的使用. 建立一個測試表,並使用迴圈結構快速插入20000條記錄
4.編寫帶有萬用字元引數的儲存過程,查詢學生表和成績表,返回指定姓名的學生姓名、課程名和考試成績。要求:執行該儲存過程時,如果未提供引數,則使用預設的預設值(以“張”打頭的姓)
- 建立觸發器,當插入交易記錄時,實現自動更新賬戶餘額的功能
6.編寫事務進行銀行轉賬
程式碼
/*1. 定義變數並且通過select語句給變數賦值*/ declare @name varchar(10) declare @age int select @name=sname, @age=sage from student2020205224 where sno='201215123' select @name as 姓名, @age as 年齡 /*1-練習*/ declare @no int DECLARE @grade int SELECT @no=sno, @grade=grade FROM sc2020205224 where cnp='1' and sno='201215121' SELECT @no as 學號, @grade as 成績 /*if-lese選擇結構的使用*/ DECLARE @num int SELECT @num=count(*) from student2020205224 print '學生人數:'+convert(varchar(5),@num) IF (@num>10) BEGIN print '前五名學生資訊' SELECT TOP 5 * FROM student2020205224 ORDER BY sno DESC END ELSE BEGIN print '所有學生資訊' SELECT * FROM student2020205224 END /*練習*/ declare @num1 int SELECT @num1=AVG(grade) FROM sc2020205224 WHERE cnp='1' IF(@num1>70) BEGIN print '前五名學生資訊' SELECT TOP 5 * FROM sc2020205224 WHERE cnp='1' ORDER BY sno DESC END ELSE BEGIN print '所有學生資訊' SELECT * FROM sc2020205224 END /*3*/ create table TableIndex ( ID int identity(1,1), DataValue decimal(18,2) ) /*向TestIndex資料庫表中插入20000條資料*/ create table TableIndex ( ID int identity(1,1), DataValue decimal(18,2) )/*先建立*/ declare @r numeric(15,8) declare @n int set @n = 0 while(1=1) begin set @r = rand() insert into TableIndex (DataValue) values(@r) set @n = @n + 1 if(@n>20000) break end /*練習*/ declare @n1 decimal(5, 0)/*約束中grade的資料型別*/ SELECT @n1 =min(grade) from sc2020205224 WHERE cnp='1' WHILE(1=1) BEGIN SELECT @n1 =min(grade) from sc2020205224 WHERE cnp='1' if(@n1<60) UPDATE sc2020205224 set grade =grade+2 where cnp='1'and grade<60 else break END