结构化查询语言(SQL)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构化查询语言(SQL)

SQL概述

SQL的内容在笔试和上机考试中均占到大约30%的比例,此外它还是查询和视图的基础,因此是学习的重点也是难点。

SQL是结构化查询语言Structure Query Language的缩写。

SQL包含了查询功能、数据定义、数据操纵和数据控制功能,在VFP中没有提供数据控制功能。

SQL主要特点

1.SQL是一种一体化语言。

2.SQL是一种高度非过程化的语言。

3.SQL语言非常简洁。

4.SQL语言可直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。

查询功能

SELECT命令的特点:

1.可以自动打开数据库、表文件加以查询,而不需要事先用OPEN DATABASE或USE命令打开。

2.可以直接选取数据表中的数据,而不需要事先用SET RELATION命令建立关联。

3.当需要的索引文件不存在时,会自动建立暂存索引文件,以支持快速搜索技术(Rushmore)来查询。

4.其查询结果可输出到文件、表、屏幕或报表上,还可以转换成统计图表。

命令格式:SELECT ——FROM ——WHERE

可与LIST FIELDS——FOR ——对照学习。

关系操作:投影,选择,联接。

说明:功能强大,语法灵活;要处理的数据表无须事先打开,通过FROM子句指明并打开。

1.SELECT 短语:说明要查询的数据;对应的关系操作为投影,类似于FIELDS子句。

2.FROM 短语:说明要查询的数据来自哪个或哪些表,可对单个表或多个表进行查询;

3.WHERE 短语:说明查询条件;对应的关系操作为选择,类似

于FOR子句。如是多表查询还可能过该子句指明联接条件,进行联接。

4.GROUP BY 短语:用于对查询结果进行分组,可利用它进行分组汇总;类似于TOTAL命令。

5.HA VING 短语:跟随GROUP BY 使用,它用来限定分组必须满足的条件;

6.ORDER BY 短语:用于对查询的结果进行排序;类似于SORT 命令。

示例数据库:

学生管理,包括三个表:学生,课程,选课(通过该表反映“学生”与“课程”之间“多对多”的联系。

问题:请同学们分别指出三个表的主关键字。

一、简单查询

简单查询基于单个表。

例:

1.查询学生信息

SELE * FROM 学生&&“*”号代表所有列。

类似于:

USE 学生

LIST

2.查询男生学生的学号、姓名及生日

SELE 学号,姓名,生日FROM 学生WHERE 性别=”男”

类似于

USE 学生

LIST学号,姓名,生日FOR性别=”男”

3.查询学分大于5的课程的信息

SELE * FROM 课程WHERE 学分>5

类似于

USE 学生

LIST FOR 学分>5

4、查询学分不在6到9之间的

Sele * from 课程where 学分not between 6 and 9

二、简单联接查询

联接是关系的基本操作之一,联接查询基于多个关系的查询。

例:查询男生学生的选课信息,包括姓名,学号及成绩。

分析:本例的查询结果包括两个表“学生”与“选课”的属性,适用于联接查询。

SELE 姓名,选课.学号,成绩;

FROM 学生,选课;

WHERE 学生.学号=选课.学号AND 性别=”男”

说明:如果命令太长一行写不下可在行末加分号“:”表续行选课.学号:因为两个表中均有“学号”字段,所以必须指明所属表。

学生.学号=选课.学号:连接条件。

还可使用如下SQL语句:

SELE 姓名,选课.学号,成绩;

FROM 学生JOIN选课ON学生.学号=选课.学号;

WHERE 性别=”男”

说明:

JOIN ……ON :建立表与表之间的联接。

自连接:sele S.雇员姓名,"领导",E.雇员姓名from 雇员S,雇员

E where S.雇员号=E.经理

三、嵌套查询

嵌套查询是另一类基于多个关系的查询,此类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。

1、例:查询女生学生选课信息,包括学号,课程号,成绩。

SELE *;

FROM 选课;

WHERE 学号IN(SELE 学号FROM 学生WHERE 性别=”

女”)

说明:

IN:相当于集合运算符∈。

还可使用如下SQL语句:简单联接查询

SELE 选课.学号,课程号,成绩;

FROM 选课JOIN 学生ON 选课.学号=学生.学号;

WHERE 性别=”女”

2、查询有“硬盘”订购需求的订购单明细记录:这个例子要求查询订购单明细表中的记录,而查询条件是产品标的名称,

Sele * from 订购单明细where 产品号IN;

(sele 产品号from 产品where 名称=“硬盘”)

3、排除法查询的例子:

查询所有订购数量(即订购单中每个订购项目的数量)都在50以上的订购单的信息

Sele * from 订购单where 订单号not in;

(sele 订单号from 订购单明细where 数量〈=50)

Sele * from 订购单where 订单号not in;

(sele 订单号from 订购单明细where 数量〈=50)and 订单号in (sele 订单号from 订购单明细)

4、找出和某某产品同等价位的所有产品信息:内外层查询的同一个表,内层查询查处单价,外层查询根据这个单价查询产品信息

Sele * from 产品where 单价=;

相关文档
最新文档