用SQL语句查询选修课程名称中有数据库课程的学生的学号

那天在咖啡馆里,坐在邻桌的那个人在电脑屏幕前挠着头,嘀咕着学号、课程等等。
我一看,心想,这不就是一个数据库查询任务吗?
你提到的想法,从学生表中选择学生编号(从可选课程表中选择学生编号,其中 course='database'),实际上是一种非常简单的方法。
首先使用子查询确定选择数据库课程的学生人数,然后参考主表检索所有相应的学生信息。
简单明了,效率取决于手表的大小。
上次我尝试的时候,选课列表只有几百个,学生列表有一千左右,转眼间就出现了。
如果表比较大,比如“课程选择”表有5 万个条目,“学生”表有1 0万个条目,则可能需要一些时间,可能是十秒或二十秒,具体取决于服务器的普及程度。

等一下,还有一件事,如果使用子查询是可以的,但是如果可选课程表中的学号很多,比如几十万,子查询可能会很慢。
这时,你可以考虑使用join并指定一个学生日程。
从学生表中,将选修课程表加入到学生表中。
学生人数=选修课表。
学号,选修课程表在哪里。
当然=“数据库”。
有时,连接速度更快,尤其是在索引做得很好的情况下。
上次我用join查类似的表,只用了几秒钟,比子查询快多了。

我突然想到这个查询的目的还蛮实际的。
例如,如果学校想要将一门课程的最终成绩发布到数据库中,它必须首先知道哪些学生选择了该课程。
或者,如果您想统计数据库中修读一门课程的学生人数,此查询也可以帮助您。
就是那个会话='数据库'。
如果课程名称拼写错误或缺少单词,结果将不正确。
记得有一次,一位同事把课程名称写成了“数据库”(多了一个空格),但没有找到。
当时真是哭笑不得,花了好久才发现问题。

该网站位于学校的信息中心。
我记不清具体的日子了,但大概是去年的深秋。
当时暖气刚刚关掉,办公室里有点冷。
他穿着厚外套,还在键盘上打字。
我给了他一个建议。
使用诸如“database%”或诸如“%database”可能会更安全,以避免这些空格引起的问题。

总之,这个查询思路是正确的。
您可以使用它或加入它。
关键要看数据量和索引条件。
使用它时要小心,不要让空格或拼写错误等小细节阻碍您。

就像那天咖啡馆里的那个人一样,他最初对学号和课程名称感到困惑。
后来他稍微修改了一下查询条件,增加了索引,速度立刻就提高了。
说到这里,他最后表示稍后会去检查一下AI班的学生。
我在想,这很有趣。
AI课上的学生更聪明吗?

写select-sql命令,查询1996年出生的学生的学号,姓名和出生日期

直接打开 Management Studio。
创建一个新查询。
输入 SQL:SELECT number, name,birthday FROM test1 WHERE YEAR(birthday) = 1 9 9 6 单击运行。
看看结果。

注意:请检查数据库test1 中的生日字段类型,看看YEAR函数是否适用。

SQL查询出有成绩不及格的学生的学号,姓名,课程名。

多表关联可以找到不及格学生的信息。

tbStudent 表包含学生编号和姓名。
tbScore 表包含学生 ID、课程 ID 和分数。
tbCourse 表包含课程编号和名称。

SQL语句: SELECT s.student_id, s.name, c.course_name 作者:tb学生 JOIN tbScore sc ON s.student_id = sc.student_id 订阅 tbCourse c ON sc.course_id = c.course_id WHERE sc.score < 6>学号对应student_id字段。
名称与名称字段匹配。
课程名称对应于 course_name 字段。

请注意,只有当您的分数低于 6 0 分时才会进行检查。
例如,2 02 3 年春季,如果分数低于6 0分,这些学生将被列入名单。

不确定,但这就是经验。
你自己掂量一下吧。

查询参加考试但不及格的学生学号、姓名、课程名称及成绩

上周 检查一下。
看看那些考试不及格的学生。

使用 SQL。
选择学号、姓名、课程名称、成绩 来自学生表、成绩表、课程表 其中成绩表.学号=学生表.学号。
成绩表.课程编号 = 课程表.课程编号。
且分数<6>三张表: 学生表、成绩表、课程表。

首先使用学号连接学生列表和成绩列表。
然后将成绩列表和课程表连接到课程编号。

过滤条件:分数小于6 0。

结果包括:学号、姓名、课程名称和成绩。

这样你就可以看到谁失败了。
我不确定这部分,但类似的东西。
由你决定。