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