单选题 “客户”表和“贷款”表的结构如下:
客户(客户号,姓名,出生日期,身份证号)
贷款(贷款编号,银行号,客户号,贷款金额,贷款性质)
如果要检索从来没有贷过款的客户信息,正确的SQL语句是______。
  • A.SELECT 客户.* FROM 客户 LEFT JOIN 贷款;
    ON 客户.客户号=贷款.客户号 WHERE 贷款.客户号=NULL
  • B.SELECT 客户.* FROM 客户 LEFT JOIN 贷款;
    ON 客户.客户号=贷款.客户号 WHERE 贷款.客户号 IS NULL
  • C.SELECT 客户.* FROM 客户 RIGHT JOIN 贷款;
    ON 客户.客户号=贷款.客户号 WHERE 贷款.客户号=NULL
  • D.SELECT 客户.* FROM 客户 RIGHT JOIN 贷款;
    ON 客户.客户号=贷款.客户号 WHERE 贷款.客户号 IS NULL
【正确答案】 B
【答案解析】[解析] 判断从来没有贷过款的客户信息,即判断客户号字段是否为空值,空值判断应该用IS NULL格式,故A和C选项错误。从SELECT标准语句的完整语法格式中抽出与连接运算相关的语法格式:SELECT……FROM <数据库表1> INNER|LEFT|RIGHT|FULL JOIN <数据库表2> ON <连接条件> WHERE……其中,LEFT JOIN为左连接,在结果表中包含第1个表中满足条件的所有记录;如果有在连接条件上匹配的元组,则第2个表返回相应值,否则第2个表返回空值。RIGHT JOIN为右连接,在结果表中包含第2个表中满足条件的所有记录;如果有在连接条件上匹配的元组,则第1个表返回相应值,否则第1个表返回空值。查询没有贷款的客户,应该采用“客户LEFT JOIN 贷款”或“贷款RIGHT JOIN 客户”的形式。这两种形式使得查询结果为在客户表存在客户号但在贷款表客户号为NULL的记录信息,这是因为若客户没有贷款,则该客户记录在客户表中,而不存在于贷款表。“客户LEFT JOIN贷款”或“贷款RIGHT JOIN客户”使得在结果表中包含客户表满足条件(贷款.客户号 IS NULL)的所有记录,故B选项正确。若客户RIGHT JOIN贷款则查询结果为空,故D选项错误。