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短语中可以使用别名       B)SELECT短语中只能包含表中的列及其构成的表达式

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’)

D)SELECT 学号 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短语的正确叙述是

A)HAVING短语必须与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.课程号

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

select查询的更多相关文章

  1. 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

    早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:

  2. 为什么忘记commit也会造成select查询的性能问题

    今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...

  3. [NHibernate]N+1 Select查询问题分析

    目录 写在前面 文档与系列文章 N+1 Select查询问题分析 总结 写在前面 在前面的文章(延迟加载,立即加载)中都提到了N+1 Select的问题,总觉得理解的很不到位,也请大家原谅,这也是为什 ...

  4. access数据库select查询top时无效的解决办法

    access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...

  5. MySQL之select查询、function函数

    一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 ; //as对列重命名 //as ...

  6. select查询的性能

    为什么忘记commit也会造成select查询的性能问题 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据, ...

  7. 把一个select查询结果插入到一个表(可选指定字段和值实例)

    把一个select查询结果插入到一个表(可选指定字段和值实例) insert into  bak (cc,yf) select cc,9 from ket insert into bak (cc,yf ...

  8. Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)

    Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...

  9. select查询原理

    原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...

  10. mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map

    用mybaits 写一个关联查询 查询商品表关联商品规格表,并查询规格表中的数量.价格等,为了sql重用性,利用 association 节点 查询 结果并赋值报错 商品表的mapper文件为Gooo ...

随机推荐

  1. Glusterfs3.3.1DHT(hash分布)源代码分析

    https://my.oschina.net/uvwxyz/blog/182224 1.DHT简介 GlusterFS使用算法进行数据定位,集群中的任何服务器和客户端只需根据路径和文件名就可以对数据进 ...

  2. 让“懒惰” Linux 运维工程师事半功倍的 10 个关键技巧!

    好的Linux运维工程师区分在效率上.如果一位高效的Linux运维工程师能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间 ...

  3. IntelliJ IDEA神器使用技巧笔记

    1. Alt + 数字 打开idea 快捷键打开相应的窗口: 高效定位代码: 无处不在的跳转 1.项目间的跳转: Windows ->   ctrl+alt+[   /  ] 2.文件之间的跳转 ...

  4. CUDA C Programming Guide 在线教程学习笔记 Part 10【坑】

    ▶ 动态并行. ● 动态并行直接从 GPU 上创建工作,可以减少主机和设备间数据传输,在设备线程中调整配置.有数据依赖的并行工作可以在内核运行时生成,并利用 GPU 的硬件调度和负载均衡.动态并行要求 ...

  5. Python正则总结

    re总结 限定符(就是控制重复次数) ? 匹配前面的子表达式零次或一次.例如,"do(es)?" 可以匹配 "do" . "does" 中的 ...

  6. windows的类似shell 命令操作

    一,类似linux的grep命令 参考网站:https://www.cnblogs.com/zxy1992/p/4372717.html windows执行cmd命令查找sql进程: C:\Users ...

  7. 10. 数据模型(ER图)转为sql脚本,要求导出的字段都是大写的

    1.进入Tools-->Execute Commands-->Edit/Run Script,执行以下脚本即可实现所有字段转为大写; Option Explicit ValidationM ...

  8. 使用REGINI修改注册表权限

    regini regset.ini 就行啦 regset.ini 是你要修改的数据 1.注册表修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr ...

  9. requireJS-初识

    浅谈requireJS 2016-04-26 21:44 by 猴子猿, 726 阅读, 0 评论, 收藏, 编辑 项目中大都使用模块化开发,requireJS作为AMD模块开发的典范,所以有必要学习 ...

  10. mysql 慢查询记录方法

    ========================================================= 方法一: 这个方法我正在用,呵呵,比较喜欢这种即时性的. Mysql5.0以上的版本 ...