VFP关系数据库标准语言SQL
- 格式:ppt
- 大小:311.00 KB
- 文档页数:52
第六章VFP关系数据库标准语言SQL 大纲要求关系数据库标准语言SQL1、SQL的数据定义功能:(1)CREATE TABLE–SQL(2)ALTER TABLE–SQL2、SQL的数据修改功能:(1)DELETE–SQL(2)INSERT–SQL(3)UPDATE–SQL3、SQL的数据查询功能:(1)简单查询。
(2)嵌套查询。
(3)连接查询。
内连接外连接:左连接、右连接、完全连接(4)分组与计算查询。
(5)集合的并运算。
知识要点一、SQL语言的特点1.综合统一SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。
2.高度非过程化3.语言简洁,易学易用4.以同一种语法结构提供两种使用方式既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
二、SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构。
其中外模式对应于视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件。
基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。
一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。
存储文件的逻辑结构组成了关系型数据库的内模式。
而存储文件的物理文件结构是任意的。
视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。
三.数据定义数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。
由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DR OP)和修改(ALTER)。
第四章关系数据库标准语言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 连用,不能单独使用。
第四章关系数据库标准语言SQLSQL:是结构化查询语言,它包括数据查询、数据定义、数据操纵、数据控制四部分。
但在VF中只绍介查询、定义、操纵三个方面。
SQL命令动词:一、查询功能1、SQL语言的核心是查询。
查询的基本形式:SELECT <字段名/表达式> FROM <表名/视图名> WHERE <条件> 由于表是由行和列组成就像数学中所学的坐标由X轴和Y轴构成,所需确定某个点需要说明X 为多少Y为多少。
而表中需要查询某些数据就必需指明行和列,所以在查询时:1FROM<表名/视图名>:说明查询的数据来自于所需要的表或视图。
若某于多个表时,各个表之间用逗号隔开。
2SELECT<字段名/表达式>:说明从表或视图中所查询结果是哪些字段名或表达式的值(各字段名或表达式之间用逗号隔开)即针对表的列来操作(限定列)。
3WHERE<条件>:说明从表或视图中所查询结果是哪些行即记录针对表的行来操作(限定行)。
关于其它短语的说明:可以在3个区域中创建SELECT命令。
1在命令窗口中;2在VFP程序中3在查询设计器中注:当FROM后面来自于多个表时,必须写连接条件(通常根据表的公共字段作为连接条件),此时在书写公共字段之前必须加以别名限定。
定义表的别名方法见教材P137,超连接的格式见教材P140FROM书写不要写成=>FORM二、查询方法:1、简单查询:例:从职工表中检索所有的工资值。
SELECT 工资FROM 职工表或者SELECT * FROM 职工表如果要去掉重复值用:DISTINCT例:检索哪些仓库有工资多于1260元的职工号SELECT DISTICT 仓库号FROM 职工表WHERE工资>12602、单击的连接查询:类似于多个表的查询,与嵌套查询的区别是要查询的结果呆以出自多个表中。
而嵌套查询的结果是基于一个表中。
例:找出工资多于1250元的职工号与他们所在的城市。
一、选择题1、下面有关HAVING子句描述错误的是A) HAVING子句必须与GROUP BY子句同时使用,不能单独使用B) 使用HAVING子句的同时不能使用WHERE子句C) 使用HAVING子句的同时可以使用WHERE子句D) 使用HAVING子句的作用是限定分组的条件2、(15)~(27) 使用的数据如下:当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:(15) 执行如下SQL语句后SELECT*FROM stock INTO DBF stock ORDER BY 单价A) 系统会提示出错信息B) 会生成一个按“单价”升序排序的表文件,将原来的stock.dbf文件覆盖C) 会生成一个按“单价”降序排序的表文件,将原来的stock.dbf文件覆盖D) 不会生成排序文件,只在屏幕上显示一个按“单价”升序排序的结果(16) 执行下列程序段以后,内存变量a的内容是CLOSE DATABASEa=0USE stockGO TOPDO WHILE.NOT.FOF()IF 单价>10a=a+1ENDIFSKIPENDDOA) 1 B) 3 C)5 D) 7(17) 有如下SQL SELECT语句SELECT*FROM stock WHERE单价BETWEEN 12.76 AND 15.20与该语句等价的是A) SELECT*FROM stock WHERE 单价<=15.20.AND.单价>=12.76B) SELECT*FROM stock WHERE 单价<15.20.AND.单价>12.76C) SELECT*FROM stock WHERE 单价>=15.20.AND.单价<=12.76D) SELECT*FROM stock WHERE 单价>15.20.AND.单价<12.76(18) 如果在建立数据库表stock.dbf时,将单价字段的字段有效性规则设为“单价>0”,通过该设置,能保证数据的A) 实体完整性 B) 域完整性 C) 参照完整性 D) 表完整性(19) 在当前盘当前目录下删除表stock的命令是A) DROP stock B) DELETE TABLE stockC) DROP TABLE stock D) DELETE stock(20) 有如下SQL语句SELECT max(单价) INTO ARRAY a FROM stock执行该语句后A) a[1]的内容为15.20 B) a[1]的内容为6B) a[0]的内容为15.20 C) a[0]的内容为6(21) 有如下SQL语句SELECT 股票代码,avg(单价) as 均价 FROM stock;GROUP BY 交易所 INTO DBF temp执行该语句后temp表中第二条记录的“均价”字段的内容是A) 7.48 B) 9.99 C)11.73 D) 15.20(22) 将stock表的股票名称字段的宽度由8改为10,应使用SQL语句A) ALTER TABLE stock股票名称 WITH c(10)B) ALTER TABLE stock股票名称 c(10)C) ALTER TABLE stock ALTER股票名称 c(10)D) ALTER stock ALTER 股票名称 c(10)(23) 有如下SQL语句CREATE VIEW stock_view AS SELECT*FROM stock WHERE 交易所=“深圳”执行该语句后产生的视图包含的记录个数是A) 1 B) 2 C)3 D) 4(24) 有如下SQL语句CREATE VIEW view_stock AS SELECT 股票名称AS名称,单价FROM stock 执行该语句后产生的视图含有的字段名是A) 股票名称、单价 B) 名称、单价C) 名称、单价、交易所 D) 股票名称、单价、交易所(25) 下面有关对视图的描述正确的是A) 可以使用MODIFY STRUCTURE命令修改视图的结构B) 视图不能删除,否则影响原来的数据文件C) 视图是对表的复制产生的D) 使用SQL对视图进行查询时必须事先打开该视图所在的数据库(26) 执行如下SQL语句后SELECT DISTINCT 单价 FROM stock;WHERE 单价=( SELECT min(单价)FROM stock) INTO DBF stock_x表stock_x中的记录个数是A) 1 B) 2 C)3 D) 4(27) 求每个交易所的平均单价的SQL语句是A) SELECT 交易所,avg(单价)FROM stock GROUP BY 单价B) SELECT 交易所,avg(单价)FROM stock ORDER BY 单价C) SELECT 交易所,avg(单价)FROM stock ORDER BY 交易所D) SELECT 交易所,avg(单价)FROM stock GROUP BY 交易所3、下列关于查询的说法中,不正确的是A)查询是预先定义好的一个SQL SELECT语句B)查询是Visual FoxPro支持的一种数据库对象C)通过查询设计器,可完成任何查询D)查询是从指定的表或视图中提取满足条件的记录,可将结果定向输出4、Visual FoxPro在SQL方面,不提供的功能是A)数据查询B)数据定义C)数据操纵D)数据控制5、检索职工表中工资大于800元的职工号,正确的命令是A)SELECT 职工号WHERE 工资>800B)SELECT 职工号FROM 职工SET 工资>800C)SELECT 职工号FROM 职工 WHERE 工资>800D)SELECT 职工号FROM 职工 FOR 工资>8006、找出在仓库面积大于500的仓库中工作的职工号,以及这些职工工作所在的城市,正确的命令是A)SELECT 职工号,城市 FROM职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)B)SELECT 职工号,城市 FROM职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)C)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)D)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)7、利用SQL语句,检索仓库中至少有一名职工的仓库信息,正确的命令是A) SELECT * FROM 仓库表 WHERE IN;(SELECT 仓库号 FROM 职工表)B) SELECT * FROM 仓库表 WHERE NOT IN;(SELECT 仓库号 FROM 职工表)C) SELECT * FROM仓库表WHERE 仓库号 EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)D) SELECT * FROM 仓库表 WHERE EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)8、第(32)~(35)题使用如下的设备表。
VFP的SQL命令和语句大全SQL——标准的结构化查询语言关系模型数据库管理系统(DBMS)一、数据定义1.CREATE TABLE——定义表结构该命令的一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:自由表CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),cj n(5,1),ksrq d ,csrq d, bj n(10))例:数据库表CREATE TABLE xscj(xh c(8) primary key ,xm c(6),xb c(2),cj n(5,1),ksrq d,zp g )2.ALTER TABLE (修改表结构)命令格式示例(1)添加字段:ALTER TABLE xscj ADD COLUMN kcmc C(14)(2)重命名字段ALTER TABLE xscj RENAME COLUMN kcmc TO kc(3)删除字段ALTER TABLE xscj DROP COLUMN kc .3.DROP TABLE <表名> //删除表文件(.dbf)二、数据操作语句4.INSERT-SQL命令该命令的一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 ])] VALUES (表达式1[,表达式2 …])例:INSERT INTO xscj(xh,xm,cj)VALUES ("81991001", "张良", 85.5)5.UPDATE-SQL 命令。
功能:对符合条件的记录修改字段的值命令格式:UPDATE <表名> SET 字段 1 = 表达式 1 [,字段 2 = 表达式 2 …] [ WHERE 条件表达式][ WHERE 条件表达式]缺省,默认当前一条记录例:UPDATE xscj SET cj = cj*1.05 WHERE cj>805.DELETE-SQL 命令。