常见sql语句面试题,sql面试题基本语句
sql面试题
1、忍不住想说一句,因为第一题中的字段类型是 【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select ID,NAME,ADDRESS,PHONE,LOGDATE from T
where ID in( select ID from T group by NAME having count(*)1)
order by NAME;
3、delete from T where ID not in
(select min(id) from T group by name);
4、update T
set T.ADDRESS=(select E.ADDRESS from E where E.NAME=T.NAME),
T.PHONE=(select E.PHONE from E where E.NAME=T.NAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用 top
oracle可以使用 rownum 等
---
以上,希望对你有所帮助。
SQL语句面试题
--?查询所有同学的学号、姓名、选课数、总成绩;
select?S.Sid,Sname,选课数=COUNT(Cid),总成绩=SUM(Score)
???from?Student?S?join?Sc?on?S.Sid=sc.Sid
??group?by?S.Sid,Sname
--?查询学过“叶萍”老师所教的所有课程的同学学号、姓名;
select?S.Sid,Sname
from?Student?S?join?Sc?on?S.Sid=Sc.Sid
????join?Course?C?on?C.Cid=Sc.Cid
join?teacher?T?on?T.Tid=C.Tid
where?Tname='叶萍'
??group?by?S.Sid,Sname
??????having?COUNT(distinct?C.Cid)=(select?COUNT(Cid)?from?Course?join?teacher?on?Course.Tid=teacher.Tid?where?Tname='叶萍')
--?查询课程编号"002"的成绩比课程编号“001”课程低的所有同学的学号、姓名
select?Sid,Sname
from?Student
where?Sid?in(select?A.Sid
from?Sc?A?join?Sc?B?on?A.Sid=B.Sid
where?A.Cid=1?AND?B.Cid=2?AND?A.ScoreB.Score)
--?按平均成绩高到低显示所有学生的?"数学"、"物理"两门课程的成绩,以下形式显示:学生ID,数学,物理,平均分
select?Sid,数学=max(case?when?Cname='数学'?then?Score?end),物理=max(case?when?Cname='物理'?then?Score?end),
平均分=(max(case?when?Cname='数学'?then?Score?end)+max(case?when?Cname='物理'?then?Score?end))/2
from?Sc?join?Course?C?on?Sc.Cid=C.Cid
??where?Cname?in('数学','物理')
group?by?Sid

sql语句 面试题
首先创造三个表:
学生表
create table student
{
student_id varchar2(10) not null,
student_name varchar2(50) null
};
课程表
create table course
{
course_id varchar(10) not null,
course_name varchar(100) null
};
分数表
create table score
{
student_id varchar2(10) not null,
course_id varchar2(10) not null,
course_score number(3,1) null
};
答案1:
SELECT st.student_id,st.student_name,re.course_num
FROM student st,
(SELECT sc.student_id,count(sc.student_id) course_num
FROM score sc
WHERE sc.course_score 60 or sc.course_score = 60
GROUP BY sc.student_id ) re
WHERE st.student_id = re.student_id;
答案2:
SELECT st.student_id,st.student_name
FROM student st,
(SELECT sc.student_id
FROM course co,score sc
WHERE co.course_id = sc.course_id AND course_name = '语文'
GROUP BY sc.student_id) re
WHERE st.student_id = re.student_id AND st.student_name LIKE '张%';
答案3:
SELECT st.student_id,st.student_name
FROM student st,
(SELECT sc.student_id
FROM course co,score sc
WHERE co.course_id = sc.course_id AND co.course_name = '语文' AND co.course_name = '音乐'
GROUP BY sc.student_id) re
WHERE st.student_id = re.student_id;
后三道题有点麻烦,有时间再给你解答,以上都是用Oracle专用的SQL语句查询结果集的。