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
☆ 2005年4月份考试试题:
(30)在SQL的SELECT查询结果中,消除重复记录的方法是______。
A)通过指定主关系键 B)通过指定惟一索引 C)用DISTINCT子句 D)使用HAVING子句
(31)在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是______。
A)SELECT子句中可以包含表中的列和表达式 B)SELECT子句中可以使用别名
C)SELECT子句规定了结果集中的列顺序 D)SELECT子句中列的顺序应该与表中列的顺序一致
☆ 2006年4月份考试试题:
(12)SQL SELECT语句的功能是 【12】 。 (数据查询)
☆ 2007年9月份考试试题:
填空:
(8)在SQL的SELECT 查询时,使用【8】子句实现消除查询结果中的重复记录。(DISTINCT)
☆ 2007年4月份考试试题:
(17)以下有关SELECT短语的叙述中错误的是
A)SELECT短语中可以使用别名 B)SELECT短语中只能包含表中的列及其构成的表达式
C)SELECT短语规定了结果集中的列顺序
D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定
☆ 2007年4月份考试试题:
(20)在SQL的SELECT查询的结果中,消除重复记录的方法是
A)通过指定主索引实现 B)通过指定惟一索引实现
C)使用DISTINCT短语实现 D)使用WHERE短语实现
☆ 2008年4月份考试试题:
(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 成绩)
☆ 2005年9月份考试试题:
(9)在SQL的SELECT查询中使用 【9】 子句消除查询结果中的重复记录。(DISTINCT)
☆ 2007年4月份考试试题:
(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’)
☆ 2008年4月份考试试题:
(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
☆ 2007年4月份考试试题:
(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个或多个字符,另外还有一个通配符“_”表示一个字符或汉字。
3.SQL中“!=”及“NOT”的应用。
例3:查询毕业去向不是教师的学生信息。
SELECT * FROM 档案 WHERE 毕业去向!=”教师”
等价
SELECT * FROM 档案 WHERE NOT(毕业去向=”教师”)
☆ 2008年4月份考试试题:
(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 性别=”男”
☆ 2006年4月份考试试题:
(13)"职工"表有工资字段,计算工资合计的SQL语句是 SELECT 【13】 FROM 职工 (SUM(工资))
☆ 2006年9月份考试试题:
(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
☆ 2005年4月份考试试题:
(32)下列关于SQL中HAVING子句的描述,错误的是______。
A)HAVING子句必须与GROUP BY子句同时使用 B)HAVING子句与GROUP BY子句无关
C)使用WHERE子句的同时可以使用HAVING子句D)使用HAVING子句的作用是限定分组的条件
☆ 2005年9月份考试试题:
(14)在SQL的SELECT语句进行分组计算查询时,可以使用【14】子句来去掉不满足条件的分组。(HAVING)
☆ 2006年4月份考试试题:
(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 产品名称
☆ 2007年4月份考试试题:
(15)SQL的SELECT语句中,“HAVING<条件表达式>”用来筛选满足条件的
A)列 B)行 C)关系 D)分组
(19)在SELECT语句中,以下有关HAVING短语的正确叙述是
A)HAVING短语必须与GROUP BY短语同时使用
B)使用HAVING短语的同时不能使用WHERE短语
C)HAVING短语可以在任意的一个位置出现
D)HAVING短语与WHERE短语功能相同
☆ 2007年9月份考试试题:
(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
☆ 2006年9月份考试试题:
(10)在 SQL 语句中空值用【10】表示。(IS NULL)
☆ 2007年9月份考试试题:
(6)如下命令查询雇员表中“部门号“字段为空值的记录
SELECT * FROM 雇员WHERE部门号【6】。 (IS NULL)
☆ 2008年4月份考试试题:
(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语句功能完全相同!
☆ 2005年9月份考试试题:
(15)设有s(学号, 姓名, 性别)和sc(学号, 课程号, 成绩)两个表,下面SQL的SELECT语句检索选修的每门
课程的成绩都高于或等于85分的学生的学号、姓名和性别。
SELECT 学号, 姓名, 性别 FROM sWHERE 【15】 ( SELECT * FROM sc;
WHERE sc.学号 = s.学号 AND成绩 < 85 ) (NOT EXIST)
☆ 2005年4月份考试试题:
第(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,SCWHERE 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
☆ 2006年4月份考试试题:
(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 档案.学号=借阅.学号
☆ 2007年4月份考试试题:
(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查询的更多相关文章
- 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复
早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:
- 为什么忘记commit也会造成select查询的性能问题
今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...
- [NHibernate]N+1 Select查询问题分析
目录 写在前面 文档与系列文章 N+1 Select查询问题分析 总结 写在前面 在前面的文章(延迟加载,立即加载)中都提到了N+1 Select的问题,总觉得理解的很不到位,也请大家原谅,这也是为什 ...
- access数据库select查询top时无效的解决办法
access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...
- MySQL之select查询、function函数
一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 ; //as对列重命名 //as ...
- select查询的性能
为什么忘记commit也会造成select查询的性能问题 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据, ...
- 把一个select查询结果插入到一个表(可选指定字段和值实例)
把一个select查询结果插入到一个表(可选指定字段和值实例) insert into bak (cc,yf) select cc,9 from ket insert into bak (cc,yf ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- select查询原理
原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...
- 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 ...
随机推荐
- 常用模块:re ,shelve与xml模块
一 shelve模块: shelve模块比pickle模块简单,只有一个open函数,所以使用完之后要使用f.close关闭文件.返回类似字典的对象,可读可写;key必须为字符串,而值可以是pytho ...
- IDEA在编辑时提示could not autowire
IDEA在编辑时提示could not autowire 原创 2016年05月14日 10:53:38 28338 在开发中我再applicationContext-dao.xml中加入了mappe ...
- Coxph model Pvalue Select
I am calculating cox propotional hazards models with the coxph function from the survival package. ...
- python入门-函数(二)
1 函数传递参数 def greet_users(names): """向列表中的每个用户都发处问候""" for name in name ...
- mock单测
mockMvc执行流程总结: 整个过程:1.mockMvc.perform执行一个请求:2.MockMvcRequestBuilders.get("/user/1")构造一个请求3 ...
- OpenCL 查询平台和设备
▶ 查询平台和设备的代码以结果,放在这里方便以后逐渐扩充和查询(没有营养) #include <stdio.h> #include <stdlib.h> #include &l ...
- 理解无偏估计(unbiased estimation)
判断一个估计量“好坏”,至少可以从以下三个方面来考虑: 无偏估计 有效性 一致性 参考内容: 如何理解无偏估计量?https://www.matongxue.com/madocs/808.html 衡 ...
- 7. myeclipse10反编译插件安装
- can't load package the specified module could not be found
can't load package the specified module could not be found 用 Dependency Walker 2.2Dependency Walker ...
- 可视化库-seaborn-调色板(第五天)
1. 基础的调色板的演示 color_palette() 设置传入的任何颜色,不传使用默认颜色,set_palette() 设置所有图的颜色# 6种主题 # 1 deep# 2 muted# 3 p ...