几道简单的 MySQL 面试题

需求

领导让我出几个 MySQL 的面试题,搞硬件运维的,会几个简单的就行,所以上网搜罗自己整理了一下。

现有数据

CREATE DATABASE IF NOT EXISTS TEST DEFAULT CHARSET UTF8MB4 COLLATE UTF8MB4_GENERAL_CI;
USE TEST;
CREATE TABLE IF NOT EXISTS STUDENT (
    ID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    NAME CHAR(10) NOT NULL
);
INSERT INTO STUDENT(NAME) VALUES('张三'),('李四'),('李四'),('王五'),('郑六'),('张三')('二麻子');
CREATE TABLE IF NOT EXISTS COURSE(
ID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
NAME CHAR(20) NOT NULL
);
INSERT INTO COURSE(NAME) VALUES('语文'),('数学');
CREATE TABLE IF NOT EXISTS STUDENT_COURSE(
    SID INT UNSIGNED,
    CID INT UNSIGNED,
    SCORE INT UNSIGNED NOT NULL,
    FOREIGN KEY (SID) REFERENCES STUDENT(ID),
    FOREIGN KEY (CID) REFERENCES COURSE(ID),
    PRIMARY KEY(SID, CID)
);
INSERT INTO STUDENT_COURSE VALUES(1,1,80),(1,2,90),(2,1,90),(2,2,70),(3,1,80),(3,2,90),(4,1,90),(4,2,70),(5,1,80),(5,2,90),(6,1,90),(6,2,70);

题目

查询重名的学生ID和名字

SELECT ID,NAME FROM TEST.STUDENT
WHERE NAME IN
(SELECT NAME FROM TEST.STUDENT GROUP BY NAME HAVING(COUNT(NAME)>1))
ORDER BY NAME;
'''2、查询所有学生是否及格'''
SELECT ID,NAME,AVG(SCORE) AS `AVG_SCORE`,(CASE WHEN AVG(SCORE) < 60 THEN 'NO' ELSE 'YES' END) AS `IS_PASS`
FROM TEST.STUDENT AS T1, TEST.STUDENT_COURSE AS T2
WHERE T1.ID = T2.SID
GROUP BY (NAME)
'''3、查询所有科目成绩均大于80分的学生'''
SELECT DISTINCT ID,NAME FROM TEST.STUDENT AS T1,TEST.STUDENT_COURSE AS T2
WHERE T1.ID = T2.SID
AND SID NOT IN (
    SELECT SID FROM TEST.STUDENT_COURSE
    WHERE SCORE < 80
);

查询每个学生的总成绩,结果列出学生姓名和总成绩 如果使用下面的sql会过滤掉没有成绩的人

SELECT NAME,SUM(SCORE) TOTAL
FROM TEST.STUDENT T1,TEST.STUDENT_COURSE T2
WHERE T1.ID = T2.SID
GROUP BY SID;

更保险的做法应该是使用 左外连接

SELECT NAME,SUM(SCORE)
FROM TEST.STUDENT T1 LEFT JOIN TEST.STUDENT_COURSE T2
ON T1.ID = T2.SID
GROUP BY SID;
sql MySQL 面试
封面
打赏
相关推荐
  • Typecho 完美实现文章置顶的思路

    目前我在Typecho圈里看见的文章置顶实现都是使用两个 Select,第一个Select是查询置顶的文章,第二个Select是查询剩余的文章。这样实现有BUG,而且也不优雅。置顶x篇文章首页文章数就变成 pageSize + x 了。我的方法就是添加一个用于排序的字段。法...
    2020-05-29 49 0 0
  • Typecho 不完美更换域名

    网上千篇一律的方法1、首先进入Typecho后台,然后在基本设置里更换站点地址。2、进入数据库管理工具(mysql命令行,phpmyadmin等)在数据库里面执行下面的语句来更换文章中旧域名地址。UPDATE `typecho_contents` SET `text` = ...
    2020-04-28 159 0 0
  • 数据库查询中 is not null 和<>null是不等价的

    下午修改Typecho主题想把首页文章过滤的功能集成到主题,高级查询其实很简单直接继承Widget_Abstract_Contents以及其子类都可以,重写一下select()方法就可以了。传过来的参数使用逗号隔开,explode函数分割就行。class XMP_Post_...
    2020-03-13 129 0 0

发表评论

;-) :| :smile: :sad: :razz: :oops: :o :lol: :grin: :cry: :cool: :???:

评论列表(暂无评论)