1. 程式人生 > >SQL經典面試題集錦

SQL經典面試題集錦

create var nod size int 創建 mark art nbsp

1、問題背景

(1)學生表(學號,姓名,年齡,性別)

student(S#,Sname,Sage,Ssex)

(2)課程表(課程編號,課程名稱,教師編號)

course(C#,Cname,T#)

(3)成績表(學號,課程編號,分數)

student_score(S#,C#,score)

(4)教師表(教師編號,教師名稱)

teacher(T#,tname)


2、創建表

(1)學生表

Create Table

CREATE TABLE `student` (
  `S#` bigint(12) NOT NULL COMMENT ‘學號‘,
  `Sname` varchar(20) DEFAULT NULL COMMENT ‘姓名‘,
  `Sage` int(3) DEFAULT NULL COMMENT ‘年齡‘,
  `Ssex` varchar(4) DEFAULT NULL COMMENT ‘性別‘,
  PRIMARY KEY (`S#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


(2)課程表

Create Table

CREATE TABLE `cource` (
  `C#` bigint(12) NOT NULL COMMENT ‘課程編號‘,
  `Cname` varchar(20) DEFAULT NULL COMMENT ‘課程名稱‘,
  `T#` bigint(12) DEFAULT NULL COMMENT ‘教師編號‘,
  PRIMARY KEY (`C#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(3)成績表

Create Table

CREATE TABLE `student_score` (
  `S#` bigint(12) NOT NULL COMMENT ‘學號‘,
  `C#` bigint(12) NOT NULL COMMENT ‘課程編號‘,
  `score` double DEFAULT NULL COMMENT ‘分數‘,
  PRIMARY KEY (`S#`,`C#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(4)教師表

Create Table

CREATE TABLE `teacher` (
  `T#` bigint(12) NOT NULL COMMENT ‘教師編號‘,
  `tname` varchar(20) DEFAULT NULL COMMENT ‘教師名稱‘,
  PRIMARY KEY (`T#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


3、問題

(1)查詢“1”課程比“2”課程成績高的全部學生的學號;

SELECT 
  a.`S#` 
FROM
  (SELECT 
    sc.`S#`,
    sc.`score` 
  FROM
    student_score sc 
  WHERE sc.`C#` = 1) a,
  (SELECT 
    sc.`S#`,
    sc.`score` 
  FROM
    student_score sc `student_score`
  WHERE sc.`C#` = 2) b 
WHERE a.score > b.score 
  AND a.`S#` = b.`S#` ;

技術分享


(2)查詢平均成績大於60分的同學的學號和平均成績

SELECT 
  sc.`S#`,
  AVG(sc.`score`) 
FROM
  student_score sc 
GROUP BY sc.`S#` 
HAVING AVG(sc.`score`) > 60 ;
技術分享


SQL經典面試題集錦