Visual FoxPro程序设计-结构化查询语言SQL

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

4.4 数据操作
4.4.2 删除记录
用户在检查某个数据表时发现某些数据是无用或无意义的,此 时便可以使用DELETE语句为指定的数据表中的记录添加删除标记。
DELETE FROM TableName [WHERE <FilterCondition1> [AND | OR <FilterCondition2> ...
B.INSERT INTO C(CNO,DEPT,TEACHER) VALUES (001,02,Mr Li) C.INSERT INTO C(CNAME,DEPT,TEAHCER) VALUES ('MATHS',02,'Mr Li') D.INSERT INTO C VALUES (001,'MATHS','Mr Li',02) 2.下面的说法中,正确的是( A. B.UPDATE C.INSERT D.DELETE语句若不给出WHERE
<表名1>.<字段名1>=<表名2>.<字段名2>
<别名1>.<字段名1>=<别名2>.<字段名2>
4.3 数据查询
4.3.6 多表查询
在联接条件下,<字段名1>和<字段名2>通常是两个表的 公共字段。另外,在用于查询的几个表中往往存在同名的字 段,为防止歧义性,当字段名不唯一时,要在同名字段前加
(2)因为课程信息表中的“数据 库”课在子查询中没有结果,
所以没有被查询出来
(3) EXISTS或NOT EXISTS只 检查子集是否有结果返回,本
身不做任何计算或比较。
4.3 数据查询
4.3.6 多表查询
前面所讲都是基于单表的擦和讯,也就是数据源只有一个表,所 以查询操作比较简单,实际应用中更多的是基于多表的查询。在进行 多表查询时,表和表之间必须有联接关系。在SQL SELECT命令的 WHERE
案例引入——使用结构化查询语言SQL
学习目标
掌握结构化查询语言SQL中的定义、查询和操 作功能的实现。
案例引入——Visual FoxPro的数据运算
任务描述
(1)用SQL命令建立“学生管理”数据库,并在该数据库 中建立学生信息表student、成绩表cj,表结构分别如表4-1和 表4-2所示。
TableName指定需要更新记录的数据表;ColumnName表示需要更改的 数据列名;Expression是常量和字段的表达式,表示更改后的结果; Expression的数据类型需要和对应的Column一致;FilterCondition是指定需要 更新记录的筛选条件,如果不设定,将会更新数据表中的所有数据。
[<TableName1>].<ColumnName1> <CompareCharacter> [<TableName2>].<ColumnName2>
4.3 数据查询
4.3.4 联接查询
(1)
定位到第一表中的第一条记录。
将数组复制到 表的当前记录
根据联接条件,从头至尾对第二个表进行扫描,查 找满足条件的记录。
sql语言的主要特点2高度的非过程化1一体性强4交互方式的灵活性3操作的批量性5简洁易学功能强大41sql语言概述5简洁易学功能强大41sql语言概述1数据定义语言ddl2数据操纵语言dml3数据控制语言dcl42数据定义标准sql的数据定义功能非常广泛包括数据库表视图存储过程规则及索引的定义等
结构化查询语言SQL
案例引入——Visual FoxPro的数据运算 任务描述
案例引入——Visual FoxPro的数据运算 任务描述
案例引入——Visual FoxPro的数据运算
任务描述
(2)用SQL命令往两个表中插入如图4-1所示的记录。
案例引入——Visual FoxPro的数据运算
任务描述
(3)用SQL ①查询学生信息表student
KEY|UNIQUE]
NULL]
(规8)则[> [CHEERCRKOR<有<出效错性(9)[认DE值F>A]ULT <默
信息>]]
4.2 数据定义
4.2.2 表结构的修改
1.添加字段 2.修改字段类型
3.重命名字段
4.删除字段
5.添加、删除主索引 或候选索引
6.定义、删除有效性 规则和默认值
4.2 数据定义
4.3 数据查询
4.3.2 分组与计算查询
• 1.分组查询
• 2.计算查询
4.3 数据查询
4.3.2 分组与计算查询
1.分组查询
在SQL查询中,有时需要使用GROUP BY子句按照某些字段对
GROUP BY ColumnName1[,ColumnName2…] [HAVING FiterCondition
找到后将两个表的字段拼在一起成为结果集的 一条记录。
第二个表扫描完毕后,定位到第一个表的下 一条记录,转到第2步。
重复上述的过程,直至定位到第一个表 的最后一条记录为止。 (5)
4.3 数据查询
4.3.4 联接查询
4.3 数据查询
4.3.4 联接查询
3.外联接查询
1)内联接
3)右联接
2)左联接
4)全联接
4.1 SQL语言概述
SQL语言的主要特点
1)一体性强
3)操作的批量性
5)简洁易学, 功能强大
2)高度的非过 程化
4)交互方式的 灵活性
4.1 SQL语言概述
5)简洁易学,功能强大
(1)数据定义语言(DDL)
(2)数据操纵语言 (DML)
(3)数据控制语言 (DCL)
4.2 数据定义
标准SQL的数据定义功能非常广泛,包括数据库、表、 视图、存储过程、规则及索引的定义等。数据定义语言由 CREATE(创建)、DROP(删除)、ALTER(修改)3个命令组成。 这3个命令关键词针对不同的数据对象分别有3条命令,如操 作数据表时可以使用CREATE、DROP和ALTER命令,操作 视图时也可以使用这3条命令。
TableName指定要删除数据的数据表名;FilterCondition表示一 个或多个需要删除记录的筛选条件,如果不设定,将删除数据表中 的所有记录。
4.4 数据操作
4.4.3 更新记录
用户若想对存储在表中的记录进行修改,便可以使用UPDATE语句来 实现。并且还可以配合SELETE
UPDATE TableName SET ColumnName1=Expression1 [,ColumnName2=Expression2...] [WHERE FilterCondition1 [AND|OR FilterCondition2 ...
4.2.3 表的删除
1.逻辑删除
随着数据库应用的变化,往往有些表连同它的数据不再需要了, 这时可以删除这些表,以节省存储空间。可以使用DROP TABLE命
DROP TABLE TableName TableName为需要删除的数据表的名称。
4.3 数据查询
4.3.1 简单查询
简单查询主要是基于单个数据表的投影操作, WHERE关键词之后指明筛选条件,筛选条件可以是任 何符合要求的逻辑表达式。如果省略,则查出当前数据 表中的所有记录。
思考与练习
1.有基本表C(CNO,CNAME,DEPT,TEACHER),其中CNO和DEPT为数值型且 是CNO是主关键字,其他都为字符型,宽度都是10,且CNAME字段定义为NOT NULL 则下面SQL语句中,可以成功插入数据的是(
A.INSERT INTO C(CNO,CNAME,TEACHER,DEPT) VALUES (001,'MATHS', 'Mr Li', 02)
ORDER BY子句使检索得到的行基于任一列或列的组 合以升序或降序排列,而不考虑这些列是否出现在结果中, 默认按升序排列(ASC为升序排列,DESC为降序排列), 它必须是SELECT语句的最后一个子句。
4.3 数据查询
4.3.4 联接查询
数据库中各个数据表往往存在某些联系,在一次查询中使用两 个或两个以上具有关联的数据表叫做联接查询,也叫多表查询。它 是使用最多的一种查询方式。我们可以在SELECT语法的FROM子句 后加入需要联接的各个表,在WHERE子句中加入JoinCondition(联 接条件)将各个表联接起来,联接条件遵循如下语法:
③查询学生信息表student中所有男生的学号、姓名、身高。
⑤查询成绩表cj ⑥查询所有学生的学号、姓名、课程号、成绩,并按成绩 升序排序。

4.1

4.2

4.3

4.4
SQL语言概述 数据定义 数据查询 数据操作
4.1 SQL语言概述
SQL是Structured Query Language的缩写,属于一种一体化语言, 用于定义、查询、修改和控制关系型数据库中的数据。由于它功能 强大、语言简洁,深受用户欢迎,被众多计算机公司和软件公司所 采用。经各公司的不断修改、扩充和完善,SQL语言最终发展成为 关系数据库的标准语言。1986年美国国家标准局ANSI批准了SQL 作为关系数据库语言的美国标准,1987年国际标准化组织ISO也通 过这一标准,1990年我国也将其定为标准数据库语言。
思考与练习
3.关于INSERT语句的说法中,错误的是( A. B.若给出了列名表,则VALUES C.若没有给出列名表,则只要VALUES D. 4.已知表S(职工号,姓名,年龄)中,职工号是主关键字而且只有(001,'张 明',19)一条记录,则下列SQL语句中,可以正确执行的是( A.INSERT INTO S VALUES(002,'李洪') B.DELETE FROM S C.INSERT INTO S VALUSE(001,'王大',20) D.INSERT INTO S(姓名,年龄) VALUES('胡明',20) 5.有如下SQL SELECT max(单价) INTO ARRAY a FROM stock 执行该语句后(
3)SUM([DISTINCT|ALL] <ColumnName>) 4)AVG([DISTINCT|ALL] <ColumnName>ColumnName>) 6)MIN([DISTINCT|ALL] <ColumnName>)
4.3 数据查询
4.3.3 对查询结果排序
INSERT INTO TableName FROM ARRAY ArrayName|FROM MEMVAR
(1)FROM ARRAY ArrayName 表示将数组名为ArrayName中的数 据插入到当前数据表中,要求数组中各元素与数据表中的字段相对应。
(2)FROM MEMVAR表示将内存中同名变量的值插入到当前数
4.2 数据定义
4.2.1 表的定义
表的定义就是建立一个含有指定字段的表结构。 SQL语句中定义表的格式如下: CREATE TABLE|DBF <表名1> [FREE] (<字段名1> <字段类型>[(<字段宽度> [,<小数位数>])] [NULL|NOT NULL] [PRINARY KEY|UNIQUE] [REFERENCES <表名2> [TAG <索引标识名>]] [CHECK <有效性规则> [ERROR <出错信息>]] [DEFAULT <默认值>] [,<字段名2> <字段类型>[(<字段宽度> [,<小数位数>])…])
<表名>.<字段名> 或 <别名>.<字段名>
4.4 数据操作
4.4.1 插入记录
1.标准的插入记录 的方法
2.从数组或者 同名的内存变 量中插入记录
4.4 数据操作
4.4.1 插入记录
1.标准的插入记录的方法
INSERT INTO TableName [(FieldName1 [, FieldName2, ...]) VALUES (eExpression1 [,eExpression2, ...])
其中,ColumnName表示用来分组的字段,可以是一个或多个; HAVING子句指定分组条件,它必须与GROUP BY子句联用,表示 满足FiterCondition的组才能被选出来。
4.3 数据查询
4.3.2 分组与计算查询
2.计算查询
1)COUNT([DISTINCT|ALL] * )
2)COUNT([DISTINCT|ALL]<ColumnName>)
4.2 数据定义
4.2.1 表的定义
其中各参数的说明如下:
(1)TABLE|DBF
(2)<表名1>
(3)[FREE]
(4)<字段名1> <字段类型
(6)[PRINARY
>[(<字段宽度> [,<小 数位数>])
(7)[REFERENCES <表名2> [TAG <索引
标识名>]]
(5)[NULL|NOT
TableName表示需要插入记录的数据表名称,FieldName指定需要 添加记录的字段,eExpression为需要插入的数据,与FieldName一一对 应,而且必须与给定的FieldName类型相匹配,否则数据插入失败。
4.4 数据操作
4.4.1 插入记录
2.从数组或者同名的内存变量中插入记录
4.3 数据查询
4.3.4 联接查询
如果一个查询语句中的条件语句 套有其他查询语句,则称为嵌套查询。
1.使用IN连接 嵌套
2.EXISTS或 NOT EXISTS
4.3 数据查询
4.3.5 嵌套查询
2.EXISTS或NOT EXISTS
(1)本嵌套查询中内查询为外查询提供课程 号,内查询检索课程号,并把结果返回
相关文档
最新文档