数据库相关笔试题目

1.为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过5门的学员学号和所属单位
1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 
select s#,sn from s where s# in (select s# from sc where c#=(select c# from c where cn='税收基础')) 

2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位 
select sn,sd from s where s# in (select s# from sc where c#='C2') 

3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位 
select sn,sd from s where s# not in (select s# from sc where c#='C5') 

4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 
select sn,sd from s where s# in (select s# from sc where c# = all(select c# from c) group by s#) 

5. 查询选修了课程的学员人数 
select count(distinct s#) from SC 

6. 查询选修课程超过5门的学员学号和所属单位 
select s#,sd from s where s# in (select s# from sc group by s# having count(*)>5) 
View Code

 2.已知test表有id和score字段,现用sql语句求出score最大值(不允许使用max)

select tc.score from test  as tc where tc.score not  in
 (select ta.score from test as ta ,test as tb where ta.score <tb.score)
View Code

3.如何提高模糊查询性能,简单描述

1.尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.
解决办法:
a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列就可以直接用等于来关联了。
b、直接修改后台——根据输入条件,先查出符合条件的供应商,并把相关记录保存在一个临时表里头,然后再用临时表去做复杂关联
2.索引问题
法则:不要在建立的索引的数据列上进行下列操作:
  ◆避免对索引字段进行计算操作
  ◆避免在索引字段上使用not,<>,!=
  ◆避免在索引列上使用IS NULL和IS NOT NULL
  ◆避免在索引列上出现数据类型转换
  ◆避免在索引字段上使用函数
  ◆避免建立索引的列中使用空值。
3.复杂操作
  部分UPDATE、SELECT 语句 写得很复杂(经常嵌套多级子查询)——可以考虑适当拆成几步,先生成一些临时数据表,再进行关联操作
等等面试笔试回答一些应该可以了
View Code

4.sql server中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值

Select MAX(ID) AS ID FROM 表

 
原文地址:https://www.cnblogs.com/jlf19881031/p/3549834.html