怎样在access表中查找无成绩的学生?
发布网友
发布时间:2022-11-24 01:09
我来回答
共2个回答
热心网友
时间:2023-09-23 23:42
1、首先,打开access数据库软件,再打开你的表格文件。
2、首先,点击【创建】,再选择查询选项组里的【查询向导】。
3、这时弹出新建查询对话框,选择【查找不匹配项查询向导】。点击【确定】。
4、选择【学生信息表】,点击【下一步】。
5、选择另一个表即【学生成绩表】,点击【下一步】。
6、接着,点击左边的【姓名】,再单击右边的【姓名】,在点击中间那个图标,最后点击【下一步】。
7、接着,在新的界面里直接点击选择【下一步】。
8、这时,可以改一下查询表的名称,如果不需要改变就直接点击【完成】即可。
9、这样,没有考试成绩的就可以查询出来了。
热心网友
时间:2023-09-23 23:43
回答这个问题前,我们需要先明确数据结构,否则只能泛泛而谈。假设数据库有如下两张表。
学生表(学号,姓名)
成绩表(学号,科目,分数)
如果一个学生他没有成绩,那么他的学号就不会出现在成绩表里面。我们只要选择出学生表里学号与成绩表里的学号存在非交集的那些记录就可以了。据此我们可以编写并运行以下几种SQL选择查询语句:
1) 使用not in关键字
select * from 学生表 where 学号 not in (select 学号 from 成绩表);
2) 使用非存在not exists关键字
select * from 学生表 where not exists (select 1 from 成绩表 where 学生表.学号=成绩表.学号);
3) 使用左连接和is null关键字
select a.* from 学生表 a left join 成绩表 b on a.学号 = b.学号 where b.学号 is null;
说明:
第1)种写法逻辑上非常容易理解,但是请注意在碰到大数据表时应避免使用,因为此时它运行效率会很低,数据库可能需要几个钟头甚至更长时间才能返回结果集。
第2)种写法逻辑上不太容易理解,它在[学号]字段有可利用的索引的情况下,运行效率非常高,可列为首选,但是碰到大数据表时,如果没有可被利用的索引其运行效率将会非常的差,此时也必须避免使用它。
第3)种写法利用外连接时系统会对没有相关数据表字段的记录值赋空值(注意空值null不等于0长度字符串"",这里不做展开)这一特性选出两表之间的非交集。注意使连接时,可能会返回大量的重复记录行,如果这种情况发生,我们需要对结果集做去重复处理。