SQL练习题

问题描述:
  为管理岗位业务培训信息,建立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)向学生表添加如下信息:
  学号姓名年龄性别联系电话学历
1A22123456小学
2B21119中学
3C23110高中
4D18114大学
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表用于存储insertedupdate语句影响的副本
Deleted表用于存储delectupdate语句影响的行的副本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值