小白代码

1、表架构

student(sid,sname,sage,ssex) 学生表 
course(cid,cname,tid) 课程表 
sC(sid,cid,score) 成绩表 
teacher(tid,tname) 教师表

2、建表sql语句

 
 1 CREATE TABLE student 
 2   ( 
 3      sid INT PRIMARY KEY NOT NULL,
 4      sname VARCHAR(30), 
 5      sage INT, 
 6      ssex VARCHAR(8) 
 7   )  
 8  
 9 CREATE TABLE course 
10   ( 
11      cid INT PRIMARY KEY NOT NULL, 
12      cname VARCHAR(30), 
13      tid INT 
14   ) 
15  
16 CREATE TABLE sc 
17   ( 
18      sid INT NOT NULL, 
19      cid INT NOT NULL, 
20      score INT 
21   )  
22  
23 CREATE TABLE teacher 
24   ( 
25      tid INT PRIMARY KEY NOT NULL, 
26      tname VARCHAR(30) 
27   )
 

3、问题:
(1)查询“30001”课程的所有学生的学号与分数; 

SELECT sid,score FROM sc WHERE cid="30001"

(2)查询“001”课程比“002”课程成绩高的所有学生的学号与分数;

SELECT a.sid,a.score FROM (SELECT sid,score FROM sc WHERE cid="30001") a,

      (SELECT sid,score FROM sc WHERE cid="30002") b

     WHERE a.score>b.score AND a.sid=b.sid

(3)查询平均成绩大于60分的同学的学号和平均成绩;

SELECT sid,AVG(score)

FROM sc

GROUP BY sid HAVING AVG(score)>60

(4)查询所有同学的学号、姓名、选课数、总成绩

 
SELECT s.sid AS "学号", s.sname AS "姓名", COUNT(sc.cid) AS "课程数目", SUM(sc.score) AS "总分数"

FROM student s, sc sc

WHERE s.sid=sc.sid

GROUP BY s.sid
 

(5)查询姓“李”的老师的个数;

select count(distinct(Tname))

  from teacher

  where tname like '李%';

(6)查询学过“张三”老师课的同学的学号、姓名

SELECT s.sid AS "学号", s.sname AS "姓名"

FROM student s, sc sc, course c, teacher t

WHERE s.sid=sc.sid AND c.cid=sc.cid AND t.tid=c.tid AND t.tname="张三"


(7)查询没有学过“张三”老师课的同学的学号、姓名

 
SELECT s.sid, s.sname

FROM student s

WHERE s.sid NOT IN (

SELECT s.sid

FROM student s, sc sc, course c, teacher t

WHERE s.sid=sc.sid AND c.cid=sc.cid AND t.tid=c.tid AND t.tname="张三"

)
 

猜你喜欢

转载自www.cnblogs.com/zwb129/p/11643220.html