收藏 分享(赏)

VFP SQL语言.ppt

上传人:wspkg9802 文档编号:6545377 上传时间:2019-04-16 格式:PPT 页数:65 大小:445KB
下载 相关 举报
VFP SQL语言.ppt_第1页
第1页 / 共65页
VFP SQL语言.ppt_第2页
第2页 / 共65页
VFP SQL语言.ppt_第3页
第3页 / 共65页
VFP SQL语言.ppt_第4页
第4页 / 共65页
VFP SQL语言.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、2019/4/16,1,第五章 关系数据库结构化 查询语言 SQL,2019/4/16,2,5.1 SQL语言概述 5.2 SQL数据定义功能 5.3 SQL数据查询功能 5.4 SQL数据修改功能,第五章 目 录,2019/4/16,3,5.1 SQL语言概述,SQL是Structured Query Language(结构化查询语言)的缩写,是一种用于关系数据库操作的标准语言,包括了对关系数据库的查询、操纵、定义、控制和管理等功能,是一个综合的、通用的、功能极强的关系数据库语言。,SQL语言按照功能可以分为四大类: 数据查询语言DQL:查询数据 数据定义语言DDL:建立(Create)、删

2、除(Drop)和修改(Alter)数据对象。 数据操纵语言DML:完成数据操作的命令,包括插入(Insert)、更新(Update)和删除(Delete)。 数据控制语言DCL:控制对数据库的访问,服务器的关闭、启动等(Grant、Revoke)。,2019/4/16,4,SQL语言具有以下特点: SQL是一种一体化的语言。 SQL是一种高度非过程化的语言。 SQL语言非常简洁,只有为数不多的几条命令。 SQL是关系数据库的通用语言。 SQL命令有交互式和嵌入式两种使用方式。,2019/4/16,5,SQL语言命令分类:功能 命令 数据查询 Select 数据定义 Create,Drop,Al

3、ter 数据操纵 Instert,Update,Delete 数据控制 Grant,Revoke,2019/4/16,6,5.2 SQL数据查询功能,Select命令是SQL的数据查询命令,是SQL语言的核心内容。 Select命令由多个子句构成,某些子句是必需的,而另外一些子句是可选的,Select命令的执行结果是生成一个新的关系。,2019/4/16,7,Select命令的基本结构: Select All | Distinct Top nExpr Percent Alias. Select_Item As Column_Name , Alias. Select_Item As Column

4、_Name . From DatabaseName! Table As Local_Alias Inner | Left Outer | Right Outer | Full Outer Join DatabaseName! Table As Local_Alias On JoinCondition Where JoinCondition And JoinCondition . And | Or FilterCondition And | Or FilterCondition . Group By GroupColumn , GroupColumn . Having FilterConditi

5、on Order By Order_Item Asc | Desc , Order_Item Asc | Desc . Into Destination | To File FileName Additive | To Printer Prompt | To Screen Union All SelectCommand,2019/4/16,8,说明: Select子句说明要查询的数据项(Select_Item),其中可以包含字段名、统计函数、表达式、常量,如果这一部分用“*”来代替,则表示输出表中的所有列(字段)。,Select子句中的保留字: All表示显示查询结果的所有记录行; Disti

6、nct表示去掉查询结果中重复的记录行; ToP nExpr 表示只保留查询结果中排列在前面的、由数值表达式nExpr确定数量的行。,2019/4/16,9, From子句是必需与Select子句联合使用的子句,不可缺少。它包含一个或多个表名,这些表是查询数据的来源。, Where子句通过设置条件来选择用户所需要的记录行。如果条件比较复杂,可以用一些操作符来描述条件。, Group By子句用来对查询结果进行分组,通过分组可以完成较为复杂的分组统计运算。并运算,得到一个新的关系。,2019/4/16,10, Having子句用来完成对分组的选择,即只在查询结果中保留符合条件的分组。 Order

7、By子句可以设置查询结果中记录的排列顺序 Into子句是Visual FoxPro的SQLSelect命令特有的选项,用来确定查询结果的输出去向,例如输出去向可以是数组、数据表、临时表、打印机等。默认输出到Browse窗口。 Union子句功能是将两个Select命令的执行结果进行并运算,得到一个新的关系。,2019/4/16,11,SQL命令书写说明: 命令涉及两个以上表的数据时,这些表中的共有字段名前面必须冠以用“.”分隔的表名作为前缀,例如zgqk.zgbh。 命令需要分成几行时,除最末行外,其它行末尾加分号。,注意: SQL命令中所涉及的表无需事先打开; 结果生成一个查询,默认以浏览窗

8、口的形式显示; “数据工作期”列表中显示当前查询。,2019/4/16,12,5.2.1 基本查询最简单的查询命令,只包含Select、From子句,且数据只来自一个表。【例5-1】查询人事管理数据库中bm.dbf的所有数据。命令:Select * From bm 【例5-2】查询zgqk表中zgbh、xm、zc、xw、csrq字段的值。命令: Select zgbh, xm, zc, xw, csrq ,“在职“ From zgqk,添加属性列,字符常量,2019/4/16,13,【例5-3】 查询zgqk.dbf表中zgbh、xm、zc等字段的值,表头中字段名以汉字显示。 命令:Selec

9、t zgbh As 职工编号, xm As 姓名 , zc 职称, ;Year(date() -Year(gzrq ) 工龄 From zgqk 说明:(1)在此命令中对所有查询字段进行了重新命名,因而查询结果中字段名显示与源数据表zgqk中的字段名不同。在为字段重新命名时,使用As与否,效果相同(可以省略As)。 (2)查询结果中的“工龄”字段不是zgqk表中的原始数据,是而是新增的、由计算得到的字段。,2019/4/16,14,5.2.2 条件查询 【例5-4】查询zgqk表中zc字段为“教授”或“副教授”的教师的zgbh、xm、zc、gzrq字段的值。 Select zgbh, xm ,

10、 zc , gzrq From zgqk ;Where “教授“ $ zc 注:表达式还可写成zc=“教授“ or zc=“副教授“Right(Rtrim(zc),4)= “教授“ 【例5-5】查询zgqk表中zc字段为“教授”且性别为“女”的教师的zgbh、xm、zc、xw字段的值。 Select zgbh, xm , zc , xw From zgqk ; Where zc= “教授“ And xb=“女“,2019/4/16,15,5.2.3 连接查询连接是关系的基本操作之一,连接查询是一种基于多个关系的查询,查询的数据和条件涉及两个或两个以上的表。,DBMS执行连接查询的过程是:假设要

11、连接的两个表为表1和表2,首先在表1中找到第一条记录,然后对表2的记录进行逐条扫描,每找到一条满足连接条件的记录,就将该记录与表1的第一条记录进行拼接,并形成查询结果中的一条记录。对表2的所有记录扫描完毕后,找到表1的第二条记录,再对表2的记录从头进行逐条扫描,查找满足条件的记录,与表1的第二条记录进行拼接,形成查询结果中的一条记录。重复上述操作,直至表1的所有记录全部处理完毕。,2019/4/16,16,实现两个表的连接查询有以下两种方法:方法1:Select 查询列 From 源数据表 Where 连接条件 And 查询条件 方法2:Select 查询列 From 表1 Join 表2 O

12、n 连接条件 Join 表3Where 查询条件,2019/4/16,17,1. 简单连接查询 【例5-6】在人事管理数据库中查询基础工资(jcgz)多于2000元的教师的xm、zc、jcgz和zwgz。 方法1:Select xm , zc , jcgz , zwgz From zgqk , gz ;Where zgqk.zgbh=gz.zgbh and jcgz=2000 方法2:Select xm , zc , jcgz , zwgz From zgqk Join gz;On zgqk.zgbh=gz.zgbh Where jcgz=2000,2019/4/16,18,【例5.7】 查询

13、所有科研成果的作者、职称、成果名称。 方法1: Select xm, zc, cgmc From kyqk, zgqk;Where kyqk.zgbh=zgqk.zgbh 方法2: Select xm, zc, cgmc From kyqk Join zgqk ; On kyqk.zgbh=zgqk.zgbh,2019/4/16,19,2.多个表的连接查询 【例5-8】查询所有科研成果的作者姓名、部门名称、职称、成果名称。 方法1: Select xm , zc , bmmc , cgmc From zgqk; Join bm On zgqk.bmbh=bm.bmbh ; Join kyqk

14、On zgqk.zgbh=kyqk.zgbh 方法2: Select xm , zc , bmmc , cgmc From zgqk , bm , kyqk ; Where zgqk.bmbh=bm.bmbh and ;zgqk.zgbh=kyqk.zgbh,2019/4/16,20,3. 超连接查询 (1) 左连接 将满足连接条件的所有元组放在结果关系中,同时将第一个表(或称Join左边的表)中不满足连接条件的元组也放入结果关系中,这些元组对应第二个表的属性值为空值。 (2) 右连接 将满足连接条件的所有元组放在结果关系中,同时将第二个表(或称Join右边的表)中不满足连接条件的元组也放入结

15、果关系中,这些元组对应第一个表的属性值为空值。 (3) 全连接 将满足连接条件的所有元组放在结果关系中,同时将两个表中不满足连接条件的元组也放入结果关系中,这些元组对应另一个表的属性值为空值。,2019/4/16,21,ZGQK.DBF01 张03 李02 王,GZ.DBF03 100002 200005 3000,左连接: 03 李 1000 02 王 2000 01 张 NULL,右连接: 03 李 1000 02 王 2000 05 NULL 3000,全连接: 03 李 1000 02 王 2000 01 张 NULL 05 NULL 3000,2019/4/16,22,超连接查询的S

16、QL Select命令的格式如下: Select From Table Inner | Left | Right | Full Outer Join Table On Where 【例5.9】查询所有人的科研成果。 Select xm , zc , cgmc From zgqk Left Join kyqk On zgqk.zgbh=kyqk.zgbh,分析:所有教师中,有的有科研成果(KYQK表中有相应记录)有的没有。,2019/4/16,23,自连接查询 SQL不仅可以对多个关系进行连接操作,也可以将一个关系与其自身进行连接,这种连接称为自连接。在进行自连接查询时,一般要为表定义别名,所谓

17、别名就是在From子句中,为表定义一个另外的名字,格式如下:【例5.17】 查询与姓名为“张力方”的教师同一部门的人。 Select a.xm From zgqk a , zgqk b; Where b.xm= “张力方“ And a.bmbh=b.bmbh,2019/4/16,24,5.2.4 嵌套查询当一个查询的Where条件子句中,需要用到另一个查询的结果时,后一个查询就是嵌套查询,或称为子查询。 嵌套查询中使用的运算符(一般用于子查询返回多个值时) In:测试是否在集合中。 Any和Some:与In功能近似,检测是否是集合中的某一个值。在Visual FoxPro中,Any、Some及

18、All一般仅用于子查询得到的集合。 All:子查询结果关系中的所有行都使运算为真时,结果才为真。 Union:将两个查询的结果关系进行集合并运算。 Exists:判断子查询有无结果返回。,2019/4/16,25,【例5.11】查询有学位为博士的职工所在的部门名称。 Select bmmc 部门名称 From bm ;Where bmbh=Any(Select bmbh From zgqk Where xw=“博士“) 嵌套查询中必须遵循的规则: 嵌套查询必须用括号括起来。 嵌套查询一般在Select子句中只能有一个列。 返回多行的嵌套查询可以和多值操作符一起使用,例如In操作符。 Betwe

19、en操作符不能和嵌套查询一起使用,却可以用于嵌套查询的条件中。 在Visual FoxPro中,嵌套查询层数不能超过2层。,2019/4/16,26,【例5-12】查询有基础工资大于2000的职工的部门名称。 命令: Select bmmc 部门名称 From bm Where;bmbh=Any (Select bmbh From zgqk,gz ; Where zgqk.zgbh=gz.zgbh and jcgz=2000),2019/4/16,27,【例5-13】 查询没有“教授”的部门名称。 分析:先找出有教授的部门集合,不在此集合内的即是没有职称为“教授”的教师的部门。 Select

20、bmmc From bm Where bmbh!=All; (Select bmbh From zgqk Where zc=“教授“) 上述命令等价于: Select bmmc From bm Where bmbh Not In; (Select bmbh From zgqk Where zc=“教授“),再如:查询没有博士或硕士学位的职工姓名 Select xm,xw from zgqk where xw not in (“硕士“,“博士“),2019/4/16,28,【例5-14】查询职称为“教授”或者有科研成果的教师姓名。 Select xm From zgqk Where zc =“教

21、授“ ; Union Select xm From zgqk Where zgbh In ;(Select zgbh From kyqk)【例5-15】查询有科研成果的职工姓名(有多项成果时,仅列出一次)。 Select xm From zgqk Where Exists; (Select zgbh From kyqk where zgbh=zgqk.zgbh ),思考:将Exists替换成zgbh=和zgbh in,结果如何?,2019/4/16,29,5.2.5 SQL命令中的各类运算符 比较运算符:,!,=, 逻辑运算符: AND,OR,Not 数学运算符:,*,/ 谓词:In,Exis

22、ts 量词:Any ,Some,All 集合并运算:Union 其他: Between And ,Like,Is Null,Is Not Null 。,说明:Is Not Null 测试字段值是否为Null(空),Null可以与任何类型的数据匹配。Between And 判断字段值是否在指定的区间内。Like 判断字段值是否与某个模式匹配。可以使用通配符“%”和“_”(下划线),“%”代表多个字符,“_”代表一个字符(一个汉字字符或ASCII码字符)。,2019/4/16,30,【例5-16】查询出生日期在70年代的职工姓名。 Select xm,csrq From zgqk Where cs

23、rq Between ; 1970/01/01 And 1979/12/31【例5-17】查询学历为大学或大专的职工姓名。 Select xm,xl From zgqk where xl Like “大% “可用 xl Like “大_ “xl in (“大学“ , “大专“),2019/4/16,31,5.2.6 数据统计查询 1. 简单计算查询 Count函数 格式:Count (*| Distinct ) 功能:统计行数或指定字段不为Null的数量。在查询中使用Count函数将会返回一个数值。 说明: 当Count函数使用Distinct 选项时,只有那些指定字段不重复的行才被计算在内,

24、省略Distinct时,重复的行也被计算在内。 Count函数中使用星号(*)选项时,表示统计表中记录的总行数。 Distinct不能用于Count(*),只能用于Count(字段名)。,2019/4/16,32,【例5-18】查询计算机系的职工人数。 Select Count(*) 人数 From zgqk Where bmbh= ; (Select bmbh From bm Where bmmc=“计算机系“) 【例5.19】查询有科研成果的职工人数, 有多项成果的只统计一次。 命令: Select Count(Distinct zgbh) From kyqk,2019/4/16,33,

25、Sum函数 格式:Sum( Distinct ) 功能:返回一组数据行中指定字段的值的总和。 说明: Sum函数可以使用Distinct可选项,这时只有指定字段数据不重复的行才被计算在总和内,由于一些数据行被忽略,总和可能不正确。 使用Sum函数时,指定字段的值必须是数值类型。Sum函数不能用于数值类型以外的数据类型,比如字符类型或日期类型。 【例5-20】查询计算机系的职工的基础工资总和。 Select Sum(jcgz) From zgqk, gz Where zgqk.zgbh=gz.zgbh And bmbh= (Select bmbh From bm Where bmmc=“计算机系

26、“),2019/4/16,34, Avg函数 格式:Avg ( Distinct ) 功能:Avg函数用于返回一组数据行中指定字段的平均值。 说明: Avg函数使用Distinct选项时,只有指定字段数据不重复的行才被计算在平均值内。 使用Avg函数时,指定字段必须是数值类型。 Min和Max函数 格式: Min()Max() 功能:Min函数用于返回一组数据行中指定字段的最小值,而Max函数用于返回一组数据行中指定字段的最大值。 说明:使用Min和Max函数时,系统会忽略那些Null值,2019/4/16,35,【例5-21】查询全体职工中基础工资的最高、最低值。 Select Min(jc

27、gz) 最低工资,Max (jcgz) 最高工资 From gz 【例5-22】 查询全部职工中的三项工资之和最大、最小值及其姓名、职称。Select xm, zc, jcgz +zwgz+zjgz yfgz From ;zgqk, gz Where zgqk.zgbh=gz.zgbh And ; (jcgz +zwgz+zjgz =; (Select Max(jcgz +zwgz+zjgz) From gz); Or jcgz +zwgz+zjgz=; (Select Min(jcgz +zwgz+zjgz) From gz),2019/4/16,36,2分组与计算查询 格式:Group B

28、y , Having 说明: 另一种格式为Group By ,n为Select 后面字段表中第n个字段。 当Where子句、Group By子句、Having子句同时出现时,执行顺序为Where子句、Group By子句、Having子句。 Having子句只能与Group By子句连用,不能单独使用,且只能放在Group By子句之后。,2019/4/16,37,【例5-24】查询每个部门中职工的人数,并显示部门名称。 Select bmmc 部门, Count(zgbh) 人数 From zgqk, bm Group By zgqk.bmbh ; Where bm.bmbh=zgqk.bm

29、bh,【例5-23】查询每个部门中职工基础工资的最大、最小值,并显示部门编号。 Select bmbh 部门编号, Min(jcgz) 最低工资, Max (jcgz) 最高工资 From zgqk, gz ; Where zgqk.zgbh=gz.zgbh Group By bmbh,2019/4/16,38,【例5-25】查询职工的人数超过3人的部门,并显示部门编号。 Select bmmc 部门, Count(zgqk.zgbh) 人数 From ; zgqk, bm Where bm.bmbh=zgqk.bmbh ; Group By zgqk.bmbh Having Count(zg

30、qk.zgbh)=4 【例5-26】查询每个部门中男、女职工的人数,并显示部门名称。 Select bmmc 部门名称,xb 性别,count(*) 人数 ; From zgqk,bm Where bm.bmbh=zgqk.bmbh;group by zgqk.bmbh, xb(先按bmbh分组,再按xb分类),2019/4/16,39,5.2.7 查询结果排序 Order By 字段名1|序号1Asc|Desc ,Asc|Desc 说明: 在Order By子句中选择Asc或省略时,按指定字段的升序排序,选Desc时按降序排序,字段名1是排序的主关键字,字段名2是第二关键字之后是第三关键字、

31、第四 。 与排序有关的另一短语是Top nExpr Percent,可以用来显示查询结果的前面几项,加参数Percent时按百分比显示排序在前的项。 Order By是对最终的查询结果进行排序,不能在子查询中使用该子句。按函数计算结果排序,必须使用(select定义的)临时字段名。 排序是查询结果输出前的最后一步,因此Order By子句一般放在Select命令的末尾。,2019/4/16,40,【例5-27】 按照基础工资升序显示姓名、职称、基础工资。 命令: Select xm, zc, jcgz From zgqk ,gz ;Where gqk.zgbh=gz.zgbh Order By

32、 jcgz 或 Select xm, zc, jcgz From zgqk ,gz ;Where zgqk.zgbh=gz.zgbh Order By 3 【例5-28】 先按部门升序,再按基础工资降序显示姓名、部门编号、职称、基础工资。 命令: Select xm, bmbh, zc, jcgz From zgqk ,gz ; Where zgqk.zgbh=gz.zgbh Order By bmbh, jcgz Desc,2019/4/16,41,【例5-29】显示gz表中jcgz字段最高的前5位教师的姓名和基础工资。 命令: Select Top 5 xm,jcgz From zgqk,

33、gz ; Where gz.zgbh=zgqk.zgbh Order by jcgz desc【例5-30】 显示gz表中jcgz字段最高的前15%的教师姓名和基础工资。 命令: Select Top 15 Percent xm,jcgz From zgqk,gz;Where gz.zgbh=zgqk.zgbh Order by jcgz desc,2019/4/16,42,5.2.8 查询结果处理在Visual FoxPro中,SQL_Select命令可以设置查询结果的保存方式,一般情况下,省略查询结果去向说明时,查询结果显示在一个浏览(Browse)窗口中,此外,还可以将结果以下列方式保存

34、: Into Array 这种方式将查询结果保存在一个数组中,一般是二维数组,数组的每一行存放一条记录。如果查询结果只有一个值,也要以数组方式处理,这个值存放在数组的第一个元素中。 Into Cursor 将查询结果保存在一个只读的临时表中,且这个临时表自动成为当前打开的表。临时表的使用方式与数据库表和自由表相同。当该临时表关闭时,自动被删除,不能再次使用。,2019/4/16,43, Into Table 将查询结果保存在一个永久表中。 To File 将查询结果保存在一个文本文件中。 To Printer Prompt将查询结果送往打印机打印。有Prompt选项时,打印之前首先弹出设置对话

35、框。,【例5.31】 查询工资表的数据,分别存放到数组x和临时表gz-1中。 Select * From gz Into Array x Select * From gz Into Cursor zg_1,2019/4/16,44,5.3 SQL数据修改功能,5.3.1 插入数据 Visual FoxPro支持两种SQL插入命令的格式,第一种格式是标准格式,第二种格式是Visual FoxPro的特有格式。格式1:Insert Into (字段名1 , 字段名 2,; 字段名n ) Values(值1 , 值2 , , 值n )格式2:Insert Into From Array ,2019/

36、4/16,45,说明: 使用格式1时,如果只向几个特定字段输入值,要列出字段名表,若向全部字段输入值,则可省略字段名表,在Values后面列出对应每一字段的值,各个值之间用逗号分开。插入到表中的值如果是字符或日期型数据时,要用定界符。可以使用Null为字段赋值。格式2是将二维数组中的数据按行插入到表中。在这种格式中要特别注意数组元素与表中字段的类型匹配问题。,2019/4/16,46,【例5-32】向bm表插入一条新记录,为所有字段赋值。 Insert Into bm Values(“109“,“法律系 “) 说明:由于bmbh是bm.dbf的主关键字,插入的bmbh字段的值不能与原有的值重复

37、。【例5-33】 向zgqk表插入一条新记录,只为字段zgbh, xm, xb, zc、csrq赋值。 Insert Into zgqk (zgbh, xm, xb, zc, csrq) ; Values(“199009“ ,“和悦“ ,“女“ ,“助教“, 1982-01-08),2019/4/16,47,【例5-34】复制与插入命令应用举例。 Select * From zgqk Where zc=“教授“ Into Table zg (教授的记录存入新的数据表zg.dbf) Select * From zgqk Where zc != “教授“ Into Array aa (教授以外的记

38、录存入aa数组,11列。) Insert Into zg From Array aa,2019/4/16,48,5.3.2 更新数据对表中已经存在的数据可以使用Update命令来更新。Update命令不会向表中增添新的记录,也不删除记录,它仅仅更新已经存在的数据。在数据库中,Update通常在某一时刻只能更新一个表,但可以同时更新一个表中的多个列。在一条命令中,可以根据需要更新表中的一行数据,也可以更新多行数据。 格式:Update Set , Where 注意:使用Update命令时,如果没有Where子句,将更新表中所有的数据行。,2019/4/16,49,【例5-35】 在gz表中,为具

39、有教授职称的职工增加100元职务工资(字段名zwgz)。命令: Update gz Set zwgz=zwgz+100 Where zgbh In; ( Select zgbh From zgqk Where zc=“教授“),【例5-36】将职称为“讲师”和“副教授”的职工基础工资增加10%,职务工资增加15%。命令: Update gz Set jcgz=jcgz*1.1 , zwgz=zwgz*1.15 ; Where zgbh in (Select zgbh From zgqk ; where zc=“副教授“ or zc=“讲师“ ),2019/4/16,50,5.4.3 删除数据

40、Delete命令用于从表中删除整行的数据,Delete命令在FoxPro 中是一种逻辑删除,要物理删除还要使用命令Pack。 格式: Delete From Where 【例5-37】 删除bm表中部门名称为Null的记录。 Delete From bm Where bmmc Is Null,2019/4/16,51,5.4 SQL数据定义功能,5.4.1 创建数据库和表 1数据库定义 格式:Create Database 功能:创建一个数据库。,定义功能包括:数据库、数据表、视图、存储过程、索引等对象。,2019/4/16,52,2数据表的定义 命令格式: Create Table | DB

41、F TableName1 Name LongTableName Free (FieldName1 FieldType (nFieldWidth , nPrecision ) Null | Not Null Check LExpression1 Error cMessageText1 Default eExpression1 Primary Key | Unique References TableName2 Tag TagName1 , FieldName2 . , Primary Key eExpression2 Tag TagName2|, Unique eExpression3 Tag

42、TagName3 , Foreign Key eExpression4 Tag TagName4 Nodup References TableName3 Tag TagName5 , Check lExpression2 Error cMessageText2) | From Array ArrayName,2019/4/16,53,说明: (1) 当前有打开的数据库时,表建立在此数据库中。 (2) 命令关键字Create Table 与Create DBF功能相同。TableName1则为所创建表的名字。 (3) Name LongTableName :为所创建的表定义长表名。只有当前有打开

43、的数据库时,才能使用此选项。 (4) Free:创建表为自由表。 (5) FieldName1 FieldType (nFieldWidth , nPrecision):4个选项依次分别定义字段名、字段类型,数值型和字符型字段的宽度,数值型字段的小数位宽度。 (6) Null | Not Null:定义本字段是否可以为空。,2019/4/16,54,(7) Check lExpression1 Error cMessageText1:定义本字段的有效性规则和出错时的提示信息字符串。 (8) Default eExpression1:定义本字段的默认值。 (9) Primary Key:将本字段

44、定义为主关键字(主索引)字段。 (10) Unique:将本字段定义为侯选关键字(侯选索引)字段。 (11) References TableName2 Tag TagName1:说明本表与之建立永久联系的父表及父表的索引名。 (12) Foreign Key:定义一个外部(索引)关键字(非主索引),并与一个父表建立关联。 (13) From Array ArrayName:由一个数组创建表,数组中存放了有关表的每个字段的名称、类型、宽度、小数宽度等信息。,2019/4/16,55,【例5-38】 表结构为:student(sno , sname , sex , birthday , dno)

45、,用Create Table命令创建此表。命令如下: Create Table student ( sno C (6) , sname C(6) , sex C(2) , birthday D , dno C(3) 如果要在创建表的同时定义主索引、有效性规则等,命令可以写成下面的形式: Create Table student ( sno C (6) Primary Key Not Null , sname C(6) , sex C(2) ; Check sex =“男“ Or sex=“女“ Error “错误“ , birthday D , dno C(3) ) 注意:对非数据库表不可用该

46、命令。即必须先打开数据库。,2019/4/16,56,5.4.2 表的修改 表的修改格式1: Alter Table TableName1 Add | Alter Column FieldName1 FieldType (nFieldWidth , nPrecision) Null | Not Null Check lExpression1 Error cMessageText1 Default eExpression1 Primary Key | Unique References TableName2 Tag TagName1,2019/4/16,57,说明: 这种格式用来添加字段或修改字

47、段的参数:Add表示增加字段;Alter表示修改字段的参数; 该格式可以修改字段的类型、宽度、有效性规则等,但不能修改字段名,不能删除字段及已经定义的字段有效性规则。 在这种格式中,不管是否修改字段类型,都必须将字段名和字段类型一同在命令中列出。,2019/4/16,58,【例5-39】在例5-38创建的表student中加入一个新字段grade N(3)。 Alter Table student Add grade n(3) Check grade=0 And grade=100【例5-40】将例5-38中创建的表student中的字段sname宽度改为10。 Alter Table stu

48、dent Alter sname C(10),2019/4/16,59,表的修改格式2: Alter Table TableName1 Alter Column FieldName2 Null | Not Null Set Default eExpression2 Set Check lExpression2 Error cMessageText2 Drop Default Drop Check 说明: 这种格式主要用于定义、修改和删除字段的有效性规则和默认值定义。,2019/4/16,60,【例5-41】将表Student中的字段sex 宽度改为1,并修改其有效性规则。 第一步:修改字段宽度。 Alter Table student Alter sex c(1) 第二步:修改字段有效性规则 Alter Table student ; Alter sex c(1) Check sex=“F“ Or sex= “M “ 【例5-42】删除表Student中的字段sex的有效性规则 Alter Table student Alter sex Drop Check,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报