Visual FoxPro 程序设计(第二版)
第5章 关系数据库标准语言SQL
5.1 5.4 5.3 5.2 5.5
SQL概述 定义功能
操作功能 查询功能 定义视图
5.1
SQL概述
SQL (Structured Query Language结构化查询语言)是
对存放在计算机数据库中的数据进行组织,管理和检索的工具,是一种用于和数据库进行交互式数据处理的计算机语言, 特别适用于关系型数据库的使用。 SQL在检索数据时,利用了数据的结构特性,避免了数 据的顺序使用方法,而是使用类似跳跃的检索技术,因此它
在数据检索和数据处理方面具有无以伦比的高性能。SQL已经发展成为计算机数据库语言中的标准
SQL语言具有如下特点:
1.综合统一
SQL语言是一种一体化语言,它包括数据定义、数据查询、 数据操纵和数据控制等方面的功能,它可以完成数据库活动 中的全部工作。 2. 高度非过程化 SQL语言是一种高度非过程化的语言,它没有必要一步 步地告诉计算机“如何”去做,而只需要描述清楚用户要 “做什么”,SQL语言就可以将要求交给系统,自动完成全 部工作。
3.面向集合的操作方式 SQL语言采用集合操作方式,不仅查找结果可以是 元组的集合,而且一次插入、删除、更新操作的对象 也可以是元组的集合。 4.以同一种语法结构提供两种使用方式 SQL语言既是自含式语言,又是嵌入式语言。
5. SQL语言非常简洁。SQL功能 数据查询 数据定义 命令动词 SELECT CREATE、DROP、ALTER
数据操纵数据控制
INSERT、UPDATE、DELETEGRANT、REVOKE
数据定义
定义数据的结构和组织以及数据之间的关系。
数据操纵 用户或应用程序增加新数据、删除旧数据、修改 已存入的数据。 数据查询 数据控制 使用户或应用程序从数据库中快速检索数据。 SQL可以限制用户使用数据的权限,保护存入
的数据不被非法存取。 注:vfp在SQL方面不提供数据控制语句
5.2 数据定义功能
1
建立数据库
格式:CREATE DATABASE <数据库名>
功能:建立由<数据库名>指定的数据库。例:用命令建立“订货管理”数据库。
CREATE DATABASE 订货管理
2
建立表格式:CREATE TABLE /DBF 新建表名 [NAME 长表名] [FREE] (字段1定义[,字段2定义[…]])| FROM ARRAY 数组名
功能:CREATE TABLE是用于建立表的语句,可以用它建立数 据库表和自由表,该命令要求指定表名和表的结构。
1. TABLE 关键字在VFP中可以用DBF代替。 2. NAME 长表名:用于为新建表指定一个长表名,只有创建 数据库表时才能指定。长表名可以包含128个字符。 3. FREE:建立自由表,既不将新建表加入到当前数据库中, VFP默认将新建表加入到当前数据库中。在没有数据库打开 的情况下,不管有无该选项,
所建立的表都是自由表。 4. 字段定义:指定新建表的一个字段,本部分可以有多项, 各字段用逗号分隔。其格式如下: 字段名 数据类型 [(宽度[,小数位])] [NULL|NOT NULL] [CHECK 逻辑表达式[ERROR 字符形文本信息]] [DEFAULT 表达式] [PRIMARY KEY|UNIQUE]
(1)数据类型可以是C、D、T、N、F、I、B、L、M和G等之一
(2)[NULL|NOT NULL ]项指定该字段是否允许空值,缺省值为NOT NULL。 (3)[CHECK 逻辑表达式[ERROR 字符形文本信息]]指定该字段合
法值的约束条件以及当输入不合法值时VFP显示的错误信息。本项只用于数据库表。 (4)[DEFAULT 表达式] 指定在新增记录时,该字段所取的缺省 值。本选项仅对数据库表有效。 (5)[PRIMARY KEY|UNIQUE],要求系统按本字段建立一个主索引 (PRIMARY KEY)或侯选索引(UNIQUE)。注意在此处指定的索 引,不允许关键字的重复。此项仅对数据库表有效。 5. FROM ARRAY 数组名:指定VFP从数组中获取有关字段的定义。
例:分析以下命令的结果 CREATE TABLE 工资 FREE(教工号 C(6),姓名 C(8) NOT NULL,工资 N(7,2))
本例建立了一个名为“工资”的自由表,有三个字段,其中 姓名不能为空。
例:用SQL CREATA命令建立仓库A表CREATE TABLE 仓库A(仓库号C(5) PRIMARY KEY,城市C(12), 面积 I CHECK(LEN(城市)>=4) ERROR “城市名应该大于等于 4!”) 例:用SQL CREATE命令建立职工A表 CREATE TABLE 职工A(仓库号 C(5), 职工号 C(5) PRIMARY KEY, 工资 I CHECK(工资>=1000 AND工资<=5000) ERROR “工资值的范围在1000-5000! ” DEFAULT 2200, FOREIGN KEY 仓库号 TAG 仓库号 REFERENCES 仓库A)
例5.50 用SQL CREATE命令建立供应商A表. CREATE TABLE 供应商A( 供应商号C(5) PRIMARY KEY,供应商名C(20),地址C(20)) 例5.50 用SQL CREATE命令建立订购单A表. CREATE TABLE 订购单A( 职工号 C(5) 供应商号 C(5) 订购单号 C(5) PRIMARY KEY, 订购日期 D, FOREIGN KEY 职工号 REFERENCES 职工A, FOREIGN KEY 供应商号 TAG 供应商号 REFERENCES 供应 商A)
3
删除表
格式:DROP TABLE 表名 功能:本语句用于删除指定的表,可以删除自由表,也 可删除数据库表。
例:删除工资表DROP TABLE 工资
4
修改表结构
1) 增加/修改/删除字段 格 式 : ALTER TABLE < 表 名 > { ADD [ column] 字 段 定 义
|ALTER[column]字段定义|DROP[column] 字段} 功能:本语句用于修改指定表的字段,其中ADD用于为表增加 一个字段,ALTER修改已有字段,DROP 删除一个已有字段。
例5.53
为订购单A表增加一个货币类型的总金额字段。 CHECK 总金额>0 ERROR“总金额应该大于0!”
ALTER TABLE 订购单1; ADD总金额Y
例5.54 将订购单A表的订购单号字段的宽度由原来的5该为6。 ALTER TABLE 订购单A ALTER 订购单号 例5.58 删除订购单A表中的总金额字段。 C(6)
ALTER TABL
E 订购单A DROP COLUMN 总金额