1 / 17

本 章 内 容

第五章 关系数据库 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 )定义表结构的完整命令

geri
Download Presentation

本 章 内 容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 关系数据库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语句

  2. §5.3 其他SQL命令 §5.3.1 定义功能的SQL语句 1.定义表的结构 (1)定义表结构的完整命令 格式:CREATE TABLE | DBF <表名1> [NAME <长名>] [FREE] ; (<字段名1> <类型> [(<宽度> [,<小数位数>] ) ] ; [CHECK <条件> [ERROR <提示>] ] ;&&定义域的完整性 [DEFAULT <表达式1>];&&定义缺省值 [PRIMARY KEY | UNIQUE];&&定义主关键字或候选关键字 [ ,<字段名2>… ] ) | FROM ARRARY <数组名> 功能:创建一个给定每一个字段的名称、类型、宽度、小数位数等参数的新表。

  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)。

  4.  在命令窗口键入以下命令: CREATE TABLE Staffs; (职工号 C(6),姓名 C(8),性别 C(2),出生日期 D,婚否 L,工资 N(8,2),简历 M) 所创建的表Staffs.dbf的结构如图5-29所示。 图5-29 表Staffs.dbf的结构

  5. 2.修改表结构命令 命令格式: ALTER TABLE <表名>; ADD| DROP| ALTER <字段名> <类型> [(<宽度> [,<小数位数>])]; [CHECK <条件> [ERROR <提示>]] ; [DEFAULT <表达式1>]; [PRIMARY KEY | UNIQUE] 功能:对指定的表添加字段,或删除和修改已有的字段。 说明:该命令可以分解成以下3个命令:

  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:删除字段只需指明字段名,而不必指明字段的类型和宽度。

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

  8. 在命令窗口键入以下命令: CREATE DATABASE 职工 &&创建数据库 ADD TABLE Staffs &&将表添加到数据库 执行以上两条命令后,“数据库设计器”窗口如图5-30所示。 图5-30 “数据库设计器”窗口

  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! "

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

  11. 3.删除表文件 格式:DROPTABLE <表名> 说明:若要删除数据库中的表,该数据库应是打开的当前数据库。 4.定义视图 格式:CREATE VIEW <视图名> AS <SELECT-SQL命令> 5.删除视图 格式:DROP VIEW<视图名> 删除表的命令是DROP TABLE <表名>,删除视图的命令是DROP VIEW <视图名>,请注意两条命令的相似格式。

  12. §5.3.2 操作功能的SQL语句 1.插入记录(追加记录) 命令格式1: INSERT INTO <表名> [(<字段名1> [,<字段名2>,…]) ] ; VALUES (<表达式1> [,<表达式2>,…]) 功能1:在表的末尾追加一条记录。 说明1:新记录的字段值由VALUES子句指定中的表达式指定,未指定值的字段取空值。若为新记录的部分字段指定数据,则必须在命令中指明被赋值的字段名;若为新记录的全部字段指定数据,则字段名可省略。 命令格式2: INSERT INTO <表名> FROM ARRAY <数组名>| FROM <内存变量名表> 功能2:以数组或内存变量的值作为记录的数据,在表的末尾追加一条记录。 说明2:若选用FROM ARRAY <数组名>,则使用指定数组的值追加新记录。若选用FROM <内存变量名表>,则使用与字段变量同名的内存变量的值追加新记录,如果同名的内存变量不存在,那么相应的字段为默认值或空。

  13. 【例5-30】使用INSERT-SQL命令,在职工表Staffs.dbf末尾追加一条新记录:职工号:"100026",姓名:"李小明",工资:900。【例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

  14. 【例5-31】使用INSERT-SQL命令,在职工表Staffs.dbf末尾追加一条新记录:"100029","李新","男",{^1973-10-10},.T.,1200.50,"科长"。【例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的浏览窗口

  15. 2.更新记录 命令格式: UPDATE <表名>; SET <字段名1>=<表达式1>[,<字段名2>=<表达式2>,…]; [WHERE <条件>] 功能:在指定的表中对满足条件的记录,用表达式的值替换字段的值。 说明:若缺省WHERE子句,则默认所有记录。 【例5-32】使用UPDATE-SQL命令,将职工表Staffs.dbf中李新的工资提高20%。 在命令窗口键入以下命令: UPDATE Staffs SET 工资=工资*(1+0.2) WHERE 姓名="李新"

  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

  17. 执行了逻辑删除记录的SQL命令后,表的浏览窗口如图5-33所示。执行了逻辑删除记录的SQL命令后,表的浏览窗口如图5-33所示。 图5-33 记录更新和逻辑删除后表的浏览窗口 该DELETE-SQL命令等效于以下命令序列: USE Staffs DELETE FOR YEAR(出生日期)<1975 若要物理删除表记录,则要在命令窗口键入:PACK

More Related