Download - 本 章 内 容

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


Top Related