vf第四章关系数据库标准语言SQL
第4课关系数据库标准语言SQL
在SELECT子句中可用DISTINCT关键字去掉重复值。
Visual FoxPro数据库开发培训教程
2)指定筛选条件
可在WHERE子句中指定记录筛选条件,只有满足 条件的记录的指定字段才会出现在查询结果中。
Visual FoxPro数据库开发培训教程
3)对查询结果排序
在查询命令中可用ORDER BY子句设置排序字段 ,其语法格式如下: ORDER BY 字段1 [ASC | DESC] [, 字段2 [ASC | DESC] ……]
Visual FoxPro数据库开发培训教程
4)使用ALL和TOP关键字
在SELECT子句中可用ALL和TOP关键字来控制 输出结果。ALL(默认值)表示输出符合条件的 所有记录,TOP关键字用于指定输出符合条件的 前几条记录。语法格式如下: TOP n [PERCENT]
第4课 关系数据库标准语言SQL
本课要点 具体要求 本课导读 上机练习
Visual FoxPro数据库开发培训教程
本课要点
SQL数据查询 SQL数据操纵 SQL数据定义
Visual FoxPro数据库开发培训教程
具体要求
掌握SELECT查询命令 掌握INSERT插入命令 掌握UPDATE更新命令 掌握DELETE删除命令 掌握ALTER修改命令 掌握CREATE定义命令 掌握DROP删除命令
Visual FoxPro数据库开发培训教程
本课导读
SQL(结构化查询语言,Structured Query Language)是所有关系数据库的标准语言。标准 SQL包括数据查询(SELECT命令)、数据定义 (CREATE,DROP和ALTER命令)、数据操纵 (INSERT,UPDATE和DELETE命令)和数据控 制(GRANT和REVOKE命令)功能。
第4章 关系数据库标准语言SQL
4.4.4 嵌套查询
在一个查询中可以嵌套一个或多 个查询,从而完成复杂的查询任务。 被嵌套的内层查询我们习惯上称 之为子查询。 子查询一般作为外层查询的查询条件。
16:40:41
例1(10-11):在学生档案表中查询与 “张文”在一个专业的学生。
SELECT 姓名,性别,专业; FROM 学生档案 WHERE; 专业=(SELECT 专业 FROM 学生档案; WHERE 姓名=„张文’)
ORDER BY 指定查询结果的显示顺序。 例:
SELECT * FROM 学生档案 ORDER BY 学号 DESC
ASC——升序、DESC——降序
16:40:41
4.4.6 分组汇总查询
使用GROUP BY子句进行查询分组。 在分组的基础上使用函数或表达式可以完
成一些统计汇总工作。
16:40:41
16:40:41
例:分别求出学生成绩表中高数、英语、 计算机三科的总分。
SELECT SUM(高数)高数总分, ; SUM(英语) 英语总分,SUM(计算机) 计; 算机总分 FROM 学生成绩
16:40:41
例:查询出学生档案表中学生所属专业 的个数。 SELECT COUNT(DISTINCT 专业) ; FROM 学生档案 例:查询出学生成绩表中高数最高分。 SELECT MAX(高数) FROM 学生成绩
16:40:41
SQL的特点
1. 是一种一体化语言,包含了数据定义、 数据操纵、数据控制等功能 2. 高度的非过程化,不需要告诉计算机 “怎样做”,只要说明“做什么” 3. 语言简洁,只有很少几条命令,接近自 然语言 4. 可交互式用,又可嵌入程序设计语言中
16:40:41
第4章 关系数据库标准语言SQL4(1)
供应商 供应商号
订购单 职工号
供应商号 订购单号 订购日期
1
(六)分组及计算查询 SQL语言是完备的,也就是说,只要数据按关系方式存入数据库, 语言是完备的,也就是说,只要数据按关系方式存入数据库, 语言是完备的 就能有构造合适的SQL命令把它检索出来。事实上,SQL不仅具有一 命令把它检索出来。 就能有构造合适的 命令把它检索出来 事实上, 不仅具有一 计算方式的检索 般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、 般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、 检索某个仓库中职工的最高工资值等。用于计算检索的函数有: 检索某个仓库中职工的最高工资值等。用于计算检索的函数有: 1.COUNT——计数 . 计数 2.SUM ——求和 . 求和 3.AVG ——计算平均值 . 计算平均值 4.MAX ——求最大值 . 求最大值 5.MIN ——求最小值 . 求最小值 这些函数可以用在SELECT短语中对查询结果进行计算。 短语中对查询结果进行计算。 这些函数可以用在 短语中对查询结果进行计算
例28.列出职工全部记录并计算全体职工 . 的平均工资和工资总和( 的平均工资和工资总和(使用 COMPUTE)。 )。
结果是: 结果是: WH2 E1 1220
E3 E4 E6 E7 1210 1250 1230 1250 avg ==== 1232 sum ==== 6160
SELECT 仓库号,职工号,工资 仓库号,职工号, FROM 职工 COMPUTE AVG(工资), ),SUM(工资); (工资), (工资);
职工
仓库号 职工号 工资
上一E3 1210 WH1 E7 1250 avg ==== 1230 sum ==== 2460 WH2 E1 1220 WH2 E4 1250
VF国考教案第四章SQL
第四章关系数据库标准语言SQL4.1SQL概述特点:一体化,包括数据定义、数据查询、数据操纵、数据控制。
飞过程化。
非常简洁。
可用命令交互方式执行也可嵌入到程序设计语言中以程序方式使用。
命令动词4.2查询功能Select (主动词后接字段名称) from(来源)where(满足条件)group by (分组)having (与group结合使用为满足条件order by(排序字段)4.2.1简单查询(主要针对单表进行的查询)例4.1 select 工资from 职工例4.2 select * from 仓库期中*表示所有字段例4.3select 职工号from 职工where 工资>1230例4.4select distinct 仓库号from 职工where 工资>1210例4.5select 职工号from 职工;where 工资<1250 and (仓库号=”wh1”or 仓库号=”wh2”) 期中;表示续行符号4.2.2 简单的连接查询(基于多个表的查询)例4.6 select 职工号,城市from 职工,仓库;Where (工资>1230) and (职工.仓库号=仓库.仓库号)期中.表示所属关系的属性即字段名称例4.6select 职工号,城市from 仓库,职工;where 面积>400 and 职工.仓库号=仓库.仓库号4.2.3嵌套查询(结果出自一个关系,但相关条件却涉及多个关系)例4.8 select 城市from 仓库where 仓库号in;(select 仓库号from 职工where 工资=1250)例4.9 select * from 仓库where 仓库号not in;(select 仓库号from 职工where 工资<=1210)由于武汉仓库中没有职工则改进为:select * from 仓库where 仓库号not in;(select 仓库号from 职工where 工资<=1210);and 仓库号in(select 仓库号from 职工)例4.10 select 职工号from 职工where 工资=;(select 工资from 职工where 职工号=”e4”)4.2.4 几个特殊的运算符Between and ,like(两者主要使用在where条件中)例4.11 select * from 职工where 工资between 1220 and 1240期中Between and 课使用and 进行串并例4.12 select * from 供应商where 供应商名like “%公司”期中通配符%表示0个或者多个字符,另外还有个_表示单个字符。
第四章VF关系数据库标准语言SQL教案
第四章关系数据库标准语言SQLSQL:是结构化查询语言,它包括数据查询、数据定义、数据操纵、数据控制四部分。
但在VF中只绍介查询、定义、操纵三个方面。
SQL命令动词:SQL功能命令动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE一、查询功能1、SQL语言的核心是查询。
查询的基本形式:SELECT <字段名/表达式> FROM <表名/视图名> WHERE <条件> 由于表是由行和列组成就像数学中所学的坐标由X轴和Y轴构成,所需确定某个点需要说明X 为多少Y为多少。
而表中需要查询某些数据就必需指明行和列,所以在查询时:1FROM<表名/视图名>:说明查询的数据来自于所需要的表或视图。
若某于多个表时,各个表之间用逗号隔开。
2SELECT<字段名/表达式>:说明从表或视图中所查询结果是哪些字段名或表达式的值(各字段名或表达式之间用逗号隔开)即针对表的列来操作(限定列)。
3WHERE<条件>:说明从表或视图中所查询结果是哪些行即记录针对表的行来操作(限定行)。
关于其它短语的说明:短语说明表名.* 来自于某(些)表的所有字段(属性)DISTINCT 去掉查询结果中的重复记录(元组)IN 相当于数学集合“∈”只需属于其中一个元素(值)就是满足条件;NOT IN则不属于其中任意一个元素(值)就满足条件BETWEEN…AND 表示…和…之间,注意和第二章BETWEEN()函数的区别LIKE 字符串匹配运算符,注意通配符是“%”和“_”与第二章LIKE()函数区别ORDER BY 对指定某个(些)字段排序,只能对最终的查询结果排序,不能用于子查询GROUP BY用于分组计算查询(指定分组依据)HAVING对GROUP BY 分组计算查询的结果进一步的加以限定即限定分组(对分组之后的限定),必须跟GROUP 连用,不能单独使用。
第四章关系数据库标准语言sql(3)
三、表结构的修改
例1 为学生表增加一个字符型的政治面貌字段
ALTER TABLE 学生 ADD 政治面貌 C(8)
例2 修改选课表中的成绩字段的有效性规则为成 绩大于等于零小于等于100 100。 绩大于等于零小于等于100。
ALTER TABLE 选课 ALTER 成绩 N ; CHECK 成绩>=0 AND 成绩<=100 ; 成绩>=0 成绩<=100 ERROR”成绩应该在 成绩应该在0 100之间 之间” ERROR 成绩应该在0至100之间”
一、插入
2、格式二: 格式二: INSERT INTO dbf_name FROM ARRAY ArrayName|FROM MEMVAR ArrayName说明从指定的数组中插入记 FROM ARRAY ArrayName说明从指定的数组中插入记 录值; MEMVAR说明根据同名的内存变量来插入 录值;FROM MEMVAR说明根据同名的内存变量来插入 记录值,如果同名的变量不存在, 记录值,如果同名的变量不存在,那么相应的字段 为默认值或空值。 为默认值或空值。 例1:dimension dd(10) dd(1)=“WH4 WH4” dd(1)= WH4 dd(2)=“E7" dd(2)= E7" dd(3)=1500 …… insert into 职工 from array dd
二、表的删除
格式: 格式: DROP TABLE table_name 说明: table_name指定的 说明:直接从磁盘上删除 table_name指定的 表文件。 表文件。 注意:删除数据库中的表时, 注意:删除数据库中的表时,最好该数据库 处于打开状态。 处于打开状态。 例: DROP TABLE 职工
VF 关系数据库标准语言S Q L
关系数据库标准语言S Q L1、SQL是结构化的查询语言,是一种高度非过程化的语言。
查询是其核心。
注意:数据定义一般是对数据表操作,数据操纵一般是对表中的记录进行操作2、查询功能格式:SELE字段名……&&说明要查询的数据FROM数据表名(有联系的多个数据表名,有公共域)&&数据来源哪些表ON 联接的字段名WHERE连接条件……AND 条件……&&说明查询条件GROUP BY 分组(字段名)HAVING 分组条件&&查询结果分组ORDER BY 排序字段&&查询结果排序成绩管理数据库有以下三个数据库表:学生(学号C,姓名C,性别C,年龄N,系C……)选课(学号C,课程号C,成绩N……)课程(课程号C,课程名C……)1基于单个数据表,SELE…FROM …WHERE…(类似VF命令LIST FOR 条件)SELE 后面接要查询输出的字段名,多个用逗号分隔,全部可以用* FROM 后面是查询的数据表(单个数据表)WHERE 后面跟查询条件教材P130SELE 工资FROM 职工(从职工表中查询所有职工的“工资”字段值)SELE * FROM 职工(从职工表中查询所有职工的元组,*表示所有属性)SELE * FROM 职工WHERE 工资>1230(从职工表中查询工资大于1230的元组)注意:1、WHERE 后面的条件可以是任意复杂的条件表达式2、DISTINCT 短语消除结果中重复值(注意)列:查询成绩大于等于60分的学生的学号、课程号、成绩(学号,课程号,成绩都在选课表中)SELE 学号,课程号,成绩FROM 选课WHERE 成绩>=60相当于VF命令:LIST FIELDS 学号,课程号,成绩FOR 成绩>=60查询有考试成绩的学生的学号SELE DIST 学号FROM 选课(DIST 去掉重复)列:在学生表中查询2系年龄小于25的女同学的学号,姓名在学生表中查询2系或6系年龄小于25的男同学的学号,姓名分析条件:性别='女' AND 年龄<25 AND (系='6' OR 系='2')等于条件:性别='男' AND 年龄<25 AND 系='6' OR性别='男' AND 年龄<25 AND 系='2'-----------------------------------------------------------------------2)基于多个数据表(两个或三个),这些数据表肯定有联系(有公用字段),而且查询输出的字段可能在几个(两个或以上有联系)数据表中。
第四章VF SQL-查询-视图——PPT课件
命令中的“*”是多字节通配符,表示 所有字段,这个命令相当于: SELECT 学号,课程号,成绩 FROM 选课表 在数据库中 * 代表多字节通配符,?代 表单字节通配符。 例4.3 检索出成绩大于80分的学号和成绩。 SELECT 学号,成绩 FROM 选课表; WHERE 成绩>80 结果是: 2004130101 90 2004130102 85 这里的WHERE短语是查询条件,查询条 件条件可以是任意复杂的逻辑表达式。
BETWEEN … AND … 是 “在 … 和 … 之间”,该查询条件等价于: (成绩 >= 80)AND (成绩 <=100) 例4.9命令还可以写成下面的语句: SELECT * FROM 选课表 WHERE ; (成绩 >= 80)AND (成绩 <=100)
( LIKE例题)
从课程表中检索出课程名中带有“学”字 的 课程号和课程名。 SELECT 课程号,课程名 FROM 课程表; WHERE 课程名 LIKE “%学%” 结果是: 1001 高等数学 1004 会计学 1005 经济学 LIKE 是字符串匹配运算符,通配符“%” 表示0个或多个字符,另外通配符“_”(下
SELECT DISTINCT 专业 FROM 档案表 结果是:
财会 金融 营销 例 4.2 从选课表中查出所有记录。 SELECT * FROM 选课表 结果是: 2004130101 1001 90 2004130101 1002 80 2004130101 1003 72 2004130102 1003 85 2004130102 1004 80 2004140101 1002 65 2004150101 1004 55
第四章
关系数据库标准语言SQL
vf第四章关系数据库标准语言SQL
结果中有重复值,如果要 去掉重复值只需要指定DISTINCT短语:
SELECT DISTINCT 工资 FROM 职工 DISTINCT 短语的作用是去掉查询结果中 的重复值。
例4.2检索仓库关系中的所有元组。
sele * from 仓库
*代表要显示的所有字段
• HAVING短语必须跟随GROUP BY使用,它 用来限定分组必须满足的条件;
• ORDER BY短语用来对查询的结果进行排序。
4.2.1简单查询
基于单个表的查询,可以有简单的查询条件。这 样的查询由SELECT和FROM短语构成无条件查询, 或由SELECT 、 from 、 WHERE短语组成条件查询。 例4.1从职工表中检索所有工资值。 SELECT 工资 FROM 职工 SELECT 职工号,工资 FROM 职工
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市。
SELE 职工号,城市 FROM 仓库,职工
WHERE(面积>400)AND(职工.仓库号= 仓库.仓库号)
4.2.3嵌套查询
基于多个关系的查询,这类查询所要求的结 果出自一个关系,但相关的条件却涉及多个关系。 例4.8哪些城市至少有一个仓库的职工工资为 1250元?
• 自然联接:当连接属性具有相同属性名,连接 条件取相等条件时,去掉得复属性的等值连接 称为自然连接。
SQL的核心是查询。SQL的查询命令也 称作SELECT命令,它的基本形式由 SELECT-FROM-WHERE查询块组成,多 个查询块可以嵌套执行。VFP的SQL SELECT命令的语法格式如下:(见书p128)
例4.3检索工资多于1230元的职工号。 Sele 职工号 from 职工 where 工资>1230
vf第四章
4.2 SQL的定义
4.2.1表的定义
1、定义表结构语句
格式: CREATE TABLE|DBF <表名> [FREE] (<字段名1> <字段类型> [(宽度[,小数位数])][<字段有效性规则>] (<字段名2> <字段类型> [(宽度[,小数位数])][<字段有效性规则>]„) |FROM ARRAY <数组名>
12
功能:修改<表名>所指定的表结构。可以添加(ADD)指 定的新字段,或修改(ALTER)指定的已存在字段的字段 类型、宽度、有效性规则、错误信息,定义主关键字和联 系等属性。该格式不能用来修改字段名,不能用来删除字 段,也不能用来删除已定义的规则。
13
例4.3 在命令窗口中执行以下命令: ALTER TABLE 学生 ALTER 姓名 C(8) ALTER 性别 C(2) DEFAULT “女” CHECK 性别=“男”; OR 性别="女" ALTER TABLE 学生 ADD 联系电话 C(11)
28
例4.10用UPDATE命令将“选修”表中学号为 “09010001”学生的“C001”号课程的成绩调整为 95分。
UPDATE 选修 SET 成绩=95 WHERE 学号 ="09010001" AND 课程号="C001" Replace all 成绩 with 95 for 学号="09010001" AND 课程号="C001"
29
4.3.2 删除数据
格式: DELETE FROM TableName [WHERE Condition] 说明: FROM 指定从哪个表中删除数据, WHERE指定被删除记录所满足的条件,若不是 用WHERE子句,则删除该表中的全部记录 例如: delete from 职工 where 仓库号= "WH7" 或 USE 职工 delete for 仓库号= "WH7"
vfp第四章关系数据库标准语言SQL
USTS
计算机 基础教学部
目 录
1 2 3
4.1 4.2 4.3 4.4
SQL概述 查询功能 操作功能 定义功能
4
4.1 SQL概述
ISO采 纳SQL ANSI 提出SQL 1986年 1987年
4.2.4几个特殊运算符
例4.11:检索出工资在1220元到1240元范围内的职 工信息。 Select * from 职工 ; where 工资 between 1220 and 1240 例4.12:从供应商关系中检索出全部公司的信息 (不要工厂或其他供应商的信息)。 Select * from 供应商 ; where 供应商名 like “%公司”
例4.4:检索哪些仓库有工资多于1210的职工。
例4.5:给出在仓库“WH1”或“WH2”工作 并且工资少于1250员的职工号。
Select 职工号 from 职工 where (工资<1250 )and (仓库号=‘WH1’ or 仓库号=‘WH2’)
查询结果的去处:
INTO ARRAY ArrayName INTO CURSOR CursorName INTO TABLE|DBF TableName TO FILE FileName [ADDITIVE] TO PRINTER [PROMPT]
目 录
指定结果的范围
TOP nExpr[PERCENT]
4.2.1简单查询
例4.1:从职工 表中检索所有 工资值。
例4.2:检索仓库关系中的所有元组。
例4.3:检索工资多于1230的职工号。
第4章 关系数据库标准语言SQLPPT课件
SELE * FROM 学生 WHERE 籍贯=; (SELE 籍贯 FROM 学生 WHERE 姓名="李丽")
第17页
6. 多表内联查询
例7:在图书管理数据库中,查询已借出书籍读者的借书证号、姓 名和单位以及借出图书的书名,单价,借书日期,并按借书证号 排序。 SELE a.jszh,a.xm,a.dw,b.sm,b.dj,c.jsrq; FROM 读者 A,图书 B,借阅 C; WHERE (a.jszh=c.jszh) AND (b.zbh=c.zbh) order by 借书证号
SELE xm,bs,js FROM 考试; ORDE BY bs DESC,js DESC
第9页
4.分组与计算查询
例4:在考试表中,按语言类别分组查询:语言类别、考生人数、
笔试成绩的最高分、笔试成绩的最低分及笔试成绩的平均分。查询
结果保存在“成绩统计.dbf”数据表中。
(参加考试人数在20人以上的语言类别的成绩情况)
第7页
命令格式:
SELECT <输出项列表> FROM <数据表名>
[WHERE <筛选条件>]
筛选
[ORDER BY <排序项>[DESC]] 排序
[GROUP BY <分组项> [HAVING <过滤条件>]] 分组
[INTO TABLE <数据表>]|
[INTO COUSOR <临时表>]| [INTO ARRAY <数组>]|
(7)运行查询、保存查询文件。
第11页
“筛选”选项 卡
vf关系数据库标准语言SQL
13
INTO
STUD
FROM
MEMVAR
4.3.2 更新记录命令
目 录
【格式】UPDATE <表文件名 SET <字段名 表文件名> 字段名1>=<表达式 [, 表达式> , 表文件名 字段名 表达式 <字段名 字段名2>=<表达式 表达式>…] [WHERE <条件 条件>] 字段名 表达式 条件
5
目 录
【 例 4-1】创建一个表STUD(学生信息表),它由以下字段组 】 成:学号 (C,10);姓名(C,8);性别(C,2);班级名 (C,10);系别代号(C,2);地址(C,50);出生日期 C 10 C 2 C 50 (D);是否团员 (L);备注 (M)。
上一页 下一页 退 出
CREATE TABLE STUD(学号 (10),姓名 C(10),性别 (学号C( ) ( ) C(2),班级名 C(10),系别代号 C(2),地址 C(50), ( ) ( ) 系别代号 ( ) 地址 ( ) 出生日期 D,是否团员 L,备注 M,照片 G) 是否团员 备注 照片 ) LIST STRUCTURE
第4章 关系数据库标准语言SQL
20122012-4-19 15
LIKE运算符是字符串匹配运算符, LIKE运算符是字符串匹配运算符,可以用 运算符是字符串匹配运算符 %”表示 个或多个字符, 表示0 “%”表示0个或多个字符,另外还有一个 通配符“_”表示一个字符 表示一个字符。 通配符“_”表示一个字符。 查询出地址不在北京的所有供应商信息。 例13 查询出地址不在北京的所有供应商信息。 SELECT *FROM 供应商 WHERE地址! WHERE地址 地址! =“北京 =“北京” 北京”
第 4章
关系数据库标准语言SQL 关系数据库标准语言SQL
本章要点
SQL概述以及特点 SQL概述以及特点 查询功能,简单查、简单的联接查询、 查询功能,简单查、简单的联接查询、嵌套查 SELECT中特殊运算符 排序、 询 、SQL SELECT中特殊运算符 、排序、简单 的计算查询、分组与计算查询、利用空值查询、 的计算查询、分组与计算查询、利用空值查询、 别名与自联接查询、 别名与自联接查询、内外层相互关联的嵌套查 使用量词和谓词的查询、超联接查询、 询、使用量词和谓词的查询、超联接查询、集 合的并运算
20122012-4-19
14
4.2.4 几个特殊运算符
1.LIKE和 between … and LIKE和 2.举例: 举例: 检索出工资在1220元到 元到1240元范围内的 例4.11 检索出工资在1220元到1240元范围内的 职工信息 select * from 职工 where 工资 between 1220 and 1240这个条件等价于(工资>=1220) and(工 1240这个条件等价于 工资>=1220) and(工 这个条件等价于( 资<=1240) 从供应商表中查询出全部公司的信息, 例4.12 从供应商表中查询出全部公司的信息, 不要工厂或其他供应商信息。 不要工厂或其他供应商信息。
VF教程第4章SQL关系数据库查询语言
第4章 章
SQL关系数据库查询语言 关系数据库查询语言
11
4.2 SQL的查询功能 4.2.3 联接查询
2.超联接查询 . SELECT… FROM <基本表名 基本表名>INNER|LEFT|RIGHT|FULL 基本表名 JOIN <基本表名 基本表名> 基本表名 ON <联接条件表达式 WHERE<条件表达式 联接条件表达式> 条件表达式>… 联接条件表达式 条件表达式
【例4.2】查询教师表中的所有信息。 】查询教师表中的所有信息。 SELECT * FROM 教师 命令中的*表示输出显示所有的字段 等价于如下语句: 表示输出显示所有的字段, 命令中的 表示输出显示所有的字段,等价于如下语句: SELECT 教师号 姓名 性别 职称 党员否 年龄 FROM 教师 教师号,姓名 性别,职称 党员否,年龄 姓名,性别 职称,党员否 【例4.3】查询教师表中男教师的姓名、职称和性别信息。 】查询教师表中男教师的姓名、职称和性别信息。 SELECT 姓名,职称 性别 FROM 教师 WHERE 性别="男" 姓名 职称,性别 性别 男 职称
功能一体化, 功能一体化,可以独立完成对数据库的所有操作 高度非过程化 自含式” 嵌入式” “自含式”和“嵌入式”使用方式 语言简洁, 语言简洁功能 功能 数据查询 数据定义 数据操纵 命令动词 SELECT CREATE、DROP、ALTER 、 、 INSERT、UPDATE、DELETE 、 、
第4章 章
SQL关系数据库查询语言 关系数据库查询语言
8
4.2 SQL的查询功能
3.去掉查询结果中的重复记录 .
字段名> 【格式】DISTINCT <字段名 格式】 字段名 说明】 语句后不能接表达式。 【说明】DISTINCT语句后不能接表达式。 语句后不能接表达式 【例4.6】查询学生表中都有哪些专业。 】查询学生表中都有哪些专业。 SELECT 专业 FROM 学生 利用DISTINCT语句可以去掉查询结果中的重复记录。 语句可以去掉查询结果中的重复记录。 利用 语句可以去掉查询结果中的重复记录 SELECT DISTINCT 专业 FROM 学生
《VisualFoxPro程序设计》第四章结构化查询语言SQL
其中各参数的说明如下:
• <表名1>:指定要修改的表的名称。
• [DROP <字段名>]:从表中删除指定字段。
• [SET CHECK <新有效性规则> [ERROR <出错信息>]]: 设置表的有效性规则,以及在不满足规则时的出错信息。
• [DROP CHECK]:删除表的有效性规则。
• [ADD PRIMARY KEY <字段表达式1> TAG <索引标识名1> [FOR <条件1>]]:为表建立主索引,一个表只能有一个 主索引。
SQL是Structured Query Language的缩写,属于一种一 体化语言,用于定义、查询、修改和控制关系型数据库 中的书籍。由于它功能强大,语言简洁,深受用户及计 算机工业界欢迎,被众多计算机公司和软件公司所采用。 经各公司的不断修改、扩充和完善,SQL语言最终发展成 为关系数据库的标准语言。1986年美国国家标准局ANSI 批准了SQL作为关系数据库语言的美国标准,1987年国际 标准化组织ISO也通过这一标准,1990言SQL 4.1 SQL语言概述 4.2 SQL的定义功能 4.3 SQL的查询功能 4.4 SQL的操作功能
提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
4.1 SQL语言概述
结构化查询语言(Structured Query Language)简称为 SQL,是关系数据库的标准语言。由于SQL语言具有功能 强大、使用方便灵活、语言简单易学等优点,目前几乎 所有的关系数据库管理系统软件都支持SQL。本章将详细 介绍Visual FoxPro中SQL语言各种主要功能的实现。
于100cm!”,班级 C(20))
VF_关系数据库标准语言SQL
第5章结构化查询语言(SQL)SQL概述SQL的内容在笔试和上机考试中均占到大约30%的比例,此外它还是查询和视图的基础,因此是学习的重点也是难点。
虽然SQL对大家来说有一定的难度,但是熟能生巧,大家把书中所涉及的题目和课件中的例题都理解并且操作了,相信SQL这个难关一定能攻克。
SQL是结构化查询语言Structure Query Language的缩写。
SQL包含了查询功能、数据定义、数据操纵和数据控制功能,在VFP中没有提供数据控制功能。
SQL主要特点:P861.SQL是一种一体化语言。
2.SQL是一种高度非过程化的语言。
3.SQL语言非常简洁。
4.SQL语言可直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。
第四节数据查询功能SELECT命令的特点:1.可以自动打开数据库、表文件加以查询,而不需要事先用OPEN DA TABASE或USE命令打开。
2.可以直接选取数据表中的数据,而不需要事先用SET RELA TION命令建立关联。
3.当需要的索引文件不存在时,会自动建立暂存索引文件,以支持快速搜索技术(Rushmore)来查询。
4.其查询结果可输出到文件、表、屏幕或报表上,还可以转换成统计图表。
命令格式:SELECT ——FROM ——WHERE关系操作:投影,选择,联接。
说明:功能强大,语法灵活;要处理的数据表无须事先打开,通过FROM子句指明并打开。
1.SELECT 短语:说明要查询的数据;对应的关系操作为投影,类似于FIELDS子句。
2.FROM 短语:说明要查询的数据来自哪个或哪些表,可对单个表或多个表进行查询;3.WHERE 短语:说明查询条件;对应的关系操作为选择,类似于FOR子句。
如是多表查询还可能过该子句指明联接条件,进行联接。
4.GROUP BY 短语:用于对查询结果进行分组,可利用它进行分组汇总;类似于TOTAL命令。
5.HA VING 短语:跟随GROUP BY 使用,它用来限定分组必须满足的条件;6.ORDER BY 短语:用于对查询的结果进行排序;类似于SORT 命令。
vf第四章关系数据库标准语言SQL
vf第四章关系数据库标准语言SQL SQL(Structured Query Language),即结构化查询语言,是一种专门用于管理和操作关系数据库的标准语言。
本章将介绍SQL的基本语法和常用操作,包括数据查询、数据修改、数据删除和数据插入等。
下面将逐一详细介绍这些内容。
一、数据查询1.1 SELECT语句SELECT语句是SQL中最常用的查询语句,其基本语法如下所示:SELECT 列名 FROM 表名 WHERE 条件;其中,“列名”表示需要查询的列,可以使用“*”表示查询所有列;“表名”表示需要查询的表;“WHERE”子句用于设定查询条件,可以根据需要使用各种条件运算符(如“=、>、<、>=、<=、<>”)来进行查询。
示例如下:SELECT * FROM Employees;以上语句将查询名为“Employees”的表中的所有数据。
1.2 ORDER BY语句ORDER BY语句用于对查询结果进行排序,默认是按照升序排列,可以通过添加“DESC”关键字来改为降序排列。
示例如下:SELECT * FROM Employees ORDER BY Salary DESC;以上语句将按照“Salary”列对名为“Employees”的表中的数据进行降序排列。
二、数据修改2.1 UPDATE语句UPDATE语句用于修改表中的数据,其基本语法如下所示:UPDATE 表名 SET 列名=新值 WHERE 条件;其中,“表名”表示需要修改数据的表,“列名=新值”表示需要修改的列和对应的新值,“WHERE”子句用于设定需要修改的数据的条件。
示例如下:UPDATE Employees SET Salary=5000 WHERE EmployeeID=1001;以上语句将修改名为“Employees”的表中“EmployeeID”为1001的记录的“Salary”列的值为5000;2.2 DELETE语句DELETE语句用于删除表中的数据,其基本语法如下所示:DELETE FROM 表名 WHERE 条件;其中,“表名”表示需要删除数据的表,“WHERE”子句用于设定需要删除的数据的条件。
4关系数据库标准语言SQL
例4-12查询结果
例 4-12 查询结果
分组查询
【例4-13】 统计至少有两条销售记录的员工 的每次销售的平均数量。
SELECT 员工号,COUNT(*) AS 销售次数,AVG(数量) AS 平均数量; FROM 销售记录 GROUP BY 员工号 HAVING 销售次 数>=2
例4-13查询结果
例 4-19 改为全联接
联接查询
将例4-19中的联接分别改为全联接。
SELECT 姓名,销售记录.* FROM 销售员 FULL JOIN 销售记录 ; ON 销售员.员工号=销售记录.员工号
例4-19改为全联接的查询结 果
联接的查询结果
例 4-19 改为全联接的查询结果
指定查询去向
SQL SELECT语句默认在浏览窗口中显示查 询结果,可用INTO或TO字句指定查询结果 去向。
子查询
– 普通子查询 – 子查询相关的特殊运算
普通子查询
【例4-14】 查询每次销售数量不低 于平均销售数量的销售员的员工号。
SELECT DISTINCT 员工号 FROM 销售记录; WHERE 数量>(SELECT AVG(数量) FROM 销售记 录)
例4-14查询结果
例 4-14 查询结果
练习
查询入学分数大于平均分的学生信息
子查询相关的特殊运算
可使用下列与子查询相关的特殊运算:
–
–
表达式 IN (子查询):判断表达式的值是 否包含在查询结果中。 表达式 NOT IN (子查询):判断表达式 的值是否不包含在查询结果中。
子查询相关的特殊运算
– 表达式 比较运算符 ANY|ALL|SOME (子查 询):ANY和SOME作用相同,只要子查询 中有一个记录使比较运算结果为真,则结 果为真。 – [NOT] EXISTS (子查询):判断子查询是否 有返回结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2.8 利用空值查询
SQL支持空值,当然也可以利用空值进 行查询。 假设在订购单关系中,一名职工正在准 备订购单,但尚未选定供应商,这样若把信 息存入数据库,则供应商号和订购日期两个 属性均为空值,在前面给出的订购单记录中 有3个这样的记录。
例4.23 找出尚未确定供应商的订购单。 SELE * FROM 订购单 WHER 供应商号IS NULL 结果是: E6 NUIL OR77 NULI E1 NULL OR80 NUIJL E3 NUIJL OR90 NUI„L 注意:查询空值时要使用IS NULL,而= NULL是无效的,因为空值不是一个确定的 值,所以不能用“=”这样的运算符进行比较。
例4.20 求在WH2仓库工作的职工的最高工资值。
SELECT MAX(工资) FROM 职工 WHERE 仓库号=”WH2”
4.2.7 分组与计算查询
利用GROUP BY子句进行分组计算查询。 GROUP BY短语的格式如下: Group by 字段名 having 条件 可以按一列或多列分组,还可以用HAVING 进一步限定分组的条件。 例4.21 求每个仓库的职工的平均工资。 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号
可以看到,在这个命令中含有两个 SELECT—FROM—WHERE查询块,即内 层查询块和外层查询块,内层查询块检索 到的仓库号值是WHl和WH2,这样就可以 写出等价的命令: SELE 城市 FROM 仓库 WHERE 仓库号; IN(”WHl”,”WH2”) 这里IN相当于集合运算符∈。
例4.9查询所有职工的工资都多于1210元的仓 库的信息。 这个检索要求也可以描述为:没有一个职工的工 资少于或等于1210元的仓库的信息。 不在以下范围 这样可以有SQL命令: SELE * FROM 仓库 WHER 仓库号 NOT IN; (SELECT 仓库号 FROM 职工 WHERE ; 工资<=1210) 内层SELECT—FROM—WHERE查询块指出所 有职工的工资少于或等于1210元的仓库的仓库号值 的集合,然后从仓库关系中检索元组的仓库号属性 值不在该集合中的每个元组。
例4.24 列出已经确定了供应商的订购单信息。
SELE *FROM 订购单 WHER 供应商号 IS NOT NULL
结果是: E3 S7 OR67 E1 S4 OR73 E7 S4 OR76 E3 S4 OR79 E3 S3 OR91
2001/06/23 2001/07/28 2001/05/25 2001/06/13 2001/07/13
例4.18 求北京和上海的仓库职工的工资总和。
SELE SUM(工资) FROM 职工 WHERE 仓库号 IN
(SELE 仓库号 FROM 仓库 WHER 城市=“北京”OR 城市=“上海”)
例4.19 求所有职工的工资都多于1210元的仓 库的平均面积。
SELE AVG(面积) FROM 仓库 WHERE 仓库号 NOT IN (SELECT 仓库号 FROM 职工 WHERE 工资<=1210)
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市。 SELE 职工号,城市 FROM 仓库,职工 WHERE(面积>400)AND(职工.仓库号= 仓库.仓库号)
4.2.3嵌套查询
基于多个关系的查询,这类查询所要求的结 果出自一个关系,但相关的条件却涉及多个关系。 例4.8哪些城市至少有一个仓库的职工工资为 1250元? 这个例子要求查询仓库表中的城市信息,而查 询条件是职工表的工资字段值,为此可以使用如 下的嵌套查询: SELECT 城市 FROM 仓库 WHE 仓库号 in; (SELE 仓库号 FROM 职工 WHE 工资=1250)
例4.10 找出和职工E4同样工资的所有职工。 Sele 职工号 FROM 职工 WHERE 工资=; (SELE 工资 FROM 职工 WHER 职工号=“E4”) 4.2.4 几种特殊运算符 •BETWEEN…AND… (…和…之间) •LIKE是字符串匹配运算符 通配符“%”表示0个或多个字符 “_”表示一个字符
第四章关系数据库标准语言SQL
SQL是结构化查询语言Structured Query Language的缩写。可以说查询是SQL语言的 重要组成部分,但不是全部,SQL还包含数 据定义、数据操纵和数据控制功能等部分。 SQL已经成为关系数据库的标准数据语言, 所以现在所有的关系数据库管理系统都支持 SQL.
字段名
例4.15先按仓库号排序,再按工资排序并 输出全部职工信息。 SELE * FROM 职工 ORDE BY 仓库号,工资
注意:ORDER BY是对最终的查询结果进 行排序,不可以在子查询中使用该短语。
4.2.6简单的计算查询
SQL不仅具有一般的检索能力,而且还有计算方式 的检索。用于计算检索的函数有: ①COUNT—计数 ②SUM—求和 ②AVG—计算平均值 ④MAX—求最大值 ⑤MIN—求最小值 这些函数可以用在SELECT短语中对查询结果进行 计算。
WHERE(工资>1230)AND(职工.仓库号=仓库.仓库号)
表名 表中字段
如果在检索命令的FROM之后有两个 关系,那么这两个关系之间肯定有一种联 系,否则无法构成检索表达式。从前面的 讨论可知,仓库关系和职工关系之间存在 着一个一对多的联系。 当FROM之后的多个关系中含有相同的 属性名时,这时必须用关系前缀直接指明 属性所属的关系,如职工.仓库号,“.” 前面是关系名(表名),后面是属性名 (字段名)。
结果是: WHl l230 WH2 1235 WH3 1230 在这个查询中,首先按仓库号属性进 行分组,然后再计算每个仓库的平均工资。 GROUP BY子句一般跟在WHERE子句之后, 没有WHERE子句时,跟在FROM子句之后。 另外,还可以根据多个属性进行分组。
例4.22 求至少有两个职工的每个仓库的平均工资。 SELE 仓库号,COUNT(*),AVG(工资) FROM 职工 GROUP BY 仓库号 HAVING COUNT(*)>=2 结果是: WHl 21230 WH2 21235 HAVING子句总是跟在GROUP BY子句之后,不 可以单独使用。
从此表名 中找
可以看到在结果中有重复值,如果要 去掉重复值只需要指定DISTINCT短语: SELECT DISTINCT 工资 FROM 职工 DISTINCT 短语的作用是去掉查询结果中 的重复值。 例4.2检索仓库关系中的所有元组。
* from 仓库 *代表要显示的所有字段
sele
例4.3检索工资多于1230元的职工号。 Sele 职工号 from 职工 where 工资>1230 WHERE短语指定了查询条件,查询条 件可以是任意复杂的逻辑表达式。 例4.4检索哪些仓库号有工资多于1210元的职 工。 SELE DIST 仓库号 from 职工 WHERE 工资>1210
例4.5给出在仓库“WHl”或“WH2”工作,并 且工资少于1250元的职工号。
SELECT 职工号 FROM职工;
WHER 工资<1250 AND (仓库号=“wh1”OR仓库号=“WH2)
注意:这里的分号是续行符号,下同。
4.2.2简单的联接查询
联接是关系的基本操作之一,联接查询是一种基 于多个关系的查询。 例4.6找出工资多于1230元的职工号和他们所在的城 市。 这里所要求检索的信息分别出自职工(职工号属性) 和仓库(城市属性)两个关系,这样的检索肯定是基于 多个关系的,此类查询一般用联接查询来实现。 SELE 职工号,城市 FROM 职工,仓库;
4.2.1简单查询
基于单个表的查询,可以有简单的查询条件。这 样的查询由SELECT和FROM短语构成无条件查询, 或由SELECT 、 from 、 WHERE短语组成条件查询。 例4.1从职工表中检索所有工资值。 SELECT 工资 FROM 职工 SELECT 职工号,工资 FROM 职工
要显示的 字段名
SQL的核心是查询。SQL的查询命令也 称作SELECT命令,它的基本形式由 SELECT-FROM-WHERE查询块组成,多 个查询块可以嵌套执行。VFP的SQL SELECT命令的语法格式如下:(见书p128) Sele 字段名1,字段名2, …from 表名 where 条件.
• SELECT说明要查询的数据; • FROM说明要查询的数据来自哪个或哪些表, 可以对单个表或多个表进行查询; • WHERE说明查询条件,即选择元组的条件; • GROUP BY短语用于对查询结果进行分组, 可以利用它进行分组汇总; • HAVING短语必须跟随GROUP BY使用,它 用来限定分组必须满足的条件; • ORDER BY短语用来对查询的结果进行排序。
例4.11检索工资在1220到1240元之间的职工。 Sele * from 职工 where 工资 betw 1220 and 1240 例4.12 从供应商表中检索出全部公司的信息, 不要工厂或其他供应商的信息。 Sele * from 供应商 where 供应商名 like “*公司” 例4.13 找出不在北京的全部供应商信息。 Sele * from 供应商 where 地址 !=“北京”
4.1
SQL概述
SQL语言具有如下主要特点: ①SQL是一种一体化的语言,它包括了数据定 义、数据查询、数据操纵和数据控制等方面的功 能,它可以完成数据库活动中的全部工作。 ②SQI语言是一种高度非过程化的语言,它没 有必要一步步地告诉计算机“如何”去做,而只 需要描述清楚用户要“做什么”,SQL语言就可 以将要求交给系统,自动完成全部工作。 ③SQL语言非常简洁。虽然SQL语言功能很强, 但它只有为数不多的几条命令(见书p115)。 ④SQL语言可在命令窗口或程序中交互使用。
不等于,也可用 not(地址=“北京”)