亚洲狠狠久久综合一区二区三区

<progress id="73rr5"></progress>
<tbody id="73rr5"><pre id="73rr5"></pre></tbody>

    <tbody id="73rr5"></tbody><dd id="73rr5"><track id="73rr5"></track></dd>
    PHP面試指南2020-sql考察題

    成人自考/成人高考/教師資格證/會計從業資格證/建造師/造價師,一個小程序就夠啦。

    給定四個表:

    • student(學生表)

    • teacher(老師表)

    • course(課程表)

    • sc(成績表)

    根據題目要求,寫出SQL語句。

    「問題列表」

    1、查詢每個學生的學號、姓名和每門課的成績2、查詢都學過2號同學(sid=2)學習過的課程的同學的學號3、查詢“語文(cid=1)”課程比“數學(cid=2)”課程成績高的所有學生的學號;4、查詢平均成績大于60分的同學的學號和平均成績;5、查詢所有同學的學號、姓名、選課數、總成績;6、查詢姓“李”的老師的個數;7、查詢沒學過“葉平”老師課的同學的學號、姓名; 
    8、查詢學過“語文(cid=1)”并且也學過“數學(cid=2)”課程的同學的學號、姓名; 
    9、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;10、查詢課程編號“數學(cid=2)”的成績比課程編號“語文(cid=1)”課程低的所有同學的學號、姓名;11、查詢所有課程成績小于60分的同學的學號、姓名; 
    12、查詢沒有學全所有課的同學的學號、姓名; 
    13、按平均成績從高到低顯示所有學生的“語文“、“數學”、“英語”三門的課程成績,按如下形式顯示: 學生
        ID,語文,數學,英語,有效課程數,有效平均分 
    14、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分 
    15、查詢男生、女生人數, 以如下形式顯示:男生人數,女生人數16、查詢課程名稱為“數學”,且分數低于60的學生姓名和分數 
    17、查詢兩門以上不及格課程的同學的學號及其平均成績;18、檢索“cid=4”課程分數小于60,按分數降序排列的同學學號

    1、查詢每個學生的學號、姓名和每門課的成績;

    (1)利用隱式內聯,只輸出兩表中都有的字段

    SQL語句:
    SELECT 
     student.sid AS 學生ID, 
        student.sname AS 學生姓名, 
        (SELECT course.cname FROM course WHERE course.cid=sc.cid) AS 課程名稱, 
        sc.score AS 成績 
    FROM student,sc 
    WHERE student.sid = sc.sid

    (2)利用左連接,假如左表有,右表沒有,則按左表為準,右表缺省字段置為NULL

    SQL語句:

    SELECT 
     student.sid AS 學生ID, 
        student.sname AS 學生姓名, 
        (SELECT course.cname FROM course WHERE course.cid=sc.cid) AS 課程名稱, 
        sc.score AS 成績 
    FROM student
    LEFT JOIN sc
    ON student.sid = sc.sid

    因為 student 表 和 sc 表沒有冗余字段,所以(1)和(2)兩種查詢方法結果一致。

    2、查詢都學過2號同學(sid=2)學習過的課程的同學的學號

    SQL語句:

    SELECT sid 
    FROM sc 
    WHERE cid IN (SELECT cid FROM sc WHERE sid=2) GROUP BY sid 
    HAVING COUNT(*) = (SELECT COUNT(*) FROM sc WHERE sid=2)

    3、查詢“語文(cid=1)”課程比“數學(cid=2)”課程成績高的所有學生的學號;

    SQL語句:

    SELECT a.sid 
    FROM 
    (SELECT sid, score FROM sc WHERE cid=1) a, (SELECT sid, score FROM sc WHERE cid=2) b 
    WHERE a.sid=b.sid AND a.score > b.score;

    4、查詢平均成績大于60分的同學的學號和平均成績;

    SQL語句:

    SELECT sid, AVG(score) FROM `sc` 
    GROUP BY sid 
    HAVING AVG(score) > 60;

    5、查詢所有同學的學號、姓名、選課數、總成績;

    SQL:

    SELECT a.sid, a.sname, COUNT(a.cid), SUM(a.score) FROM(SELECT student.sid, student.sname, sc.cid, sc.score FROM student JOIN sc WHERE student.sid=sc.sid) a
    GROUP BY sid;

    6、查詢姓“周”的老師的個數;

    SQL:

    SELECT COUNT(*) FROM `teacher` WHERE tname LIKE '周%';

    7、查詢沒學過“葉平”老師課的同學的學號、姓名;

    SQL:

    # 參考答案
    SELECT student.sid,student.sname
    FROM student  
    WHERE sid NOT IN 
     (
         SELECT DISTINCT(sc.sid) 
         FROM sc, course, teacher 
         WHERE  sc.cid=course.cid AND teacher.tid=course.tid AND teacher.tname='葉平'
        );

    8、查詢學過“語文(cid=1)”并且也學過“數學(cid=2)”課程的同學的學號、姓名;

    SQL:

    SELECT student.sid,student.sname 
    FROM student, sc 
    WHERE student.sid=sc.sid AND sc.cid=1 AND 
    EXISTS ( SELECT * FROM sc AS sc_2 WHERE sc_2.sid=sc.sid AND sc_2.cid=2);

    9、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;

    SQL:

    SELECT student.sid,student.sname 
    FROM student 
    WHERE sid IN 
      (
       SELECT sid 
       FROM sc ,course ,teacher 
       WHERE sc.cid=course.cid AND teacher.tid=course.tid AND teacher.tname='葉平' 
       GROUP BY sid
       HAVING COUNT(sc.cid)=
          (
              SELECT COUNT(cid) 
              FROM course,teacher
              WHERE teacher.tid=course.tid AND teacher.tname='葉平'
          )
      );

    10、查詢課程編號“數學(cid=2)”的成績比課程編號“語文(cid=1)”課程低的所有同學的學號、姓名;

    SQL:

    SELECT sid,sname 
    FROM student
    WHERE sid=(
     SELECT a.sid 
     FROM 
      (SELECT sid, score FROM sc WHERE cid=1) a, 
      (SELECT sid, score FROM sc WHERE cid=2) b 
     WHERE a.sid=b.sid AND a.score > b.score)

    「11」、查詢所有課程成績小于60分的同學的學號、姓名;

    SQL:

    SELECT sid,sname 
    FROM student 
    WHERE sid NOT IN 
    (
        SELECT student.sid FROM student AS s,sc WHERE s.sid=sc.sid AND score>60);

    12、查詢沒有學全所有課的同學的學號、姓名;

    SQL:

    SELECT student.sid, student.sname
    FROM student,sc
    WHERE student.sid=sc.sid
    GROUP BY sid 
    HAVING COUNT(cid) < (SELECT COUNT(cid) FROM course)

    13、按平均成績從高到低顯示所有學生的“語文“、“數學”、“英語”三門的課程成績,按如下形式顯示: 學生ID,語文,數學,英語,有效課程數,有效平均分

    SQL:

    SELECT sid AS 學生ID,(SELECT score FROM sc WHERE sc.sid=sc_2.sid AND cid=1) AS 語文,(SELECT score FROM sc WHERE sc.sid=sc_2.sid AND cid=2) AS 數學,(SELECT score FROM sc WHERE sc.sid=sc_2.sid AND cid=3) AS 英語,COUNT(*) AS 有效課程數, AVG(score)FROM sc AS sc_2
    GROUP BY sid
    ORDER BY AVG(sc_2.score)

    14、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

    SQL:

    SELECT cid AS 課程ID, MAX(score) AS 最高分, MIN(score) AS 最低分
    FROM sc
    GROUP BY cid

    15、查詢男生、女生人數 :以如下形式顯示:男生人數,女生人數

    SQL:

    SELECT 
    (SELECT COUNT(ssex) FROM student GROUP BY ssex HAVING ssex='男') AS 男生人數, (SELECT COUNT(ssex) FROM student GROUP BY ssex HAVING ssex='女') AS 女生人數;

    16、查詢課程名稱為“數學”,且分數低于60的學生姓名和分數

    SQL:

    SELECT student.sid, student.sname
    FROM student,sc
    WHERE student.sid=sc.sid AND cid=(SELECT cid FROM course WHERE cname='數學') AND score > 60

    17、查詢兩門及兩門以上不及格課程的同學的學號及其平均成績

    SQL:

    SELECT sid, AVG(score) FROM sc WHERE sid IN (SELECT sid FROM sc WHERE score < 60 GROUP BY sid HAVING COUNT(*)>1) GROUP BY sid;

    18、檢索“cid=4”課程分數小于60,按分數降序排列的同學學號

    SQL:

    SELECT sid FROM sc WHERE cid=4 AND score < 60 ORDER BY score DESC
    訪客
    郵箱
    網址

    Top 亚洲狠狠久久综合一区二区三区
    <progress id="73rr5"></progress>
    <tbody id="73rr5"><pre id="73rr5"></pre></tbody>

      <tbody id="73rr5"></tbody><dd id="73rr5"><track id="73rr5"></track></dd>