SQL语句强化练习题及答案1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、简单查询
1、列出全部学生的信息。
SELECT * FROM 学生
2、列出软件专业全部学生的学号及姓名。
SELECT 学号,姓名 FROM 学生 WHERE 专业="软件"
3、列出所有必修课的课号。
SELECT DISTINCT 课号 FROM 必修课
4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。
SELECT 学号,成绩 FROM 选课 WHERE 课号="1" AND 成绩>80 ORDER BY 成绩DESC
5、列出非软件专业学生的名单。
方法一:SELECT 姓名 FROM 学生 WHERE 专业<>"软件"
方法二:SELECT 姓名 FROM 学生 WHERE NOT 专业="软件"
方法三:SELECT 姓名 FROM 学生 WHERE 专业!="软件"
6、查询成绩在70~80分之间的学生选课得分情况
方法一:SELECT * FROM 选课 WHERE 成绩>=70 AND 成绩<=80
方法二:SELECT * FROM 选课 WHERE 成绩 BETWEEN 70 AND 80
不在此范围内的查询:(注意写出和以下语句等价的语句)
SELECT * FROM 选课 WHERE 成绩 NOT BETWEEN 70 AND 80
7、列出选修1号课或3号课的全体学生的学号和成绩。
方法一:SELECT 学号,成绩 FROM 选课 WHERE 课号="1" OR 课号="3"
方法二:SELECT 学号,成绩 FROM 选课 WHERE 课号 IN ("1","3")
相反条件查询:SELECT 学号,成绩 FROM 选课 WHERE 课号 NOT IN ("1","3")
8、列出所有98级学生的学生成绩情况。
SELECT * FROM 选课 WHERE 学号 LIKE "98%"
SELECT * FROM 选课 WHERE 学号 LIKE "98_ _ _ _"
相反条件查询:SELECT * FROM 选课 WHERE 学号 NOT LIKE "98%"
9、列出成绩为空值(或不为空值)的学生的学号和课号。
答案一:SELECT 学号,课号 FROM 选课 WHERE 成绩 IS NULL
答案二:SELECT 学号,课号 FROM 选课 WHERE 成绩 IS NOT NULL
10、求出所有学生的总成绩。
SELECT SUM(成绩) AS 总成绩 FROM 选课
11、列出每个学生的平均成绩。
SELECT 学号,AVG(成绩) AS 平均成绩 FROM 选课 GROUP BY 学号
12、列出各科的平均成绩、最高成绩、最低成绩和选课人数。
SELECT 课号,AVG(成绩) AS 平均成绩,MAX(成绩) AS 最高分,;
MIN(成绩) AS 最低分,COUNT(学号) AS 选课人数 FROM 选课 GROUP BY 课号
二、连接查询
(一)简单连接
1、列出选修1号课的学生姓名及成绩。
SELECT 姓名,成绩 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课号="1"
2、列出选修1号课的学生的学号、姓名及成绩。
SELECT 学生.学号,姓名,成绩 FROM 学生 S,选课 X WHERE S.学号=X.学号 AND 课号="1"
3、求出总分大于150的学生的学号、姓名及总成绩。
SELECT 学生.学号,姓名,SUM(成绩) AS 总成绩 FROM 学生,选课;
WHERE 学生.学号=选课.学号 GROUP BY 选课.学号 HAVING SUM(成绩)>150
(二)自连接查询
1、列出那些专业相同的学生相应的姓名及专业信息。
SELECT a.姓名,b.姓名,专业 FROM 学生 a,学生 b WHERE a.学号<>b.学号 AND a.专业=b.专业
2、求至少选修1号课和2号课的学生的学号。
SELECT X.学号 FROM 选课 X,选课 Y WHERE X.学号=Y.学号 AND X.课号="1" AND Y.课号="2"
3、有以下表rate.dbf
币种1代码 C(2)、币种2代码 C(2)、买入价 N(8,4)、卖出价 N(8,4)
外汇汇率.dbf
币种1 C(4)、币种2 C(4)、买入价 N(8,4)、卖出价 N(8,4)
外汇代码.dbf
外汇名称 C(10)、外汇代码 C(10)
要求:将所有“外汇汇率”表中的数据插入rate表中并且顺序不变,由于“外汇汇率”中的币种1和币种2存放的是外币名称,而rate表中的币种1代码和币种2代码应该存放外币代码,所以插入时要做相应的改动,外币名称与外向代码的对应关系存储在“外汇代码”表中。
SELECT A.外币代码 AS 币种1代码,B.外币代码 AS 币种2代码,;
买入价,卖出价 FROM 外汇代码 A,外汇汇率,外汇代码 B;
WHERE A.外币名称=外汇汇率.币种1 AND B.外币名称=外汇汇率.币种2 INTO TABLE rate
4、假定有“雇员”表(雇员号 C(2),雇员姓名 C(6),经理号 C(2)),根据雇员关系列出上一级经理及其所领导的职员清单。(教案中的例题)
SELECT "领导",S.雇员姓名,"雇员",E.雇员姓名 FROM 雇员 S,雇员 E WHERE S.雇员号=E.经理
(三)超连接
1、列出选修1号课的学生姓名及成绩。