1. 程式人生 > >SQL Server 2008 實驗報告 - 第四次實驗報告

SQL Server 2008 實驗報告 - 第四次實驗報告

按要求寫出命令

  1. 定義區域性變數a、b、c、s1、s2並賦初值5、4、4.0、‘abc’、‘def’,分別求a與b的積、商、餘數、按位與、按位或、按位異或,a與c的商,s1與s2的串連。(注意比較a與b的商和a與c的商有何不同。):
DECLARE @a INT, @b INT, @c FLOAT, @s1 CHAR(5), @s2 CHAR(5);
SELECT @a = 5, @b = 4, @c = 4.0, @s1 = 'abc', @s2 = 'def';
SELECt @a * @b, @a / @b, @a % @b, @a & @b, @a |
@b, @a ^ @b; PRINT @a / @c; PRINT @s1 +@ s2;
  1. 輸出當前SQL Server的版本資訊,輸出執行上一條T-SQL語句所返回的錯誤程式碼:
PRINT @@VERSION;
PRINT @@ERROR;
第 1、2 小題執行結果
3) 對student表,將某個學號的值賦給某個變數,然後查詢學號為該變數的學生的姓名,將查到的姓名賦給另一個變數並輸出其值:
DECLARE @sno_select CHAR(5), @sname_select CHRA(10);
SET @sno_select
= '107'; SELECT @sname_select = sname FROM student WHERE sno = '@sno_select'; PRINT @sname_select;
  1. 對score表,將某個課程號賦給某個變數,然後查詢課程號為該變數的選課人數和最高成績分別賦給另外兩個變數並輸出其值:
DECLARE @cno_select CHAR(5)@s_num int, @max_degree float;
SET @cno_select = '3-105';
SELECT @s_num = COUNT(*), @max_degree = MAX(degree)
FROM score WHERE cno = @cno_select; PRINT @s_num; PRINT @max_degree;
第 4 小題執行結果

編寫程式

  1. 輸出每位教師的教師號、姓名和職稱級別。(職稱級別:教授和副教授為高階職稱;講師為中級職稱,助教為初級職稱:
SELECT tno, tname, 職稱級別 = 
CASE prof
WHEN '教授' THEN '高階職稱'
WHEN '副教授' THEN '高階職稱'
WHEN '講師' THEN '中級職稱'
WHEN '助教' THEN '初級職稱'
END
FROM teacher;
第 1 小題執行結果
  1. 按優、良、中、及格、不及格五級成績等級輸出學生的姓名、課程名和成績等級,輸出結果先按課程號升序排再按姓名升序排:
SELECT sname, cname, 成績等級 = 
CASE 
WHEN degree >= 90 THEN '優'
WHEN degree >= 80 AND degree < 90 THEN '良'
WHEN degree >= 70 AND degree < 80 THEN '中'
WHEN degree >= 60 AND degree < 70 THEN '幾個'
ELSE '不及格'
END
FROM student, cousce, score WHERE student.sno = score.sno AND course.cno = score.cno ORDER BY course.cno, sname;
第 2 小題執行結果
3) 求出男女生的平均成績,若男生平均成績與女生平均成績的比率高於1.3,則顯示“男生比女生成績高多了”;若男生平均成績與女生平均成績的比率在0.8~1.3之間,則顯示“男生與女生成績差不多”;若男生平均成績與女生平均成績的比率低於0.8,則顯示“女生比男生成績高多了”:
DECLATE @avg_boy float, @avg_girl float, @rate float;
SELECT @avg_boy = AVG(degree) FROM student, score WHERE student.sno = score.sno AND ssex = '男';
SELECT @avg_girl = AVG(degree) FROM student, score WHERE student.sno = score.sno AND ssex = '女';
SET @rate = @avg_boy / @ avg_girl;
IF(@rate > 1.3)
    PRINT '男生比女生成績高多了'
ELSE IF(@rate < 0.8)
    PRINT '女生比男生成績高多了'
ELSE
    PRINT '男生與女生成績差不多'
第 3 小題執行結果
4) 建立如下表,然後向表中插入20條記錄,前兩列使用預設值,第三列插入從當前日期開始的連續的20天的日期(使用迴圈語句插入,可參考304頁DATEADD函式):
create table xsrq
  (spno char(4) default('3741'),
  spname char(20) default('蘋果MacBook Pro '),
scrq date)
DECLARE @i INT;
WHILE @i < 20
BEGIN 
INSERT INTO xsrq (scrq) VALUES (DATEADD("DAY", @i, GETDATE()));
SET @i = @i +1;
END
SELECT * FROM sxsrq; # 顯示插入資料
第 4 小題執行結果