当前位置:首页 > sqlserver测试题及答案
三sql语句测试
根据以下对表的描述要求完成SQL语句:
选课表(Register)
C_ID
S_ID
T_ID
R_Date
R_score
部门表(depD_ID
列名 R_ID D_N
类型 varchar varchar Varchar varchar datetime numeric(5,2) varchar var
意义 选课编课程编学生编教师编选课时成绩
号
号
号
号
间
学生表(Student)
T_Mail S_ID
S_Name varchar
部门编部门号
教师表(Teacher)
T_Name D_ID
课程
列名 T_ID S_Mail C_I
类型 varchar varchar Varchar varchar varchar varchar var学生邮课箱
意义 教师编教师姓部门号 教师邮学生编学生姓名
号
1、
名
箱
号
号
根据上面表的定义,写出创建教师(teacher)和部门表(dept)
的SQL语句,要求:TID定义为主键,DID定义为外键。
Create table dept (
did varchar(15) primary key, Dname varchar(15) )
Create table teacher
(tid varchar(15) primary key, tname varchar(15),
did varchar(15) references dept(did), ,tmail varchar(15) )
2、 向选课表添加一行数据:
选课编号 课程编号 学生编号 教师编号 选课时间 成绩 HYR0001 HYC001 HYS001 HYT001 2008/6/12 76 Insert into Register Values(‘HYR0001’,’HYC001’,’HYS001’,’HYT001’,’2008/6/12’,76)
3、 4、
把所有HYD01部门的老师的邮箱添加前缀“Mailto”。 列出所有教师的姓名和部门名
Update teacher set tmail=?Mailto?+tmail where did=?HYD01?
Select t.tname,d.dname from Teacher t join dept d On t.did=d.did
5、 列出每个学生的姓名和其平均成绩
Select s.sname,avg(r.rscore) From student s join register r On s.sid=r.sid Group by s.sname
6、 列出没有带课的老师的名字
Select tname from teacher Where tid not in
(select tid from register)
7、 列出教学成绩最好(老师的各科总平均成绩高)的老师的名字
Select tname from teacher
Where tid = (Select top 1 tid from register group by tid order by avg(R_score) desc)
8、 列出所有学生姓名,授课教师姓名,课程名称,选课时间,成
绩,并包含没有参加选课的学生姓名。
Select s.sname,t.tname,c.cname,r.rdate,r.rscore From register r
Join teacher t on t.tid=r.tid Join course c on r.cid=c.cid
Right outer Join student s on r.sid=r.sid (注意sname,tanme,cname属于哪个表别忘了加上)
9、 列出高于学科平均成绩的学生编号和其成绩
Select sid,rscore from register outers where rscore>
(select avg(rscore) from register inners where inners.cid=outers.cid)
10 删除姓张的学员信息
delete from student where S_Name like ?张%?
共分享92篇相关文档