• select查询


    4.2 

    SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行。

    以下表为以后的例子中使用表:

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

    §4.2.1  简单查询

        由SELECT和FROM构成的无条件查询,或由SELECT、FROM和WHERE构成的条件查询。

        一般格式:

        SELECT [DISTINCT] 字段名表 FROM [数据库名!]表名

        SELECT [DISTINCT] 字段名表 FROM [数据库名!]表名 WHERE 条件

        (※ DISTINCT短语功能是去掉重复值)

        例1检索(查询)档案关系(档案表)中的姓名。

        SELECT 姓名 FROM 档案

        例2检索(查询)档案关系(档案表)中的不重复的姓名。

        SELECT  DISTINCT  姓名 FROM 档案

        例3检索(查询)档案关系(档案表)中的姓名和性别。

        SELECT 姓名,性别 FROM 档案

        例4检索(查询)档案关系(档案表)中的所有列。

        SELECT *  FROM 档案

        例5查询档案表中的性别是男的学生信息。

        SELECT *  FROM 档案 WHERE 性别=”男”

        例6查询档案表中的性别是女并且毕业成绩大于450分的学生学号、姓名、毕业成绩。

    SELECT  学号,姓名,毕业成绩  FROM 档案 WHERE 性别=”女” AND 毕业成绩>450

    ☆ 20054月份考试试题

    (30)在SQL的SELECT查询结果中,消除重复记录的方法是______。

    ��A)通过指定主关系键  B)通过指定惟一索引  C)用DISTINCT子句  D)使用HAVING子句

    (31)在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是______。

    ��A)SELECT子句中可以包含表中的列和表达式  �B)SELECT子句中可以使用别名

    ��C)SELECT子句规定了结果集中的列顺序    ��D)SELECT子句中列的顺序应该与表中列的顺序一致

     

    ☆ 20064月份考试试题

    (12)SQL SELECT语句的功能是  【12】  。   (数据查询)

     

    ☆ 20079月份考试试题

    填空:

    (8)在SQL的SELECT 查询时,使用8子句实现消除查询结果中的重复记录。(DISTINCT)

    ☆ 20074月份考试试题

    (17)以下有关SELECT短语的叙述中错误的是

         A)SELECT短语中可以使用别名       BSELECT短语中只能包含表中的列及其构成的表达式

         C)SELECT短语规定了结果集中的列顺序

         D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定

    ☆ 20074月份考试试题

    (20)在SQL的SELECT查询的结果中,消除重复记录的方法是

    A)通过指定主索引实现         B)通过指定惟一索引实现

      C)使用DISTINCT短语实现     D)使用WHERE短语实现

    ☆ 20084月份考试试题

    (7)SQL的SELECT语句中,使用 DISTINCT 子句可以消除结果中的重复记录。

    §4.2.2  简单的联接查询

        基于多个关系(表)的查询。

        一般格式:

        SELECT [DISTINCT] 字段名表 FROM [数据库名!]表名1, [数据库名!]表名2[,[数据库名!]表名3…]

        WHERE 各表间的联接条件 [AND 其它查询条件]

        例1根据下面的表查询学生的学号、姓名、性别、总分和平均分    az。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

        SELECT  档案.学号,姓名,性别,总分,平均分  FROM 档案,成绩 WHERE 档案.学号=成绩.学号

        例2查询女同学生的学号、姓名、性别、总分和平均分。

        SELECT  档案.学号,姓名,性别,总分,平均分  FROM 档案,成绩;

    WHERE 档案.学号=成绩.学号 WHERE 性别=”女”

        例3查询档案表中的所有列加上总分和平均分。

    SELECT  档案.*,总分,平均分  FROM 档案,成绩 WHERE 档案.学号=成绩.学号

    §4.2.3  嵌套查询

        查询结果出自一个表但条件却涉及另外的多个相关表。

        一般格式:

        SELECT [DISTINCT] 字段名表 FROM [数据库名!]表名 WHERE 字段名 IN (SELECT 字段名

    FROM  另一表名)

        例1根据下面的表查询考试学生的姓名(在成绩表中有学号的档案表学生姓名)。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

           SELECT 姓名 FROM 档案 WHERE 学号 IN (SELECT 学号 FROM 成绩)

        例2查询学号是“10002”、“10005”的学生姓名。

           SELECT 姓名 FROM 档案 WHERE 学号 IN (”10002”,”10005”)

           等价

           SELECT 姓名 FROM 档案 WHERE 学号=”10002” OR学号=”10005”

        例3查询没有参加考试学生的姓名(在成绩表中找不到学号的档案表学生姓名)。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

           SELECT 姓名 FROM 档案 WHERE 学号 NOT  IN (SELECT 学号 FROM 成绩)

    ☆ 20059月份考试试题

    (9)在SQL的SELECT查询中使用 【9】 子句消除查询结果中的重复记录。(DISTINCT)

    ☆ 20074月份考试试题

    (31)设有学生选课表SC(学号,课程号,成绩),用SQL检索同时选修课程号为“C1”和“C5”的学生的学号的正确命令是        

         A)SELECT 学号 FROM SC WHERE 课程号=’C1’ AND 课程号=’C5’

         B)SELECT 学号 FROM SC WHERE 课程号=’C1’ AND 课程号=;

            (SELECT 课程号 FROM SC WHERE 课程号=’C5’)

         C)SELECT 学号 FROM SC WHERE 课程号=’C1’ AND 学号=;

            (SELECT 学号 FROM SC WHERE 课程号=’C5’)

         DSELECT 学号 FROM SC WHERE 课程号=’C1’ AND 学号;

    IN(SELECT 学号 FROM SC WHERE 课程号=’C5’)

    ☆ 20084月份考试试题

    (20)设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),查询2007年所签订单信息,并按金额降序排序,正确的SQL命令是

      A)SELECT * FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 DESC

      B)SELECT * FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 ASC

      C)SELECT * FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 ASC

      D)SELECT * FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 DESC

    §4.2.4  几个特殊运算符

        1查询的条件是在什么范围之内可以使用BETWEEN…AND… 。

        例1根据下面的表查询毕业成绩在400至500间的学生信息。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

              SELECT  *  FROM 档案 WHERE 毕业成绩 BETWEEN  400  AND  500

    ☆ 20074月份考试试题

    (18)在SQL语句中,与表达式“年龄 BETWEEN 12 AND 46”功能相同的表达式是

         A)年龄>=12 OR <=46          B)年龄>=12 AND <=46

         C)年龄>=12 OR 年龄<=46      D)年龄>=12 AND 年龄<=46

        2字符串匹配查询可以使用LIKE运算符。

        例2查询毕业去向是***师的学生信息。

              SELECT  *  FROM 档案 WHERE 毕业去向 LIKE ”%师”

        ※ 通配符“%”表示0个或多个字符,另外还有一个通配符“_”表示一个字符或汉字。

        3SQL中“!=”及“NOT”的应用。

        例3查询毕业去向不是教师的学生信息。

              SELECT  *  FROM 档案 WHERE  毕业去向!=”教师”

              等价

              SELECT  *  FROM 档案 WHERE  NOT(毕业去向=”教师”)

    ☆ 20084月份考试试题

    (8)在SQL的WHERE子句的条件表达式中,字符串匹配(模糊查询)的运算符是 LIKE

    §5.2.5  排序

        将查询结果排序可以使用ORDER BY短语,格式如下:

         ORDER BY 字段名1[ASC|DESC][,字段名2[ASC|DESC]……]

        例1根据下面的表查询学生的姓名、性别、毕业成绩,查询结果按毕业成绩降序。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

              SELECT 姓名,性别,毕业成绩 FROM 档案 ORDER  BY 毕业成绩 DESC

        例2查询档案表的学生信息,查询结果先按性别升序,性别相同再按毕业成绩降序。

              SELECT  *  FROM 档案 ORDER  BY 性别 ASC,毕业成绩 DESC

    §4.2.6  简单的计算查询

        SQL语言功能完备,它不仅具有一般的检索能力,而且还有计算方式的检索,用于计算机检索的函数有:

        ① COUNT—计数       ② SUM—求和      ③ AVG—计算平均值

    ④ MAX—求最大值     ⑤ MI

    N—求最小值

    这些

    这些函数可以用在SELECT短语中对查询结果进行计算。

        例1查询档案表中学生数。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

        SELECT  COUNT(*)  AS 学生数  FROM  档案

        例2统计毕业去向个数(档案表中有几种去向)。

              SELECT  COUNT(DISTINCT 毕业去向)  AS 毕业去向个数 FROM 档案

        例3查询档案表中学费总和。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

              SELECT  SUM(学费) AS 学费总计 FROM 档案

        例4查询档案表中毕业成绩平均分。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

              SELECT  AVG(毕业成绩)  平均分 FROM 档案

        例5查询档案表中毕业成绩的最高分和最低分。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

              SELECT  MAX(毕业成绩) 最高分,MIN(毕业成绩) 最低分 FROM 档案

        例6查询档案表中男生的人数、毕业成绩的最高分和最低分。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

              SELECT  COUNT(*)  人数,MAX(毕业成绩) 最高分,;

    MIN(毕业成绩) 最低分 FROM 档案 WHERE 性别=”男”

    ☆ 20064月份考试试题

    (13)"职工"表有工资字段,计算工资合计的SQL语句是 SELECT  【13】  FROM 职工      (SUM(工资))

    ☆ 20069月份考试试题

    (19)在 SQL SELECT 语句的 ORDER BY 短语中如果指定了多个字段,则________。

    A)无法进行排序 B)只按第一个字段排序 C)按从左至右优先依次排序 D)按字段排序优先级依次排序

    §4.2.7  分组与计算查询

        在实际应用中,利用GROUP  BY分组进行计算机查询使用的更广泛。其格式:

            GROUP  BY  分组字段[,分给字段……][HAVING 分组条件]

        例1查询档案表中各个毕业去向中的人数和毕业成绩平均分。

    档案(学号,姓名,性别,民族,学费,毕业成绩,毕业去向)

              SELECT  毕业去向,COUNT(*)  人数,AVG(毕业成绩)  平均分;

    FROM 档案 GROUP  BY 毕业去向

        例2查询档案表中各个毕业去向中人数多于3人的人数和毕业成绩平均分。

              SELECT  毕业去向,COUNT(*)  人数,AVG(毕业成绩)  平均分;

    FROM 档案 GROUP  BY 毕业去向 HAVING 人数>3

        例3查询档案表中男同学各个毕业去向中人数多于3人的人数和毕业成绩平均分。

              SELECT  毕业去向,COUNT(*)  人数,AVG(毕业成绩)  平均分;

    FROM 档案 WHERE 性别=”男” GROUP  BY 毕业去向 HAVING COUNT(*)>3

    ☆ 20054月份考试试题

    (32)下列关于SQL中HAVING子句的描述,错误的是______。

    ��A)HAVING子句必须与GROUP BY子句同时使用�� B)HAVING子句与GROUP BY子句无关

    ��C)使用WHERE子句的同时可以使用HAVING子句��D)使用HAVING子句的作用是限定分组的条件

    ☆ 20059月份考试试题

    (14)在SQL的SELECT语句进行分组计算查询时,可以使用【14】子句来去掉不满足条件的分组。(HAVING)

    ☆ 20064月份考试试题

    (30)假设”订单”表中有订单号、职员号、客户号和金额字段,正确的SQL语句只能是

    A)SELECT 职员号 FROM 订单 GROUP BY 职员号 HAVING COUNT(*)>3 AND AVG_金额>200

    B)SELECT 职员号 FROM 订单 GROUP BY 职员号 HAVING COUNT(*)>3 AND AVG(金额)>200

    C)SELECT 职员号 FROM 订单 GROUP,BY 职员号HAVING COUNT(*)>3 WHERE AVG(金额)>200

    D)SELECT 职员号 FROM 订单 GROUP BY职员号 WHERE COUNT(*)>3 AND AVG_金额>200

    (32)假设同一名称的产品有不同的型号和产地,则计算每种产品平均单价的SQL语句是

      A)SELECT 产品名称,AVG(单价) FROM 产品 GROUP BY 单价

      B)SELECT 产品名称,AVG(单价) FROM 产品 ORDER BY 单价

      C)SELECT 产品名称,AVG(单价) FROM 产品 ORDER BY 产品名称

      D)SELECT 产品名称,AVG(单价) FROM 产品 GROUP BY 产品名称

     

    ☆ 20074月份考试试题

    (15)SQL的SELECT语句中,“HAVING<条件表达式>”用来筛选满足条件的

         A)列        B)行     C)关系      D)分组

    (19)在SELECT语句中,以下有关HAVING短语的正确叙述是

         AHAVING短语必须与GROUP BY短语同时使用

         B)使用HAVING短语的同时不能使用WHERE短语

         C)HAVING短语可以在任意的一个位置出现

         D)HAVING短语与WHERE短语功能相同

     

    ☆ 20079月份考试试题

    (7)在SQL的SELECT查询中,HAVING字句不可以单独使用,总是跟在7子句之后一起使用。(GROUP BY)

    §4.2.8  利用空值查询(IS NULL

        例1查询档案表中各个毕业成绩是空的学生信息。

    SELECT  *  FROM 档案 WHERE 毕业成绩 IS  NULL

        例2查询档案表中各个毕业成绩不是空的学生信息。

    SELECT  *  FROM 档案 WHERE 毕业成绩 IS  NOT  NULL

    ☆ 20069月份考试试题

    (10)在 SQL 语句中空值用【10】表示。(IS NULL)

    ☆ 20079月份考试试题

    (6)如下命令查询雇员表中“部门号“字段为空值的记录

    SELECT * FROM 雇员WHERE部门号6。  (IS NULL)

    ☆ 20084月份考试试题

    (11)在SQL中,要查询表S在AGE字段上取空值的记录,正确的SQL语句为:

         SELECT * FROM S WHERE  AGE IS NULL

    §4.2.11 使用量词和谓词的查询

        1. 量词查询格式: <表达式><比较运算符>[ANY|SOME|ALL](子查询)

    实例说明:

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

    查询比毕业去向是教师中任何一个毕业成绩高或相等的学生信息。

           SELECT * FROM 档案 WHERE 毕业成绩>=ANY(SELECT 毕业成绩 FROM;

           档案 WHERE 毕业去向=”教师”)

           SELECT * FROM 档案 WHERE 毕业成绩>=SOME(SELECT 毕业成绩 FROM;

           档案 WHERE 毕业去向=”教师”)

           SELECT * FROM 档案 WHERE 毕业成绩>= (SELECT MIN(毕业成绩) FROM;

           档案 WHERE 毕业去向=”教师”)

         以上三个SQL语句功能完全相同!

    查询比毕业去向是教师中所有毕业成绩都高的学生信息。

           SELECT * FROM 档案 WHERE 毕业成绩>ALL(SELECT 毕业成绩 FROM;

           档案 WHERE 毕业去向=”教师”)

           SELECT * FROM 档案 WHERE 毕业成绩> (SELECT MAX(毕业成绩) FROM;

           档案 WHERE 毕业去向=”教师”)

         以上两个SQL语句功能完全相同!

        2. 谓词查询格式: [NOT] EXISTS(子查询)

    实例说明:

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

        查询参加考试学生的姓名

          SELECT  姓名  FROM 档案 WHERE EXISTS(SELECT * FROM 成绩;

          WHERE 成绩.学号=档案.学号)

         SELECT  姓名  FROM 档案 WHERE 学号 IN(SELECT 学号 FROM 成绩)

         以上两个SQL语句功能完全相同!

        查询没有参加考试学生的姓名

          SELECT  姓名  FROM 档案 WHERE NOT EXISTS(SELECT * FROM 成绩;

          WHERE 成绩.学号=档案.学号)

         SELECT  姓名  FROM 档案 WHERE 学号 NOT IN(SELECT 学号 FROM 成绩)

         以上两个SQL语句功能完全相同!

    ☆ 20059月份考试试题

    (15)设有s(学号, 姓名, 性别)和sc(学号, 课程号, 成绩)两个表,下面SQL的SELECT语句检索选修的每门

    课程的成绩都高于或等于85分的学生的学号、姓名和性别。

    SELECT 学号, 姓名, 性别 FROM  s�WHERE 【15】 ( SELECT * FROM sc;

    WHERE sc.学号 = s.学号 AND成绩 < 85 )    (NOT EXIST)

    ☆ 20054月份考试试题

    第(34)~(35)题使用如下3个数据库表:

    ��学生表:S(学号,姓名,性别,出生日期,院系)

    ��课程表:C(课程号,课程名,学时)

    ��选课成绩表:SC(学号,课程号,成绩)

    ��在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。

    (34)用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是______。

    ��A)SELECT 学号,姓名 FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.学号=S.学号;

     AND 成绩<85)

    ��B)SELECT 学号,姓名 FROM S WHERE NOT EXISTS(SELECT * FROM SC WHERE SC.学号=S.学号;

     AND 成绩>=85)

    ��C)SELECT 学号,姓名 FROM S,SC WHERE S.学号=SC.学号 AND 成绩>=85

    ��D)SELECT 学号,姓名 FROM S,SC WHERE S.学号=SC.学号 AND ALL 成绩>=85

    (35)用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是______。

    ��A)SELECT S.学号,姓名,平均成绩 FROM S,SC�WHERE S.学号=SC.学号;

    ��   GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 平均成绩 DESC

    ��B)SELECT 学号,姓名,AVG(成绩) FROM S,SC WHERE S.学号=SC.学号AND COUNT(*)>=5;

    ��  GROUP BY 学号 ORDER BY 3 DESC

    ��C)SELECT S.学号,姓名,AVG(成绩) 平均成绩 FROM S,SC WHERE S.学号=SC.学号;

    AND COUNT(*)>=5 GROUP BY S.学号 ORDER BY 平均成绩 DESC

    ��D)SELECT S.学号,姓名,AVG(成绩) 平均成绩 FROM S,SC WHERE S.学号=SC.学号;

    ��   GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 3 DESC

    ☆ 20064月份考试试题

    (34)设有s(学号,姓名,性别)和sc(学号,课程号,成绩)两个表,如下SQL语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别,正确的是

       A)SELECT 学号,姓名,性别 FROM s WHERE EXISTS(SELECT * FROM SC WHERE SC.学号=s.学号AND成绩<=85)

       B)SELECT 学号,姓名,性别 FROM S WHERE NOT EXISTS(SELECT * FROM SC WHERE SC.学号=s.学号;

     AND 成绩<=85)

       C)SELECT 学号,姓名,性别 FROM S WHERE EXISTS(SELECT * FROM SC WHERE SC.学号=S.学号 AND 成绩>85)

       D)SELECT 学号,姓名,性别 FROM S WHERE NOT EXISTS(SELECT * FROM SC WHERE SC.学号=S.学号;

    AND 成绩<85)

    §4.2.12 超联接查询

        前面我们学的联接只是查询出满足联接条件的信息,而超联接查询功能更加强大,可以根据需要查询出更多联接情况的信息,有四种联接情况的格式:

        1.普通联接(内部联接)

        基本格式:SELECT …… FROM 左表  INNER JOIN 右表 ON 联接条件 [WHERE 其它条件]

        例:

        例1根据下面的表查询学生的学号、姓名、性别、总分和平均分。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

              SELECT档案.学号,姓名,性别,总分,平均分  FROM 档案 INNER JOIN 成绩;

           ON 档案.学号=成绩.学号

         其中INNER JOIN 也可以写成 JOIN,与下面的查询结果相同,内部联接只是查询出满足联接条件的:

              SELECT  档案.学号,姓名,性别,总分,平均分  FROM 档案,成绩;

           WHERE 档案.学号=成绩.学号

        例2根据下面的表查询男学生的学号、姓名、性别、总分和平均分。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

              SELECT档案.学号,姓名,性别,总分,平均分  FROM 档案 INNER JOIN 成绩;

           ON 档案.学号=成绩.学号 WHERE 性别=”男”

         与下面的查询结果相同:

              SELECT  档案.学号,姓名,性别,总分,平均分  FROM 档案,成绩;

           WHERE 档案.学号=成绩.学号 AND 性别=”男”

        2.左联接

        基本格式:SELECT …… FROM 左表  LEFT JOIN 右表 ON 联接条件 [WHERE 其它条件]

        除满足联接条件的记录出现在查询结果中外,左表中不满足联接条件的记录也出现在查询中,而相关的右表查询字段值是NULL。

        例:根据下面的表查询所有学生的学号、姓名、性别和在成绩表中相应的总分和平均分。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

              SELECT档案.学号,姓名,性别,总分,平均分  FROM 档案 LEFT  JOIN 成绩;

           ON 档案.学号=成绩.学号

        3.右联接

        基本格式:SELECT …… FROM 左表  RIGHT  JOIN 右表 ON 联接条件 [WHERE 其它条件]

        除满足联接条件的记录出现在查询结果中外,右表中不满足联接条件的记录也出现在查询中,而相关的左表查询字段值是NULL。

        例:根据下面的表查询学生的学号、姓名、性别和成绩表中所有的总分和平均分。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

              SELECT档案.学号,姓名,性别,总分,平均分  FROM 档案 RIGHT  JOIN 成绩;

           ON 档案.学号=成绩.学号

        4.全联接

        基本格式:SELECT …… FROM 左表  FULL  JOIN 右表 ON 联接条件 [WHERE 其它条件]

        查询的左右表各个字段的所用值全部显示,有满足联接条件的记录在同行输出,不满足联接条件的字段相应列将显示为NULL。

        例:根据下面的表查询所有学生的学号、姓名、性别及成绩表中所有的总分和平均分。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    成绩(学号,数学,语文,外语,总分,平均分)

              SELECT档案.学号,姓名,性别,总分,平均分  FROM 档案 FULL  JOIN 成绩;

           ON 档案.学号=成绩.学号

        注意:超联接查询中多个表联接时,要注意FROM后中间表是连接前后表的纽带必是与前后表都有联接关系的,另外FROM后表名的顺序与条件ON的顺序是相反的。

        例:根据下面的表查询借书学生的学号、姓名及借的书名。

    档案(学号,姓名,性别,民族,毕业成绩,毕业去向)

    图书(编号,书名,出版社)

    借阅(编号,借出日期,学号)

              SELECT档案.学号,姓名,书名  FROM 档案 INNER JOIN 借阅 INNER JOIN 图书;

           ON 借阅.编号=图书.编号 ON 档案.学号=借阅.学号

    ☆ 20074月份考试试题

    (32)设有学生表S(学号,姓名,性别,年龄)、课程表 C(课程号,课程名,学分)和学生选课表 SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的。SQL命令是       

     A)SELECT学号,姓名,课程名,成绩 FROM S,SC,C WHERE S.学号=SC.学号 AND SC.学号=C.学号

     B)SELECT 学号,姓名,课程名,成绩 FROM (S JOIN SC ON S.学号=SC.学号)JOIN C ON SC.课程号=C.课程号

     C)SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON S.学号=SC.学号 ON SC.课程号=C.课程号

     DSELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON SC.课程号=C.课程号 ON S.学号=SC.学号

  • 相关阅读:
    一点一点学ASP.NET系列
    深入理解JavaScript系列
    MVVM模式应用体会
    SQL查询oracle的nclob字段
    CSLA多语言设置
    用2个无线路由器桥接实现扩大无线范围方法
    DevExpress的GridControl控件设置自定义显示方法
    android配置开发环境
    warning MSB3162: 所选的“Microsoft Report Viewer 2012 Runtime”项需要“Microsoft.SqlServer.SQLSysClrTypes.11.0”。在“系统必备”对话框中选择缺少的系统必备组件,或者为缺少的系统必备组件创建引导程序包。
    GDI+实现双缓冲绘图方法一
  • 原文地址:https://www.cnblogs.com/wangprince2017/p/7677872.html
Copyright © 2020-2023  润新知