结构化查询语言(SQL)
SQL概述
SQL的内容在笔试和上机考试中均占到大约30%的比例,此外它还是查询和视图的基础,因此是学习的重点也是难点。
SQL是结构化查询语言Structure Query Language的缩写。
SQL包含了查询功能、数据定义、数据操纵和数据控制功能,在VFP中没有提供数据控制功能.
SQL主要特点
SQL是一种一体化语言。
SQL是一种高度非过程化的语言.
SQL语言非常简洁.
SQL语言可直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。
ﻬ查询功能
SELECT命令的特点:
可以自动打开数据库、表文件加以查询,而不需要事先用OPEN DATABASE或USE命令打开.
可以直接选取数据表中的数据,而不需要事先用SET RELATION命令建立关联。
当需要的索引文件不存在时,会自动建立暂存索引文件,以支持快速搜索技术(Rushmore)来查询。
其查询结果可输出到文件、表、屏幕或报表上,还可以转换成统计图表。
命令格式:SELECT —— FROM —— WHERE
可与 LIST FIELDS—— FOR —— 对照学习。
关系操作:投影,选择,联接。
说明:功能强大,语法灵活;要处理的数据表无须事先打开,通过FROM子句指明并打开.
SELECT 短语:说明要查询的数据;对应的关系操作为投影,类似于FIELDS子句。
FROM 短语:说明要查询的数据来自哪个或哪些表,可对单个表或多个表进行查询;
WHERE 短语:说明查询条件;对应的关系操作为选择,类似于FOR子句。如是多表查询还可能过该子句指明联接条件,进行联接。
GROUP BY 短语:用于对查询结果进行分组,可利用它进行分组汇总;类似于TOTAL命令.
HAVING 短语:跟随GROUP BY 使用,它用来限定分组必须满足的条件;
ORDER BY 短语:用于对查询的结果进行排序;类似于SORT命令。
示例数据库:
学生管理,包括三个表:学生,课程,选课(通过该表反映“学生”与“课程"之间“多对多”的联系.
问题:请同学们分别指出三个表的主关键字。
简单查询
简单查询基于单个表。
例:
1.查询学生信息
SELE * FROM 学生 &&“*"号代表所有列.
ﻩ类似于:
USE 学生
ﻩLIST
、姓名及生日ﻫﻩ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。雇员姓名,"领导", from 雇员 S,雇员 E where S。雇员号=E.经理
嵌套查询
嵌套查询是另一类基于多个关系的查询,此类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。
1、例:查询女生学生选课信息,包括学号,课程号,成绩。
SELE *;
FROM 选课;
WHERE 学号 IN (SELE 学号 FROM 学生 WHERE 性别=”女”)
说明:
IN:相当于集合运算符∈。
还可使用如下SQL语句:简单联接查询
SELE ,课程号,成绩;
FROM 选课 JOIN 学生 ON 选课。学号=学生.学号;
WHERE 性别="女”
2、查询有“硬盘”订购需求的订购单明细记录:这个例子要求查询订购单明细表中的
结构化查询语言SQL 来自淘豆网m.daumloan.com转载请标明出处.