问题描述:
为管理岗位业务培训信息,建立3个表:
S(S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C(C#,CN ) C#,CN 分别代表课程编号、课程名称
SC( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1.使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
Select SN,SD FROM S
Where[S#]
IN(Select [S#] FROM C,SC
WhereC.[C#]=SC.[C#]
AND CN=N'税收基础')
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
SelectSN,SD FROM S
Where[S#]IN (
Select[S#] FROM SC
Where[C#]='C2')
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
SelectSN,SD FROM S
Where[S#] NOT IN(
Select[S#] FROM SC
Where[C#]='C5')
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
SelectSN,SD FROM S
Where[S#] IN(
Select[S#] From SC
GROUPBY [S#]
HAVINGCount (Distinct C#)
5. 查询选修了课程的学员人数
Select学员人数=COUNT(DISTINCT[S#]) FROM SC
6. 查询选修课程超过5门的学员学号和所属单位
Select SN,SD FROM S
Where[S#] IN(
Select[S#] FROM SC
GROUPBY [S#]
HAVINGCOUNT(DISTINCT [C#])>5)
题目2
问题描述:
已知关系模式:
S(SNO,SNAME) 学生关系。SNO为学号,SNAME为姓名
C(CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER为任课教师
SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
SelectSNAME FROM S
WhereNOT EXISTS(
Select* FROM SC,C
WhereSC.CNO=C.CNO
ANDCNAME='李明'
ANDSC.SNO=S.SNO)
2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
SelectS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
FROMS,SC,(
SelectSNO
FROMSC
WhereSCGRADE<60
GROUPBY SNO
HAVINGCOUNT(DISTINCT CNO)>=2
)AWhere S.SNO=A.SNO AND SC.SNO=A.SNO
GROUPBY S.SNO,S.SNAME
3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
SelectS.SNO,S.SNAME
FROMS,(
SelectSC.SNO
FROMSC,C
WhereSC.CNO=C.CNO
ANDC.CNAME IN('1','2')
GROUPBY SNO
HAVINGCOUNT(DISTINCT CNO)=2
)SCWhere S.SNO=SC.SNO
4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
SelectS.SNO,S.SNAME
FROMS,(
SelectSC1.SNO
FROMSC SC1,C C1,SC SC2,C C2
WhereSC1.CNO=C1.CNO AND C1.NAME='1'
ANDSC2.CNO=C2.CNO AND C2.NAME='2'
ANDSC1.SCGRADE>SC2.SCGRADE
)SCWhere S.SNO=SC.SNO
5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
SelectS.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]
FROMS,(
SelectSC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE
FROMSC SC1,C C1,SC SC2,C C2
WhereSC1.CNO=C1.CNO AND C1.NAME='1'
ANDSC2.CNO=C2.CNO AND C2.NAME='2'
ANDSC1.SCGRADE>SC2.SCGRADE
)SCWhere S.SNO=SC.SNO
SQL Server笔试题(Sql2000常见笔试题)
一单词解释(2分/个) 34分
Data数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权
REVOKE取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程
事务Transaction 触发器TRIGGER 继续 continue唯一unqiue
主键primary key 标识列 identity 外键foreign key 检查 check
约束constraint
二编写SQL语句(5分/题) 50分(包含笔试题问题和解答答案)
1)创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
Createtable stu (学号int , 姓名varchar(8),年龄int, 性别varchar(4), 家庭地址varchar(50),
联系电话int);
2)修改学生表的结构,添加一列信息,学历
Altertable stu add 学历varchar(6);
3)修改学生表的结构,删除一列信息,家庭住址
Altertable stu drop column 家庭地址
4)向学生表添加如下信息:
学号姓名年龄性别联系电话学历
1A22男123456小学
2B21男119中学
3C23男110高中
4D18女114大学
Insertinto stu values(1,’A’,22,’男’,123456,’小学’)
Insertinto stu values(2,’B’,21,’男’,119,’中学’)
Insertinto stu values(3,’C’,23,’男’,110,’高中’)
Insertinto stu values(4,’D’,18,’女’,114,’大学’)
5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
Updatestu set 学历=’大专’ where联系电话like ‘11%’
6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除
Delectfrom stu where 性别=’男’ and 姓名 like‘c%’
7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来
Select姓名,学号 fromstu where 年龄<22and 学历=’大专’
8)查询学生表的数据,查询所有信息,列出前25%的记录
Selecttop 25 percent * from stu
9)查询出所有学生的姓名,性别,年龄降序排列
Select姓名,性别 fromstu order by 年龄desc
10)按照性别分组查询所有的平均年龄
Selectavg(年龄)from stu group by 性别
三填空(3分/题) 36分(包含笔试题问题和解答答案)
1)索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。但是可以创建_249个非聚集索引索引。
2)系统存储过程_sp-helptext__是用来显示规则,默认值,未加密的存储过程,用户定义函数,触发或视图的文本
3)事务开始:beginTransction
提交事务:commitTransction
回滚事务:rollbackTransction
四问答题(5分/题) 60分(包含笔试题问题和解答答案)
1)数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?
主要数据文件(.mdf)包含数据用户收集的信息,还有数据库其他相关的信息,
日志数据文件(.ndf)存放用户对数据库的增删改查的信息,用于备份恢复使用
2)TRUNCATE TABLE 命令是什么含义?和Deletefrom 表名有什么区?
TRUNCATETABLE: 提供了一种删除表中所有记录的快速方法
Deletefrom 表名:可以删除表的一个或多条记录
3)说出以下聚合数的含义:avg,sum ,max ,min , count ,count(*)
AVG:求平均值
SUM:求和
MAX:求最大值
MIN:求最小值
COUNT(*):返回所有行数
COUNT返回满足指定条件的记录值
4)inner join 是什么意思?作用是什么?写出基本语法结构
INNERJOIN 内联接,用于返回两个表中要查询的列数据通信
Select* from 表名1inner join 表名2on 条件表达式
5)左向外联接,右向外联接,全联接的关健字如何写?
Leftouter join 左向外联接
Rightouter join 右向外联接
Fullouter join 全联接
6)子查询分为几类,说明相互之间的别
了查询分三种基本子查询:1.使用in查询返回一列或更多值
2.比较运算符,返回单个值勤做为外查询的参数
3.用exists 查询时相当于进行一次数据测试
7)实现实体完整性,实现域完整性,实现完整性(引用完整性),实现自定义完整性分别使用什么手段?
实现实体完整性:主键约束唯一约束标识列
实现域完整性:默认值约束检查约束非空属性
引和完整性:外键引用
8)视图可以更新吗?会影响到实际表吗?
视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表
9)谈谈这样几个角色,dbo , Sysadmin public
Dbo: 是数据库的拥有者,对数据库拥有所有操作的权限
Sysadmin: 可以对SQLSERVER执行任何活动
Public: 自动创建的,能捕获数据库中用户的所有默认权限
10)何为动态游标?何为静态游标?
动态游标与静态游标相对,反映结果集中所做的所有更改,
静态游标的结果集在游标打开时,建立在tempdb中,总按照游标打开时的原样显示
11)什么是存储过程?为什么存储过程要比单纯的Sql语句执行起来要快?
存储过程:是一组预先编译好的T-SQL代码
在创建存储过程时经过了语法和性能优化,执行不必重复的步骤,使用存储过程可提高运行效率
12)什么是Inserted表?什么是Deleted表?
Inserted表用于存储inserted和update语句影响的副本
Deleted表用于存储delect和update语句影响的行的副本