第一章 数据库应用基础第 6 章
SQL语言
SQL( Structure Query language) 是结构化查询语言的英文缩写 。 SQL语言是一种标准的关系数据库查询语言,充分体现了关系数据语言的特点和优点 。
第一章 数据库应用基础
6.1 SQL 语言概述
6.2 数据查询
6.2.1 数据查询
6.2.2 数据查询命令
6.2.3 应用实例
6.3 SQL的数据定义功能
6.3.1 CREATE TABLE命令
6.3.2 CREATE CURSOR命令
6.3.3 ALTER TABLE 命令
6.3.4 DROP TABLE命令教学内容第一章 数据库应用基础
6.4 SQL数据更新功能
6.4.1 插入命令
6.4.2 更新命令
6.4.3 删除命令教学内容第一章 数据库应用基础
SQL语言集数据定义,数据操纵和数据控制功能于一体 。 其主要特点有 5个方面 。
1.综合统一
2.高度非过程化
3.面向集合的操作方式
4.两种使用方式
5.语言简洁,易学易用,完成数据定义,数据操纵,数据控制的核心功能只用了 9条命令 。
数据定义命令 ( 3条 ),CREATE,DROP,ALTER
数据查询命令 ( 1条 ),SELECT
数据操纵命令 ( 3条 ),INSERT,UPDATE,DELETE
数据控制命令 ( 2条 ),GRANT,REVOKE
6.1 SQL 语言概述第一章 数据库应用基础
6.2.1 数据查询
SQL 查询模块结构:
SELECT ~
FROM < 单表或多表 >
WHERE < 查询条件 >
其中:
( 1) SELECT短语表示查询输出结果字段 。
( 2) FROM短语表示查询来源 。 可以是数据库表,自由表或视图 。
( 3) WHERE短语表示查询应满足的条件 。
6.2 数据查询第一章 数据库应用基础
6.2.2 数据查询命令
命令格式:
SELECT [ALL|DISTINCT] [〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ]
[,[〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ]… ] FROM 〈 表 〉
[〈 局部别名 〉 ][,〈 表 〉 [〈 局部别名 〉 ]… ] [INTO 〈 目标 〉 ]|[TO FILE〈 文件名 〉 [ADDITIVE]][PREFERENCE〈 名字 〉 ]
[NOCONSOLE] [PLAIN] [NOWAIT] [WHERE〈 连接条件 〉 [AND 〈 连接条件 〉 … ] [AND|OR〈 过滤条件 〉 [AND|OR〈 过滤条件 〉 … ]]]
[GROUP BY〈 组合列表 〉 [,〈 组合列表 〉 … ]] [HAVING 〈 过滤条件 〉 ] [UNION [ALL] 〈 SELECT命令 〉 ] [ORDER BY〈 排序项 〉
[AEC|DESC][,〈 排序项 〉 [ASC|DESC]… ]]
命令功能:从一个或多个数据库中查询数据。
第一章 数据库应用基础命令中短语使用说明:
1,ALL|DISTINCT,DISTINCT表示去掉重复的行 。 缺省时为 ALL表示查询结果中所有的行被显示 。
2,〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ][,[〈 别名 〉,]〈 选择项 〉
[AS〈 列名 〉 ]…,
〈 选择项 〉 可以为:
① FROM子句中数据库文件的字段名 。
② 指定检索结果中具有相同数值的记录的常数 。
③ 用户定义函数名的表达式 。
每个 〈 选择项 〉 产生查询结果中的一列 。 相同名字的 〈 选择项 〉
要指出其数据库别名并在选择项名前加一个小点 。 〈 选择项 〉 排列的顺序为结果显示顺序 。
AS〈 列名 〉,指定查询结果中列的标题。
第一章 数据库应用基础
3,FROM〈 表 〉 [〈 局部别名 〉 ][,〈 表 〉 [〈 局部别名 〉 ]… ]指出包含查询数据的数据库文件 。 〈 局部别名 〉 是由 〈 表 〉 指定的数据库文件的临时别名 。 如果用户指定了一个局部别名,就必须在整个
SELECT中用到数据库名称的地方使用这个局部别名 。
4,INTO 〈 目的地 〉 确定查询结果存放的地方 。 如果包含 INTO子句,
将不产生任何输出 。 如果在同一个查询中既有 INTO子句,又有 TO
子句,TO子句将被忽略 。 如果没有 INTO子句,查询结果将显示在浏览窗口中,也可以用 TO子句直接送文件或打印机上打印输出 。 〈 目的地 〉 可以为:数组,指针或数据库文件 。
5,TO FILE〈 文件名 〉 [ADDITIVE]:将查询结果送到一个 ASCII文本文件,其中 ADDITIVE指可以将查询结果附加到文件末尾 。
第一章 数据库应用基础
6,PREFERENCE〈 名字 〉,用来保存浏览窗口的特性和选项 。
7,NOCONSOLE〈 名字 〉,禁止查询结果在桌面或 Visual FoxPro主窗口显示 。
8,PLAIN:禁止在查询输出中显示列标题 。
9,NOWAIT:打开浏览窗口后继续程序的执行。如果使用 INTO
子句,NOCONSOLE,PLAIN和 NOWAIT将被 忽略。
10,WHERE〈 连接条件 〉 [AND 〈 连接条件 〉 … ] [AND|OR〈 过滤条件 〉 [AND|OR〈 过滤条件 〉 … ]:指定查询应满足的连接条件和过滤条件 。
〈 连接条件 〉 和 〈 过滤条件 〉 的格式为:
〈 表达式 1〉 〈 运算符 〉 〈 表达式 2〉
第一章 数据库应用基础其中,〈 表达式 1〉 和 〈 表达式 2〉 是某表中的字段或字段表达式 。 〈 表达式 2〉 还可以是几个数据的类举组合,甚至是另一个查询 。 〈 运算符 〉 分为三种:
① 普通运算符,=,==,#,〈 〉,! =,〉 =,〈 =,
〈,〉 。
② 扩展运算符,BETWEEN( 在两者之间 ),IN( 集合中的元素 ),LIKE( 使用通配符选择字符串 ),EXTSTS( 子查询,
有一条记录返回就满足条件 )
③ 运算符的修饰符,NOT( 取反 ),ALL( 全部 ),ANY
( 任一 ),SOME( 至少一个 )
第一章 数据库应用基础
11,GROUP BY〈 组合列表 〉 [,〈 组合列表 〉 … ]:分组查询 。 查询中的行组取决于一个或多个列的值 。 〈 组合列表 〉 可以是普通数据库字段名,一个包含 SQL字段函数的字段成一个指定查询结果中数据库的列位置的数值表达式,但不能是字段表达式 。
12,HAVING 〈 过滤条件 〉 与 GROUP BY一起使用指定查询结果中的组必须满足的条件 。 可以根据需要设置多个过滤条件,彼此间用
AND或 OR连接 。 还可用 NOT求反 。
13,UNION [ALL] 〈 SELECT命令 〉,将一个 SELECT子句的最后结果与另一个 SELECT子句的最终结果组合在一起 。 隐含情况下,UNION
检测组合结果并删除重复行 。 可选 ALL禁止删去重复行 。
14,ORDER BY〈 排序项 〉 [AEC|DESC][,〈 排序项 〉
[ASC|DESC]… ]:对查询结果按一个或多个字段的升序或降序排序。
省略排序方式指升序( ASC)排列。若没有指定此项查询结果无序显示。
第一章 数据库应用基础
6.2.3 应用实例例 6,1 查询学生表中学生学号,姓名,出生日期 。 无条件的投影查询,查询命令为:
select 学号,姓名,出生日期 from 学生表例 6,2 查询学生表 1999年入学的学生的姓名,性别,出生日期 。
查询命令为:
select 学号,姓名,出生日期 from 学生表 where val(left(学号,4))=1999
第一章 数据库应用基础例 6,3查询结果如果是一个数据库的全部字段,可用,*” 表示 。
查询学生表中年龄为 20或 21岁的学生情况 。 查询命令为:
select * from 学生表 where (year(date())-year(出生日期 ))=20
or (year(date())-year(出生日期 ))=21
例 6.7 查找学生信息以及所选修课程的课程号及成绩 。
Select 学生表,*,成绩表,*
from 学生表,成绩表
where学生表,学号 =成绩表,学号第一章 数据库应用基础例 6.8 查找学生的学号,姓名以及所选修课程的课程号和成绩 。
select 学生表,学号,学生表,姓名,成绩表,课程号,成绩表,成绩
from学生表 inner join 成绩表 on 学生表,学号=成绩表,学号例 6.9 查询平均成绩 80分以上的学生的学号姓名及平均成绩 。
select 学生 表,学号,姓名,AVG(成绩 )as 平均成绩 from 学生表,
成绩表
where 学生表,学号 =成绩表,学号 group by 学生表,学号
having AVG(成绩 )>80
第一章 数据库应用基础
6.3 SQL的数据定义功能
6.3.1 CREATE TABLE命令
命令格式:
CREATE TABLE| DBF 〈 表名 〉 [FREE]
( 〈 字段名 1〉 〈 类型 〉 [( 〈 宽度 〉 [,〈 小数位数 〉 ]) ]
[NULL|NOT NULL][PRIMARY KEY | UNIQUE] [,FOREIGN KEY
〈 表达式 〉 TAG 〈 标识 〉
REFERENCES 〈 表 2〉 ] [,〈 字段名 2〉 … ]) | FROM ARRAY
〈 数组名 〉
命令功能:在当前最低可用工作区(工作区号最小)中创建一个含有指定字段的表。
第一章 数据库应用基础
说明:
( 1) FREE:指定所创建的表为自由表 。
( 2) NULL|NOT NULL:指定字段值是否允许为空 。 NULL表示允许为空,NOT NULL表示不允许为空 。
( 3) PRIMARY KEY:指定要创建主索引 ( 主键 ) 。
( 4) UNIQUE:指定将此字段值不允许重复 。
( 5) FOREIGN KEY 〈 表达式 〉 TAG 〈 标识 〉,创建一个外部索引 ( 外键 ),并为其指定一个标识名 。
( 6) REFERENCES 〈 表 2〉,指定与本表建立永久关系的父表 。
( 7) FROM ARRAY 〈 数组名 〉,指定一个已存在的数据名,
数组中包含表的每个字段的名称、类型及宽度。数组内容可以用函数 AFIELD()(此函数作用是将表的结构写入数组)定义。
第一章 数据库应用基础
6.3.2 CREATE CURSOR命令
命令格式,CREATE CURSOR 〈 表名 〉 ( 〈 字段名 1〉 〈 类型 〉
[( 〈 宽度 〉 [,〈 小数位数 〉 ]) [,〈 字段名 2〉 … ]]) |
FROM ARRAY 〈 数组名 〉
命令功能:在当前最低可用工作区 ( 工作区号最小 ) 中创建一个含有指定字段的临时表 。 创建表时,要定义每个字段的字段名,数据类型,宽度和小数位数 。 这些信息可以直接从命令中获得,也可以从数组中获得 。
CREATE CURSOR命令建立的临时表具有普通表的一切功能,
如能用 Browse浏览,Index索引,并能增、删记录。但是,一旦关闭,它就被系统自动删除。
第一章 数据库应用基础例 6.12 建立一个临时表 BOOK,它有以下几个字段:书名,
字符型,宽度为 10;作者,字符型,宽度为 8;出版社,字符型,宽度为 20;价格,数值型,宽度为 6,2位小数 。
CREATE CURSOR BOOK( SM C( 10),ZZ C( 8),
CBS C( 20),JG N( 6,2))
DISPLAY STRUCTURE TO BOOK.TXT
第一章 数据库应用基础
6.3.3 ALTER TABLE 命令
1,为表添加新字段
命令格式,ALTER TABLE <表名 >
ADD | ALTER [COLUMN] <字段名 > <字段类型 > [(<字段宽度 > [,<精度 >])]
[CHECK <条件表达式 1> ]
[DEFAULT <值表达式 1>]
[PRIMARY KEY | UNIQUE]
[REFERENCES <表 2> [TAG <标识 >]]
[NULL | NOT NULL]
命令功能:为指定表添加新的字段。
第一章 数据库应用基础说明:
( 1) ADD | ALTER [COLUMN]短语:指定要添加或修改的字段 。
( 2) CHECK <条件表达式 1>:指定字段的有效性规则 。
( 3) DEFAULT <值表达式 1>:指定字段的默认值 。
( 4) PRIMARY KEY,创建与字段名同名的主索引标识 。
( 5) UNIQUE:创建与字段名同名的候选索引标识 。
( 6) REFERENCES <表 2> [TAG <标识 >]:指定与此表建立关系的父表,标识名指定父表中相应标识,建立的关系的是基于此标识的 。
( 7) NULL | NOT NULL:指明字段中是否允许有保存空值。
第一章 数据库应用基础
2,编辑表中已有字段
命令格式,ALTER TABLE <表名 >
ALTER [COLUMN] <字段名 > <字段类型 > [(<字段宽度 >
[,<精度 >])]
[NULL | NOT NULL]
命令功能:编辑修改表中指定字段的数据类型、字段宽度等。
第一章 数据库应用基础
3,删除表中指定字段
命令格式,ALTER TABLE <表名 >
[DROP [COLUMN] <字段名 >
命令功能:删除指定表中已不再需要的字段。
第一章 数据库应用基础
6.3.4 DROP TABLE命令
命令格式,DROP TABLE <表名 >|? [RECYCLE]
命令功能:删除指定的表 。
说明:
( 1)? 参数用于在,删除,对话框中选择要删除的表名 。
( 2) RECYCLE:用于将删除的表放入回收站。
第一章 数据库应用基础
6.4 SQL数据更新功能
6.4.1 插入命令
命令格式:
INSERT INTO 〈 表名 〉 [( 〈 字段名表 〉 ) ] VALUES ( 〈 表达式表 〉 ) | FROM ARRAY 〈 数组名 〉 | FROM MEMVAR
命令功能:在指定的数据库表中增加一条新记录 。
命令中短语使用说明:
( 1) 〈 表名 〉 指定的表,若此表尚未打开,系统自动在一个新的空闲工作区打开它,然后追加新记录,但当前工作区保持不变。
若此表已打开,但不是当前表,则在该表追加记录,当前工作区仍不变。
第一章 数据库应用基础
( 2) 〈 字段名表 〉 指定表中的被插入的字段名,缺省时,按表字段的顺序依次赋值 。
( 3) VALUES〈 表达式 〉 表示要追加到记录的各字段的指定值 。
( 4) FROM ARRAY〈 数组名 〉 表示将 〈 数组名 〉 指定的数组内容按照数组元素的次序依次赋给字段 ( 字段的前后顺序取决于字段的物理次序 ) 。
( 5) FROM MEMVAR表示把与字段同名的内存变量值赋给字段 。
若内存中没有相应的内存变量,该字段为空 。 此项可与 SCATTER
和 GATHER联合使用 。
例 6.17 向课程表插入一条记录,其中课程号为 0009,课程名为
,WEB程序设计,,学分为 2。
insert into "e:\我的文件夹 \visual foxpro教材 \vfp60db\学分表,dbf" value("0009",'WEB程序设计 ',2)
第一章 数据库应用基础命令格式:
UPDATE [<数据库名 >!] <表名 > SET <字段名 1>=<表达式
1>
[,<字段名 2>=<表达式 2>,..] WHERE <条件 1> [AND | OR <条件 2>,..]]
命令功能:在指定的表中为满足给定条件的记录进行数据更新 。 命令中短语使用说明:
( 1) <数据库名 >!:指定要进行更新操作的数据库名 。 如果是当前数据库,可以省略 。
( 2) <表名 >:指定要更新的表 。
6.4.2 更新命令第一章 数据库应用基础
( 3) SET <字段名 1>=<表达式 1>[,<字段名 2>=<表达式 2>,..]:
指定要更新的字段,以及这些字段的新值。如果省略了 WHERE子句,则每一个记录字段都用相同的值更新。 ( 4) WHERE <条件
1> [AND | OR <条件 2>,..]:筛选出要更新的记录。可以有多个条件,条件之间用 AND或 OR操作符连接。也可用 NOT取反,或用 EMPTY()函数检查字段是否为空。
例 6.18 在学籍管理系统数据库中修改学号为,1999240”的电话为 8712105,可执行如下命令:
OPEN DATABASE 学籍管理系统
update 学生表 set 电话 ="8712105" where 姓名 ="张浩 "
第一章 数据库应用基础
命令格式:
DELETE FROM [<数据库名 >!] <表名 > WHERE <条件 1> [AND
| OR <条件 2>,..]]
命令功能:在指定的表中删除满足给定条件的记录 。
例 6.19 在学籍管理系统数据库中删除学号为,1999240”的学生信息,可执行如下命令:
OPEN DATABASE 学籍管理系统
DELETE FROM 学生表 where 学号 ="1999240"
6.4.3 删除命令
SQL语言
SQL( Structure Query language) 是结构化查询语言的英文缩写 。 SQL语言是一种标准的关系数据库查询语言,充分体现了关系数据语言的特点和优点 。
第一章 数据库应用基础
6.1 SQL 语言概述
6.2 数据查询
6.2.1 数据查询
6.2.2 数据查询命令
6.2.3 应用实例
6.3 SQL的数据定义功能
6.3.1 CREATE TABLE命令
6.3.2 CREATE CURSOR命令
6.3.3 ALTER TABLE 命令
6.3.4 DROP TABLE命令教学内容第一章 数据库应用基础
6.4 SQL数据更新功能
6.4.1 插入命令
6.4.2 更新命令
6.4.3 删除命令教学内容第一章 数据库应用基础
SQL语言集数据定义,数据操纵和数据控制功能于一体 。 其主要特点有 5个方面 。
1.综合统一
2.高度非过程化
3.面向集合的操作方式
4.两种使用方式
5.语言简洁,易学易用,完成数据定义,数据操纵,数据控制的核心功能只用了 9条命令 。
数据定义命令 ( 3条 ),CREATE,DROP,ALTER
数据查询命令 ( 1条 ),SELECT
数据操纵命令 ( 3条 ),INSERT,UPDATE,DELETE
数据控制命令 ( 2条 ),GRANT,REVOKE
6.1 SQL 语言概述第一章 数据库应用基础
6.2.1 数据查询
SQL 查询模块结构:
SELECT ~
FROM < 单表或多表 >
WHERE < 查询条件 >
其中:
( 1) SELECT短语表示查询输出结果字段 。
( 2) FROM短语表示查询来源 。 可以是数据库表,自由表或视图 。
( 3) WHERE短语表示查询应满足的条件 。
6.2 数据查询第一章 数据库应用基础
6.2.2 数据查询命令
命令格式:
SELECT [ALL|DISTINCT] [〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ]
[,[〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ]… ] FROM 〈 表 〉
[〈 局部别名 〉 ][,〈 表 〉 [〈 局部别名 〉 ]… ] [INTO 〈 目标 〉 ]|[TO FILE〈 文件名 〉 [ADDITIVE]][PREFERENCE〈 名字 〉 ]
[NOCONSOLE] [PLAIN] [NOWAIT] [WHERE〈 连接条件 〉 [AND 〈 连接条件 〉 … ] [AND|OR〈 过滤条件 〉 [AND|OR〈 过滤条件 〉 … ]]]
[GROUP BY〈 组合列表 〉 [,〈 组合列表 〉 … ]] [HAVING 〈 过滤条件 〉 ] [UNION [ALL] 〈 SELECT命令 〉 ] [ORDER BY〈 排序项 〉
[AEC|DESC][,〈 排序项 〉 [ASC|DESC]… ]]
命令功能:从一个或多个数据库中查询数据。
第一章 数据库应用基础命令中短语使用说明:
1,ALL|DISTINCT,DISTINCT表示去掉重复的行 。 缺省时为 ALL表示查询结果中所有的行被显示 。
2,〈 别名 〉,]〈 选择项 〉 [AS〈 列名 〉 ][,[〈 别名 〉,]〈 选择项 〉
[AS〈 列名 〉 ]…,
〈 选择项 〉 可以为:
① FROM子句中数据库文件的字段名 。
② 指定检索结果中具有相同数值的记录的常数 。
③ 用户定义函数名的表达式 。
每个 〈 选择项 〉 产生查询结果中的一列 。 相同名字的 〈 选择项 〉
要指出其数据库别名并在选择项名前加一个小点 。 〈 选择项 〉 排列的顺序为结果显示顺序 。
AS〈 列名 〉,指定查询结果中列的标题。
第一章 数据库应用基础
3,FROM〈 表 〉 [〈 局部别名 〉 ][,〈 表 〉 [〈 局部别名 〉 ]… ]指出包含查询数据的数据库文件 。 〈 局部别名 〉 是由 〈 表 〉 指定的数据库文件的临时别名 。 如果用户指定了一个局部别名,就必须在整个
SELECT中用到数据库名称的地方使用这个局部别名 。
4,INTO 〈 目的地 〉 确定查询结果存放的地方 。 如果包含 INTO子句,
将不产生任何输出 。 如果在同一个查询中既有 INTO子句,又有 TO
子句,TO子句将被忽略 。 如果没有 INTO子句,查询结果将显示在浏览窗口中,也可以用 TO子句直接送文件或打印机上打印输出 。 〈 目的地 〉 可以为:数组,指针或数据库文件 。
5,TO FILE〈 文件名 〉 [ADDITIVE]:将查询结果送到一个 ASCII文本文件,其中 ADDITIVE指可以将查询结果附加到文件末尾 。
第一章 数据库应用基础
6,PREFERENCE〈 名字 〉,用来保存浏览窗口的特性和选项 。
7,NOCONSOLE〈 名字 〉,禁止查询结果在桌面或 Visual FoxPro主窗口显示 。
8,PLAIN:禁止在查询输出中显示列标题 。
9,NOWAIT:打开浏览窗口后继续程序的执行。如果使用 INTO
子句,NOCONSOLE,PLAIN和 NOWAIT将被 忽略。
10,WHERE〈 连接条件 〉 [AND 〈 连接条件 〉 … ] [AND|OR〈 过滤条件 〉 [AND|OR〈 过滤条件 〉 … ]:指定查询应满足的连接条件和过滤条件 。
〈 连接条件 〉 和 〈 过滤条件 〉 的格式为:
〈 表达式 1〉 〈 运算符 〉 〈 表达式 2〉
第一章 数据库应用基础其中,〈 表达式 1〉 和 〈 表达式 2〉 是某表中的字段或字段表达式 。 〈 表达式 2〉 还可以是几个数据的类举组合,甚至是另一个查询 。 〈 运算符 〉 分为三种:
① 普通运算符,=,==,#,〈 〉,! =,〉 =,〈 =,
〈,〉 。
② 扩展运算符,BETWEEN( 在两者之间 ),IN( 集合中的元素 ),LIKE( 使用通配符选择字符串 ),EXTSTS( 子查询,
有一条记录返回就满足条件 )
③ 运算符的修饰符,NOT( 取反 ),ALL( 全部 ),ANY
( 任一 ),SOME( 至少一个 )
第一章 数据库应用基础
11,GROUP BY〈 组合列表 〉 [,〈 组合列表 〉 … ]:分组查询 。 查询中的行组取决于一个或多个列的值 。 〈 组合列表 〉 可以是普通数据库字段名,一个包含 SQL字段函数的字段成一个指定查询结果中数据库的列位置的数值表达式,但不能是字段表达式 。
12,HAVING 〈 过滤条件 〉 与 GROUP BY一起使用指定查询结果中的组必须满足的条件 。 可以根据需要设置多个过滤条件,彼此间用
AND或 OR连接 。 还可用 NOT求反 。
13,UNION [ALL] 〈 SELECT命令 〉,将一个 SELECT子句的最后结果与另一个 SELECT子句的最终结果组合在一起 。 隐含情况下,UNION
检测组合结果并删除重复行 。 可选 ALL禁止删去重复行 。
14,ORDER BY〈 排序项 〉 [AEC|DESC][,〈 排序项 〉
[ASC|DESC]… ]:对查询结果按一个或多个字段的升序或降序排序。
省略排序方式指升序( ASC)排列。若没有指定此项查询结果无序显示。
第一章 数据库应用基础
6.2.3 应用实例例 6,1 查询学生表中学生学号,姓名,出生日期 。 无条件的投影查询,查询命令为:
select 学号,姓名,出生日期 from 学生表例 6,2 查询学生表 1999年入学的学生的姓名,性别,出生日期 。
查询命令为:
select 学号,姓名,出生日期 from 学生表 where val(left(学号,4))=1999
第一章 数据库应用基础例 6,3查询结果如果是一个数据库的全部字段,可用,*” 表示 。
查询学生表中年龄为 20或 21岁的学生情况 。 查询命令为:
select * from 学生表 where (year(date())-year(出生日期 ))=20
or (year(date())-year(出生日期 ))=21
例 6.7 查找学生信息以及所选修课程的课程号及成绩 。
Select 学生表,*,成绩表,*
from 学生表,成绩表
where学生表,学号 =成绩表,学号第一章 数据库应用基础例 6.8 查找学生的学号,姓名以及所选修课程的课程号和成绩 。
select 学生表,学号,学生表,姓名,成绩表,课程号,成绩表,成绩
from学生表 inner join 成绩表 on 学生表,学号=成绩表,学号例 6.9 查询平均成绩 80分以上的学生的学号姓名及平均成绩 。
select 学生 表,学号,姓名,AVG(成绩 )as 平均成绩 from 学生表,
成绩表
where 学生表,学号 =成绩表,学号 group by 学生表,学号
having AVG(成绩 )>80
第一章 数据库应用基础
6.3 SQL的数据定义功能
6.3.1 CREATE TABLE命令
命令格式:
CREATE TABLE| DBF 〈 表名 〉 [FREE]
( 〈 字段名 1〉 〈 类型 〉 [( 〈 宽度 〉 [,〈 小数位数 〉 ]) ]
[NULL|NOT NULL][PRIMARY KEY | UNIQUE] [,FOREIGN KEY
〈 表达式 〉 TAG 〈 标识 〉
REFERENCES 〈 表 2〉 ] [,〈 字段名 2〉 … ]) | FROM ARRAY
〈 数组名 〉
命令功能:在当前最低可用工作区(工作区号最小)中创建一个含有指定字段的表。
第一章 数据库应用基础
说明:
( 1) FREE:指定所创建的表为自由表 。
( 2) NULL|NOT NULL:指定字段值是否允许为空 。 NULL表示允许为空,NOT NULL表示不允许为空 。
( 3) PRIMARY KEY:指定要创建主索引 ( 主键 ) 。
( 4) UNIQUE:指定将此字段值不允许重复 。
( 5) FOREIGN KEY 〈 表达式 〉 TAG 〈 标识 〉,创建一个外部索引 ( 外键 ),并为其指定一个标识名 。
( 6) REFERENCES 〈 表 2〉,指定与本表建立永久关系的父表 。
( 7) FROM ARRAY 〈 数组名 〉,指定一个已存在的数据名,
数组中包含表的每个字段的名称、类型及宽度。数组内容可以用函数 AFIELD()(此函数作用是将表的结构写入数组)定义。
第一章 数据库应用基础
6.3.2 CREATE CURSOR命令
命令格式,CREATE CURSOR 〈 表名 〉 ( 〈 字段名 1〉 〈 类型 〉
[( 〈 宽度 〉 [,〈 小数位数 〉 ]) [,〈 字段名 2〉 … ]]) |
FROM ARRAY 〈 数组名 〉
命令功能:在当前最低可用工作区 ( 工作区号最小 ) 中创建一个含有指定字段的临时表 。 创建表时,要定义每个字段的字段名,数据类型,宽度和小数位数 。 这些信息可以直接从命令中获得,也可以从数组中获得 。
CREATE CURSOR命令建立的临时表具有普通表的一切功能,
如能用 Browse浏览,Index索引,并能增、删记录。但是,一旦关闭,它就被系统自动删除。
第一章 数据库应用基础例 6.12 建立一个临时表 BOOK,它有以下几个字段:书名,
字符型,宽度为 10;作者,字符型,宽度为 8;出版社,字符型,宽度为 20;价格,数值型,宽度为 6,2位小数 。
CREATE CURSOR BOOK( SM C( 10),ZZ C( 8),
CBS C( 20),JG N( 6,2))
DISPLAY STRUCTURE TO BOOK.TXT
第一章 数据库应用基础
6.3.3 ALTER TABLE 命令
1,为表添加新字段
命令格式,ALTER TABLE <表名 >
ADD | ALTER [COLUMN] <字段名 > <字段类型 > [(<字段宽度 > [,<精度 >])]
[CHECK <条件表达式 1> ]
[DEFAULT <值表达式 1>]
[PRIMARY KEY | UNIQUE]
[REFERENCES <表 2> [TAG <标识 >]]
[NULL | NOT NULL]
命令功能:为指定表添加新的字段。
第一章 数据库应用基础说明:
( 1) ADD | ALTER [COLUMN]短语:指定要添加或修改的字段 。
( 2) CHECK <条件表达式 1>:指定字段的有效性规则 。
( 3) DEFAULT <值表达式 1>:指定字段的默认值 。
( 4) PRIMARY KEY,创建与字段名同名的主索引标识 。
( 5) UNIQUE:创建与字段名同名的候选索引标识 。
( 6) REFERENCES <表 2> [TAG <标识 >]:指定与此表建立关系的父表,标识名指定父表中相应标识,建立的关系的是基于此标识的 。
( 7) NULL | NOT NULL:指明字段中是否允许有保存空值。
第一章 数据库应用基础
2,编辑表中已有字段
命令格式,ALTER TABLE <表名 >
ALTER [COLUMN] <字段名 > <字段类型 > [(<字段宽度 >
[,<精度 >])]
[NULL | NOT NULL]
命令功能:编辑修改表中指定字段的数据类型、字段宽度等。
第一章 数据库应用基础
3,删除表中指定字段
命令格式,ALTER TABLE <表名 >
[DROP [COLUMN] <字段名 >
命令功能:删除指定表中已不再需要的字段。
第一章 数据库应用基础
6.3.4 DROP TABLE命令
命令格式,DROP TABLE <表名 >|? [RECYCLE]
命令功能:删除指定的表 。
说明:
( 1)? 参数用于在,删除,对话框中选择要删除的表名 。
( 2) RECYCLE:用于将删除的表放入回收站。
第一章 数据库应用基础
6.4 SQL数据更新功能
6.4.1 插入命令
命令格式:
INSERT INTO 〈 表名 〉 [( 〈 字段名表 〉 ) ] VALUES ( 〈 表达式表 〉 ) | FROM ARRAY 〈 数组名 〉 | FROM MEMVAR
命令功能:在指定的数据库表中增加一条新记录 。
命令中短语使用说明:
( 1) 〈 表名 〉 指定的表,若此表尚未打开,系统自动在一个新的空闲工作区打开它,然后追加新记录,但当前工作区保持不变。
若此表已打开,但不是当前表,则在该表追加记录,当前工作区仍不变。
第一章 数据库应用基础
( 2) 〈 字段名表 〉 指定表中的被插入的字段名,缺省时,按表字段的顺序依次赋值 。
( 3) VALUES〈 表达式 〉 表示要追加到记录的各字段的指定值 。
( 4) FROM ARRAY〈 数组名 〉 表示将 〈 数组名 〉 指定的数组内容按照数组元素的次序依次赋给字段 ( 字段的前后顺序取决于字段的物理次序 ) 。
( 5) FROM MEMVAR表示把与字段同名的内存变量值赋给字段 。
若内存中没有相应的内存变量,该字段为空 。 此项可与 SCATTER
和 GATHER联合使用 。
例 6.17 向课程表插入一条记录,其中课程号为 0009,课程名为
,WEB程序设计,,学分为 2。
insert into "e:\我的文件夹 \visual foxpro教材 \vfp60db\学分表,dbf" value("0009",'WEB程序设计 ',2)
第一章 数据库应用基础命令格式:
UPDATE [<数据库名 >!] <表名 > SET <字段名 1>=<表达式
1>
[,<字段名 2>=<表达式 2>,..] WHERE <条件 1> [AND | OR <条件 2>,..]]
命令功能:在指定的表中为满足给定条件的记录进行数据更新 。 命令中短语使用说明:
( 1) <数据库名 >!:指定要进行更新操作的数据库名 。 如果是当前数据库,可以省略 。
( 2) <表名 >:指定要更新的表 。
6.4.2 更新命令第一章 数据库应用基础
( 3) SET <字段名 1>=<表达式 1>[,<字段名 2>=<表达式 2>,..]:
指定要更新的字段,以及这些字段的新值。如果省略了 WHERE子句,则每一个记录字段都用相同的值更新。 ( 4) WHERE <条件
1> [AND | OR <条件 2>,..]:筛选出要更新的记录。可以有多个条件,条件之间用 AND或 OR操作符连接。也可用 NOT取反,或用 EMPTY()函数检查字段是否为空。
例 6.18 在学籍管理系统数据库中修改学号为,1999240”的电话为 8712105,可执行如下命令:
OPEN DATABASE 学籍管理系统
update 学生表 set 电话 ="8712105" where 姓名 ="张浩 "
第一章 数据库应用基础
命令格式:
DELETE FROM [<数据库名 >!] <表名 > WHERE <条件 1> [AND
| OR <条件 2>,..]]
命令功能:在指定的表中删除满足给定条件的记录 。
例 6.19 在学籍管理系统数据库中删除学号为,1999240”的学生信息,可执行如下命令:
OPEN DATABASE 学籍管理系统
DELETE FROM 学生表 where 学号 ="1999240"
6.4.3 删除命令