SQL基本语句和语句强化(全)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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号课的学生姓名及成绩。

方法一:(使用简单连接查询格式)

SELECT 姓名,成绩FROM 学生,选课WHERE 学生.学号=选课.学号AND 课号="1"

方法二:(使用内部连接格式)

SELECT 姓名,成绩FROM 学生INNER JOIN 选课ON 学生.学号=选课.学号WHERE 课号="1"

方法三:内部连接的INNER短语可以省略。(与方法二等价)

相关文档
最新文档