第三章上机练习
2017-02-25 14:44
351 查看
上机练习一:
上机练习二:
DECLARE @NO int -- 学号
SET @NO = 3
DECLARE @date datetime -- 出生日期
DECLARE @year int -- 出生年份
-- 获得学号是20011的学生姓名和年龄
SELECT StudentName 姓名,
FLOOR(DATEDIFF(DY, BornDate, GETDATE())/365) 年龄
FROM student WHERE StudentNo=@NO
-- 查询输出比学号是20011的学生大1岁和小1岁的学生信息
SELECT @date=BornDate FROM Student -- 使用SELECT赋值
WHERE StudentNo=@NO
SET @year = DATEPART(YY, @date)
SELECT * FROM Student
WHERE DATEPART(YY,BornDate) = @year + 1
OR DATEPART(YY,BornDate) = @year - 1
GO
上机练习三:
DECLARE @name nvarchar(50) --姓名
DECLARE @score decimal(5,2) --分数
SELECT TOP 1 @score=StudentResult,@name=stu.StudentName
FROM Result r
INNER JOIN Student stu ON r.StudentNo=stu.StudentNo
INNER JOIN Subject sub ON r.SubjectNo=sub.SubjectNo
WHERE r.StudentNo='20012' AND sub.SubjectName='Java Logic'
ORDER BY ExamDate DESC
PRINT '学生姓名:' + @name
IF (@score > 85)
PRINT '考试等级:' + '优秀'
ELSE IF (@score > 70)
PRINT '考试等级:' + '良好'
ELSE IF (@score > 60)
PRINT '考试等级:' + '中等'
ELSE
PRINT '考试等级:' + '差'
上机练习四:
DECLARE @date datetime --考试时间
DECLARE @subNO int --课程编号
SELECT @subNO=SubjectNo FROM Subject
WHERE SubjectName='C# OOP'
SELECT @date=max(ExamDate) FROM Result
WHERE SubjectNo=@subNO
PRINT '加分前学生的考试成绩如下:'
SELECT 学号=StudentNo,成绩等级=CASE
WHEN StudentResult BETWEEN 0 AND 59 THEN '你要努力了!!!'
WHEN StudentResult BETWEEN 60 AND 69 THEN '★'
WHEN StudentResult BETWEEN 70 AND 79 THEN '★★'
WHEN StudentResult BETWEEN 80 AND 89 THEN '★★★'
ElSE '★★★★'
END
FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date
DECLARE @n int
WHILE(1=1) --条件永远成立
BEGIN
SELECT @n=COUNT(*) FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date AND StudentResult<60 --统计不及格人数
IF (@n>0)
UPDATE Result SET StudentResult=StudentResult+2 FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date AND StudentResult<=98
--每人加2分
ELSE
BREAK --退出循环
END
上机练习五:
USE MySchool
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name ='Admin')
DROP TABLE Admin
GO
CREATE TABLE Admin( --创建表
[LoginId] [nvarchar](50) NOT NULL,
[LoginPwd] [nvarchar](50) NOT NULL
)
ALTER TABLE Admin --添加主健约束
ADD CONSTRAINT PK_Admin PRIMARY KEY (LoginId)
GO
INSERT INTO Admin([LoginId],[LoginPwd]) VALUES('TEST1','123') --插入数据
INSERT INTO Admin([LoginId],[LoginPwd]) VALUES('TEST2','123456') --插入数据
GO
UPDATE Admin SET [LoginPwd]='1234567' WHERE [LoginId]='TEST2' --更新数据
GO
DECLARE @tag nvarchar(1) SET @tag = '★' PRINT @tag PRINT @tag + @tag PRINT @tag + @tag + @tag PRINT @tag + @tag + @tag + @tag PRINT @tag + @tag + @tag + @tag + @tag GO
上机练习二:
DECLARE @NO int -- 学号
SET @NO = 3
DECLARE @date datetime -- 出生日期
DECLARE @year int -- 出生年份
-- 获得学号是20011的学生姓名和年龄
SELECT StudentName 姓名,
FLOOR(DATEDIFF(DY, BornDate, GETDATE())/365) 年龄
FROM student WHERE StudentNo=@NO
-- 查询输出比学号是20011的学生大1岁和小1岁的学生信息
SELECT @date=BornDate FROM Student -- 使用SELECT赋值
WHERE StudentNo=@NO
SET @year = DATEPART(YY, @date)
SELECT * FROM Student
WHERE DATEPART(YY,BornDate) = @year + 1
OR DATEPART(YY,BornDate) = @year - 1
GO
上机练习三:
DECLARE @name nvarchar(50) --姓名
DECLARE @score decimal(5,2) --分数
SELECT TOP 1 @score=StudentResult,@name=stu.StudentName
FROM Result r
INNER JOIN Student stu ON r.StudentNo=stu.StudentNo
INNER JOIN Subject sub ON r.SubjectNo=sub.SubjectNo
WHERE r.StudentNo='20012' AND sub.SubjectName='Java Logic'
ORDER BY ExamDate DESC
PRINT '学生姓名:' + @name
IF (@score > 85)
PRINT '考试等级:' + '优秀'
ELSE IF (@score > 70)
PRINT '考试等级:' + '良好'
ELSE IF (@score > 60)
PRINT '考试等级:' + '中等'
ELSE
PRINT '考试等级:' + '差'
上机练习四:
DECLARE @date datetime --考试时间
DECLARE @subNO int --课程编号
SELECT @subNO=SubjectNo FROM Subject
WHERE SubjectName='C# OOP'
SELECT @date=max(ExamDate) FROM Result
WHERE SubjectNo=@subNO
PRINT '加分前学生的考试成绩如下:'
SELECT 学号=StudentNo,成绩等级=CASE
WHEN StudentResult BETWEEN 0 AND 59 THEN '你要努力了!!!'
WHEN StudentResult BETWEEN 60 AND 69 THEN '★'
WHEN StudentResult BETWEEN 70 AND 79 THEN '★★'
WHEN StudentResult BETWEEN 80 AND 89 THEN '★★★'
ElSE '★★★★'
END
FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date
DECLARE @n int
WHILE(1=1) --条件永远成立
BEGIN
SELECT @n=COUNT(*) FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date AND StudentResult<60 --统计不及格人数
IF (@n>0)
UPDATE Result SET StudentResult=StudentResult+2 FROM Result
WHERE SubjectNo=@subNO AND ExamDate=@date AND StudentResult<=98
--每人加2分
ELSE
BREAK --退出循环
END
上机练习五:
USE MySchool
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name ='Admin')
DROP TABLE Admin
GO
CREATE TABLE Admin( --创建表
[LoginId] [nvarchar](50) NOT NULL,
[LoginPwd] [nvarchar](50) NOT NULL
)
ALTER TABLE Admin --添加主健约束
ADD CONSTRAINT PK_Admin PRIMARY KEY (LoginId)
GO
INSERT INTO Admin([LoginId],[LoginPwd]) VALUES('TEST1','123') --插入数据
INSERT INTO Admin([LoginId],[LoginPwd]) VALUES('TEST2','123456') --插入数据
GO
UPDATE Admin SET [LoginPwd]='1234567' WHERE [LoginId]='TEST2' --更新数据
GO
相关文章推荐
- 第一本书 第三章上机练习1-3
- 第三章html上机练习1
- c++语言上机指导实用教程第三章3.1练习4
- 第三章 上机练习
- HTML第三章上机练习1
- ACCPS1C#第三章上机练习2,3
- 第三章html上机练习4
- 第三章上机练习2,3
- 4000 第三章html上机练习1老师发的答案
- 第三章 上机练习1
- 使用C#开发数据库应用系统----------------- 第三章 上机练习
- HTML 第三章 上机练习一
- 第三章html上机练习2
- 第三章 上机练习三四
- 《算法竞赛入门经典》第三章上机练习(1)
- 面向对象程序设计上机练习十二(运算符重载)
- 【数据结构上机练习】7. 二叉树的简单操作(2)
- sdut 面向对象程序设计上机练习五(简单类和对象)
- 【数据结构上机练习】考试题目 2
- [1143]面向对象程序设计上机练习四(变量引用)