本 章 内 容

17
§5.1 SQL 概概 §5.2 概概概概 SELECT-SQL §5.2.1 概概概概 §5.2.2 概概概概 §5.2.3 概概概概 概概概 概概概概概 SQL 概概 §5.2.4 概概概概 §5.2.5 概概概概概概 §5.3 本本 SQL 本本 §5.3.1 本本本本本 SQL 本本 §5.3.2 本本本本本 SQL 本本

Upload: geri

Post on 05-Jan-2016

61 views

Category:

Documents


7 download

DESCRIPTION

第五章 关系数据库 SQL 语言. 本 章 内 容. §5.1 SQL 概述 §5.2 查询语句 SELECT-SQL §5.2.1 单表查询 §5.2.2 多表查询 §5.2.3 嵌套查询. §5.2.4 自联查询 §5.2.5 集合的并运算 §5.3 其他 SQL 命令 §5.3.1 定义功能的 SQL 语句 §5.3.2 操作功能的 SQL 语句. §5.3  其他 SQL 命令. §5.3.1  定义功能的 SQL 语句. 1 .定义表的结构 ( 1 )定义表结构的完整命令 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 本  章  内  容

本 章 内 容§5.1 SQL 概述§5.2 查询语句 SELECT-SQL

§5.2.1 单表查询 §5.2.2 多表查询 §5.2.3 嵌套查询

第五章 关系数据库 SQL 语言

§5.2.4 自联查询 §5.2.5 集合的并运算§5.3 其他SQL命令

§5.3.1 定义功能的SQL语句

§5.3.2 操作功能的SQL语句

Page 2: 本  章  内  容

§5.3  其他 SQL 命令

1 .定义表的结构( 1 )定义表结构的完整命令格式: CREATE TABLE | DBF < 表名 1> [NAME < 长名 >] [FREE] ;

(< 字段名 1> < 类型 > [(< 宽度 > [,< 小数位数 >] ) ] ;

[CHECK < 条件 > [ERROR < 提示 >] ] ; &&定义域的完整性 [DEFAULT < 表达式 1>]; &&定义缺省值 [PRIMARY KEY | UNIQUE]; &&定义主关键字或候选关键字 [ ,< 字段名 2>… ] )

| FROM ARRARY < 数组名 >

功能:创建一个给定每一个字段的名称、类型、宽度、小数位数等参数的新表。

§5.3.1  定义功能的 SQL 语句

Page 3: 本  章  内  容

( 2 )定义表结构的简化命令CREATE TABLE < 表名 >;

(< 字段名 1> < 类型 > [(< 宽度 > [,< 小数位数 >])] ;

[,< 字段名 2> < 类型 > [(< 宽度 > [,< 小数位数 >])],…])

【例 5 - 27 】使用 CREATE TABLE-SQL 命令创建职工表Staffs.dbf ,该表包括以下字段:职工号( C,6 ),姓名( C,8 ),性别( C,2 ),出生日期( D ),婚否( L ),工资( N,8,2 ),简历( M )。

Page 4: 本  章  内  容

 在命令窗口键入以下命令:CREATE TABLE Staffs;

( 职工号 C(6), 姓名 C(8), 性别 C(2), 出生日期 D, 婚否 L, 工资 N(8,2), 简历 M)

所创建的表 Staffs.dbf 的结构如图 5 - 29 所示。

图 5- 29 表 Staffs.dbf的结构

Page 5: 本  章  内  容

2 .修改表结构命令命令格式:ALTER TABLE < 表名 >;

ADD| DROP| ALTER < 字段名 > < 类型 > [(< 宽度 > [,< 小数位数>])];

[CHECK < 条件 > [ERROR < 提示 >]] ;

[DEFAULT < 表达式 1>];

[PRIMARY KEY | UNIQUE]

功能:对指定的表添加字段,或删除和修改已有的字段。说明:该命令可以分解成以下 3 个命令:

Page 6: 本  章  内  容

命令格式 1 :ALTER TABLE < 表名 > ;

ADD < 字段名 1> < 类型 > (< 宽度 > [,< 小数位数 >]);

[ADD < 字段名 2> < 类型 > (< 宽度 > [,< 小数位数 >])…]

功能 1 :添加指定的表文件的字段。命令格式 2 :ALTER TABLE < 表名 > ;

ALTER < 字段名 1> < 类型 > (< 宽度 > [,< 小数位数 >]);

[ALTER < 字段名 2> < 类型 > (< 宽度 > [,< 小数位数 >])…]

功能 2 :修改指定的表文件的字段。命令格式 3 :ALTER TABLE < 表名 > ;

DROP < 字段名 1> ;

[DROP < 字段名 2>…]

功能 3 :删除指定的表文件的指定字段。说明 3 :删除字段只需指明字段名,而不必指明字段的类型和宽度。

Page 7: 本  章  内  容

【例 5 - 28 】在职工表 Staffs.dbf 中,添加一个字段:职务( C,6 ),并删除“简历”字段。在命令窗口键入以下命令:ALTER TABLE Staffs ADD 职务 C(6)

ALTER TABLE Staffs DROP 简历

【例 5 - 29 】创建一个数据库“职工 .DBC” ;将职工表Staffs.dbf 添加到数据库“职工 .DBC” 中;然后在职工表Staffs.dbf 中,将“职工号”字段设置为主索引,将“姓名”字段设置为非空,将“婚否”字段的默认值设置为 .T. ,将“职务”字段设置为空值( NULL ),将“工资”字段的约束条件设置为大等于 800 元。要求全部使用命令完成以上的操作。

Page 8: 本  章  内  容

在命令窗口键入以下命令: CREATE DATABASE 职工 && 创建数据库 ADD TABLE Staffs && 将表添加到数据库

执行以上两条命令后,“数据库设计器”窗口如图 5 - 30 所示。

图 5- 30 “数据库设计器”窗口

Page 9: 本  章  内  容

ALTER TABLE Staffs ;

ALTER 职工号 C(6) PRIMARY KEY ;

ALTER 姓名 C(8) NOT NULL ;

ALTER 婚否 L DEFAULT .T. ;

ALTER 职务 C(6) NULL ;

ALTER 工资 N(8,2) CHECK ( 工资 >=800) ERROR " 工资必须大等于 800 !"

Page 10: 本  章  内  容

 键入以上命令后,“表设计器”对话框如图 5 - 31 所示。

图 5- 31 “表设计器”对话框

Page 11: 本  章  内  容

3 .删除表文件 格式: DROP TABLE < 表名 >

说明:若要删除数据库中的表,该数据库应是打开的当前数据库。 4 .定义视图 格式: CREATE VIEW < 视图名 > AS <SELECT-SQL 命令 >

5 .删除视图 格式: DROP VIEW < 视图名 >

删除表的命令是 DROP TABLE < 表名 > ,删除视图的命令是 DROP VIEW < 视图名 > ,请注意两条命令的相似格式。

Page 12: 本  章  内  容

1 .插入记录(追加记录)命令格式 1 :INSERT INTO < 表名 > [(< 字段名 1> [,< 字段名 2>,…]) ] ;

VALUES (< 表达式 1> [,< 表达式 2>,…])

功能 1 :在表的末尾追加一条记录。说明 1 :新记录的字段值由 VALUES 子句指定中的表达式指定,未指定值的字段取空值。若为新记录的部分字段指定数据,则必须在命令中指明被赋值的字段名;若为新记录的全部字段指定数据,则字段名可省略。命令格式 2 :INSERT INTO < 表名 > FROM ARRAY < 数组名 >| FROM < 内存变量名表>

功能 2 :以数组或内存变量的值作为记录的数据,在表的末尾追加一条记录。说明 2 :若选用 FROM ARRAY < 数组名 > ,则使用指定数组的值追加新记录。若选用 FROM < 内存变量名表 > ,则使用与字段变量同名的内存变量的值追加新记录,如果同名的内存变量不存在,那么相应的字段为默认值或空。

§5.3.2  操作功能的 SQL 语句

Page 13: 本  章  内  容

【例 5 - 30 】使用 INSERT-SQL 命令,在职工表 Staffs.dbf 末尾追加一条新记录:职工号: "100026" ,姓名: " 李小明 " ,工资: 900 。 在命令窗口键入以下命令:INSERT INTO Staffs( 职工号 , 姓名 , 工资 ) VALUES("100026"," 李小明 ",900)

该 INSERT-SQL 命令等效于以下的 VFP 命令序列:USE Staffs

APPEND BLANK

REPLACE 职工号 WITH "100026", 姓名 WITH " 李小明 ", 工资 WITH 900

Page 14: 本  章  内  容

【例 5 - 31 】使用 INSERT-SQL 命令,在职工表 Staffs.dbf 末尾追加一条新记录: "100029"," 李新 "," 男 ",{^1973-10-10},.T.,1200.50," 科长 " 。 在命令窗口键入以下命令: INSERT INTO Staffs;

VALUES("100029", " 李新 ", " 男 ",{^1973-10-10},.T.,1200.50," 科长 ")

&&追加完整的记录,不必指明字段名。 执行了以上两条插入记录的 SQL 命令后,表的浏览窗口如图 5 - 32所示。图 5 - 20 所示。

图 5- 32 表 Staffs.dbf的浏览窗口

Page 15: 本  章  内  容

2 .更新记录命令格式:UPDATE < 表名 >;

SET < 字段名 1>=< 表达式 1>[,< 字段名 2>=< 表达式 2>,…];

[WHERE < 条件 >]

功能:在指定的表中对满足条件的记录,用表达式的值替换字段的值。说明:若缺省 WHERE 子句,则默认所有记录。

【例 5 - 32 】使用 UPDATE-SQL 命令,将职工表 Staffs.dbf中李新的工资提高 20% 。在命令窗口键入以下命令:UPDATE Staffs SET 工资 = 工资 *(1+0.2) WHERE 姓名 =" 李新 "

Page 16: 本  章  内  容

3 .逻辑删除记录 命令格式: DELETE FROM < 表名 > [WHERE < 条件 >]

功能:在指定的表中,对满足条件的记录加上删除标记。 说明: 1 )若缺省 WHERE 子句,则默认所有记录。 2 )若要物理地删除记录,则还要执行 PACK 命令。 【例 5 - 33 】首先执行 BROWSE 命令,将李小明的出生日期改为 1976 年 12 月 25 日(李新的出生日期改为 1973 年 10 月10 日),然后使用 DELETE-SQL 命令,把职工表 Staffs.dbf 中1975 年之前出生的职工记录删除。 操作步骤如下: 在浏览窗口打开 Staffs.dbf 表,修改“出生日期”字段的值。 在命令窗口键入以下命令: DELETE FROM Staffs WHERE YEAR( 出生日期 )<1975

Page 17: 本  章  内  容

执行了逻辑删除记录的 SQL 命令后,表的浏览窗口如图 5- 33 所示。

图 5- 33 记录更新和逻辑删除后表的浏览窗口

该 DELETE-SQL命令等效于以下命令序列: USE Staffs DELETE FOR YEAR(出生日期 )<1975若要物理删除表记录,则要在命令窗口键入: PACK