《关系数据库》PPT课件.ppt_第1页
《关系数据库》PPT课件.ppt_第2页
《关系数据库》PPT课件.ppt_第3页
《关系数据库》PPT课件.ppt_第4页
《关系数据库》PPT课件.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 关系数据库标准语言SQL,重要考点提示 利用SQL语句ALTER为数据库添加、删除或修改 字段 进行数据的插入和更新操作 利用SQL语句进行嵌套查询 利用SQL语句进行超联接查询,主要是内部联接 利用SQL语句的GROUP短语进行分组及计算查询以及HAVING子句的作用 利用SQL语句建立视图,包括视图中字段名的重新定义,一、SQL概述 1、概念 SQL是结构化查询语言Structured Query Langvage的缩写,它包括数据查询、数据定义、数据操纵和数据控制4部分,VF在SQL方面支持数据定义、数据查询和数据操纵功能。另外由于VF自身在安全控件方面的缺陷,所以它没有提供数据控制功能。 2、SQL语言的特点 一种一体化的语言 一种高度非过程化的语言 语言非常简洁 可以直接以命令方式交互使用,也可以以程序方式使用,二、查询功能 SQL的核心是查询。基本形式由SELECTFROMWHERE查询块组成,多个查询块可嵌套执行。 VF的SQL的SELECT命令的语法格式如下: SELECT ALL/DISTINCTTOP nExprPERCENT Alias. select_ItemAS Column_name,Alias.Select_ItemAS Column_name FROM FORCE DatabaseName!Table AS Local_Alias INNER/LEFTOUTER/RIGHTOUTER/FULLOUTERJOIN DatabaseName! Table AS Local_Alias ON joinCondition INTO Destination /TO FILE Filename ADDITIVE/ TO PRINTER PROMPT/TO SCREEN PREFERENCE preferencename NOCONSOLE PLAN NOWAIT WHERE joinconditionAND Joincondition AND/OR filterconditionAND/OR filtercondition GROUP BY GroupColumn,GroupColumn HAVING FilterCondition UNION ALL SELECTCommand ORDER BY Order_ItemASC/DESC,Order_ItemASC/DESC,其中主要短语的含义如下: SELECT:说明要查询的数据. FROM: 说明要查询的数据来自哪个或哪些表,可 以单个表或多个表进行查询. WHERE:说明书查询条件即选择元组的条件. GROUP BY:短语用于对查询结果进行分组,可利用它进行分组汇总. HAVING:短语必须跟随GROUP BY使用.它用来限定分组必须满足的条件 ORDER BY 短语用于对查询结果进行排序,1、简单查询 这些简单的查询基于单个表,可有简单的查询条件,这样的查询由SELECT和FROM短语构成无条件查询或由SELECT FROM和WHERE短语构成条件查询 eg1 从职工关系中检索所有的工资值 select 工资 from 职工 若去掉重复需指使指定distinct 短语 select distinct 工资 from 职工 distinct短语的作用是去掉查询结课中的重复值 eg2 从职工关系中检索出所有的职工号及其工资值 SELECT 职工号 ,工资 FROM 职工 不同的字段名之间用,隔开,Eg3 检查仓库关系中的所有元组 select * from 仓库 *是通配符,表示所有的属性(字段)这里的命令等同于 select 仓库号,城市,面积 from 仓库 Eg4 检索工资多于1230元的职工号 select 职工号 from 职工 where 工资1230 用where短语指定查询条件,查询条件可以是任意复杂的逻辑表达式 Eg5 检索哪些仓库有工资多于1210元的职工 select distinct 仓库号 from 职工 where 工资1210 Eg6 给出在仓库”wh1” 或“wh2”工作,并且工资少于1250的职工号 select 职工号 from 职工; where 工资1250 AND (仓库号=“WH1” OR 仓库号 =“WH2”) 分号表示续行符号,系统是怎样完成SQL命令的检索要求的呢? 如果有 where子句系统首先根据指定的条件依次检验关系中的每个元组.如果没有指定where 子句则直接选出满足条件的元组(相当于关系的选择操作)并显示select子句中指定属性的值(相当于关系的投影操作) 2、简单的联接查询 联接是关系的基本操作之一,联接查询是一种基于多个关系的查询 Eg7 找出工资多于1230元的职工和他们所在的城市 select 职工号,城市 from 职工, 仓库 where ; 工资1230 AND 职工.仓库号=仓库.仓库号 如果在检索命令的from之后有两个关系,那么这两个关系之间肯定有一种联系,否则无法构成检索表达式,当from 之后的多个关系中含有相同的属性名时,必需用关系前缀直接指明属性所属关系,“.”前是关系名,后是属性名,Eg8 找出工作在面积大于400的仓库的职工号以及这些 职工所在的城市 select 职工号,城市 from 职工,仓库; where 面积400 AND职工,仓库号=职工,仓库号 3.嵌套查询 这类基于多个关系的查询.查询结果出自一个关系,但相关的条件却涉及多个关系,之前的例子中where之后是一个相对独立的条件.这个条件或为真或为假.但是有时需要用另外的方式来表达检索要求.比如当检索关系X中的元组时.它的条件依赖于相关的关系Y中的元组属性值.这时使用SQL的嵌套查询功能非常方便. 其内层基本上也是一个select-from-where查询语句.这种简单的嵌套查询可使用谓词IN或NOT IN来判断在外层的查询条件中是否包含内层查询的结果.,Eg9 哪些城市至少有 一个仓库的职工工资为1250元 select 城市 from 仓库 where 仓库号 IN; ( select 仓库号from职工where工资=1250) In相当于集合运算符 Eg10 查询所有职工的工资都多于1210元的仓库的信息. 这个检索也可描述为没有一个职工的工资少于 1210的仓库的信息. Select * from 仓库 where 仓库号 not in; (select 仓库号 from 职工 where 工资1210) 在仓库WH4中还没有职工 如果要排除那些没有职工的仓库,检索要求应描述为检索所有职工的工资都多于1210元的仓库信息并且该仓库至少有一名职工. Select * from 仓库 where 仓库号 not in (select 仓库号 from 职工 where 工资1210) AND 仓库号 in ; (select 仓库号 from 职工),内层是两个并列的查询,在结果中将不包含没有职工的仓 库信息. 能不能写成 select * from 仓库 where 仓库号 in ; (select 仓库号from 职工where 工资1210) 此结果为只要仓库中有一个职工的工资大于1210元即被 选择出来. Eg11 .找出和职工E4挣同样工资的所有职工 select 职工号 from 职工 where 工资=; (select 工资 from 职工 where 职工号=“E4”) 4.几个特殊的运算符 (1) betweenand它表示的是查询的条件是在和之 间.相当于用and连接的一个逻辑表达式,Eg12 检索出工资在1220元到1240元范围内的职工信息. Select * from 职工 where 工资 between 1220 and 1240 等价于 select * from 职工 where 工资 =1220 and ; 工资=1240 (2) LIKE: 它是一个字符串匹配运算符, ”_”表示一个字符. 通配符”%”表示0个或多个字符 Eg13 从供应商关系中检索出全部公司的信息,不要工厂 其他供应商的信息. Select * from 供应商 where 供应商 LIKE“%公司” Eg14 从供应商关系中检索出包含”华电子厂”共五个字符的供应商信息. Select * from 供应商 where 供应商名 like”_华电子厂” Eg15 找出不在北京的全部供应商的信息 select * from 供应商 where 地址!=“北京”,在SQL中不等于用”!=“表示,也可用NOT写出等价命令 select * from 供应商 where NOT (地址=北京) NOT应用范围很广,比如有NOT IN, NOT BETWEEN 若提出与eg12相反的要求,找出工资不在1220到 1240之间的全部职工的信息可用。 Select * from 职工 where 工资 not between 1220 and 1240 与之等价的还可写成 Select * from 职工 where 工资1240,5.排序 使用SQL SELECT可将查询结果进行排序,排序的短语是order by 格式: order by ordey_Item ASC | desc ,order_Item ASC | desc 说明:可按升序(ASC)或降序(desc)排序,允许按一列或多 列排序 Eg16 按职工的工资值升序(降序)检索出全部职工信息. Select * from 职工order by 工资 (desc) 升序时可省略,默认为升序 Eg17 先按仓库升序,再按工资降序输出全部职工信息 Select * from 职工 order by 仓库号,工资 desc 注: order by 是对最终的查询结果进行排序,不可以在子查询中使用该短语.,6.简单的计算查询 SQL不仅具有一般的检索以能力,而且还有计算方式的检索,用于计算检索的函数有 COUNT-计数 SUM-求和 AVG-计算平均值 MAX-求最大值 MIN-求最小值 这些函数可用在SELECT短语中对查询结果进行计算. Eg18 .找出供应商所在地的数目. Select count (distinct 地址)from供应商 注:除非对关系中的元组个数进行计数,一般count函数应使用distinct. Select count(*)from供应商 将给出供应商关系中的记录数.,Eg19 求支付的工资总数. Select sum (工资) from 职工 包括重复值,不能使用 sum(distinct 工资) Eg20 求北京和上海仓库职工的工资总和 select sum (工资) from 职工 where 仓库号 IN; (select 仓库号 from 仓库 where 城市=“北京” or 城市=“上海”) Eg21 求所有职工的工资都多于1210元的仓库的平均面积 select avg(面积)from 仓库 where 仓库号 not in; (select 仓库号 from 职工 where 工资=1210) 在查询结果中包括没有职工的仓库WH4,若要排除可改写成: select avg(面积)from 仓库 where 仓库号 not in; (select 仓库号 from 职工 where 工资=1210); AND 仓库号 IN (select 仓库号 from 职工 ),Eg22 求在WH2仓库工作的职工的最高(低)工资值 Select max(min)(工资)from 职工 where 仓库号=“WH2” 7、分组与计算查询 在SQL select中可利用GROUP BY子句进行分组计算查询 格式:GROUP BY GroupColumn ,GroupColumn HAVING FilterCondition 说明:可按一列或多列分组还可用Having 进一步限定分 组条件 eg23 求每个仓库的职工的平均工资 select 仓库号,avg(工资) from 职工 group by 仓库号 Group by一般跟在where 之句之后,没有 where子句时, 跟在from子句之后. 在分组查询时,有时要求分组满足某个条件时才检索,这 时可以用HAVING子句来限定分组,Eg24 求至少有两个职工的每个仓库的平均工资 select 仓库号 count(*),AVG(工资) from 职工; group by 仓库号 having count(*)=2 注: HAVING 子句总是跟在GROUP BY子句之后,不可以单独使用,Having 子句和where子句并不矛盾,在查询中先用where子句限定元组,然后进行分组,最后再用Having子句限定分组。 8.利用空值查询 SQL支持空值,同样可以利用空值进行查询,查询空值时要用is null 而= Null是无效的,因为空值不是一个确定的值,所以不能=这样的运算符进行比较 eg25 找出尚未确定供应商的订购号 select * from 订购单 where 供应商号 is null Eg26 列出已经确定了供应商的订购单信息. Select * from 订购单 where 供应商号 is not null,9、使用量词和谓词的查询 与嵌套查询或子查询有关的运算符,除了in和not in运算符外还有两类与子查询有关的运算符它们有以下两种格式. (1)ANY | ALL | some(子查 询) (2)NOTEXISTS(子查询) ANY ALL SOME 是量词,其中any 和some是同义词,在进行比较运算时只要子查询中有一行能使结果为真则结果就为 真,而ALL则要求子查询中的所有行都为真时,结果才为真. Exists是谓词,Exists或NOT Exists是用来检查在子查询中是否有结果返回,即存在元组或不存在元组,其本身并没有进行任何运算或比较,只用来返回子查询结果。,Eg27 检索那些仓库中还没有职工的仓库信息. Select * from 仓库 where not exists (select * from 职工 where 仓库号=仓库.仓库号) 等价于 select * from 仓库 where 仓库号 NOT IN ; ( select 仓库号 from 职工) Eg28 检索那些仓库中至少已经有一个职工的仓库的信息. Select * from 仓库 where exists (select * from 职工 where 仓库号=仓库.仓库号) 等价于 select * from 仓库 where 仓库号 in (select 仓库号 from 职工) Eg29.检索有职工的工资大于或等于WH1仓库中任何一名职工工资的仓库号,select distinct 仓库号 from 职工 where 工资=; any ( select 工资 from 职工 where仓库号=“WH1”) 它等价于 select distinct 仓库号 from 职工 where 工资=; (select MIN(工资)from职工where仓库号=“WH1” eg30.检索有职工的工资大于或等于WH1仓库中所有职工工资的仓库号 select distinct 仓库号 from 职工 where 工资=; (select 工资from 职工 where仓库号=“WH1” 等价于 select disinct 仓库号 from 职工 where 工资=; all (select max (工资)from职工where仓库号=“WH1” 10.集合的并运算 SQL支持集合的并(union)运算,即可以将两个select语句,的查询结果通过并运算合并成一个查询结果。进行并运算的两个查询结果必须具有相同的字段个数,并且对应字段的值出自同一个值域,即具有相同的数据类型和取值范围。 Eg31 如下语句的结果是城市为北京和上海的仓库信息。 Select * from 仓库 where 城市=“北京” union select * from 仓库 where 城市=“上海” 11.SQL select 的几个特殊选项 (1)显示部分结果 格式:top nexpr percent 说明:nexpr是数字表达式,当不便percent时,nexpr是1至 32767间的整数,说明显示前几个记录,当便用percent时,nexpr是0.01至99.99间的实数,说明显示结果前百分之几的记录. 注: top 短语要与order by短语同使用才有效,Eg32 显示工资最高的三位职工的信息. Select * Top 3 from 职工 order by 工资 desc Eg33 显示工资最低的那30%职工的信息. Select * top 30 percent from 职工 order by 工资 (2)将查询结果放到数组中 格式:into array arrayname 说明: arrayname是任意数组变量名 eg34 将查询到的职工信息存放在数组tmp中 select * from 职工 into array tmp,(3)将查询结果存放在临时文件 格式:INTO CURSOR cursorname 说明:cursorname是临时文件名,该临时文件是一个只 读的.dbf文件,当查询文件关闭时该文件将自动删除Eg35 将查询到的职工信息存放在临时.dbf文件tmp中 select * from 职工 into cursor tmp (4)将查询结果存放到永久表中 格式: into table / dbf tablename Eg36 将工资最高的三位职工的信息存放到表highsal中. Select * top 3 from 职工 into dbf highsal; order by 工资 (5)将查询结果存放到文本文件. 格式: to file filename additive 说明: filename 扩展名为.txt的文本文件名,若使用addtive将 结果追加在原文件的尾部否则将覆盖原文件.,Eg37 将上例查询结果存储在文本文件tmp.txt中 Select * top 3 from 职工 to file tmpADDitive; order by 工资 desc (6)将查询结果直接输出到打印机 格式: to printer prompt 12、超联接查询 (1)在新的SQL标准中支持两个新的关系联接运算符,一个是左联接(*=)和右联接(=*):首先保证一个表中满足条件的结果表中,然后将满足联接条件的元组与另一个表的元组进行联接,不满足联接条件的则应将来自另一个表的属性值置为空值。 (2)在VF中不支持超联接运算“*=”和“=*”,VF中有专门的联接运算,下面给出SQL中超联接的部分语句格式: select from table inner/left/right/ full jion table on join condition where ,INNER JOIN等价于JION,为普通的联接,在VF中称为内 部联接. LEFT JOIN为左联接 RIGHT JOIN为右联接 FULL JOIN称为全联接 ON condition指定联接条件 Eg38 内部联接,即只有满足条件的记录才出现在查询结果中. select 仓库.仓库号,城市,面积,职工号,工资 from ; 仓库(inner) join 职工 on 仓库.仓库号=职工.仓库号 等价于 select 仓库.仓库号,城市,面积,职工号,工资 from 仓库,; 职工 where 仓库.仓库号=职工.仓库号,Eg39 左联接,即除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。 select 仓库.仓库号,城市,面积,职工号,工资 from 仓库; left join 职工 on 仓库.仓库号=职工.仓库号 Eg40 右联接,即除满足条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中 select 仓库.仓库号,城市,面积,职工号,工资 from 仓库; right join 职工 on 仓库.仓库号=职工.仓库号 Eg41 全联接,即除满足联接条件的记录出现在查询结果中外,两个表中不满足联接条件的记录也出现在查询结果中。 select 仓库.仓库号,城市,面积,职工号,工资 from 仓库; full join 职工 on 仓库.仓库号=职工.仓库号,注:VF的SQL语句的联接格式只能实现两个表的联接,如果要实现多个表的联接,还需要使用标准格式 select 仓库.仓库号,城市,供应商名,地址 from 供应商,; 订购单,职工,仓库 where 供应商.供应商号=订购单.供应商号 and 订购单.职工号=职工.职工号 and 职工.仓库号=仓库.仓库号 13、别名与自联接查询 在联接操作中,经常使用关系名作前缀,在SQL中允许在from短语中,为关系名定别名。格式为: 比如 select 供应商名 from 供应商,订购单,职工,仓库; where 地址=“北京” and 城市=“北京” and 供应商.供应 商号=订购单.供应商号 and 订购单.职工号=职工.职工号 And 职工.仓库号=仓库.仓库号,select 供应商名 from 供应商 S,订购单 P,职工 E,; 仓库 W where 地址=“北京” and 城市=“北京” and S.供应商号=S.供应商号 and S.职工号=E.职工号; And E.仓库号=W.仓库号 SQL不仅可以对多个关系实行联接操作,也可以将同一关系与其自身进行联接,这种联接就称为自联接. Eg42 根据雇员关系列出上一级经理及其所领导的职员的清单. select S雇员姓名 , “领导” E.雇员姓名 from 雇员 S,; 雇员 E where S.雇员号=E.经理 14、内外层相互关嵌套查询 内外层相互关嵌套查询,内层查询的条件需外层查询提供而外层查询的条件需内层查询的结果。,Eg43 列出每个职工经手的具有最高总金额的订购单信息 SELE OUT.职工号,OUT.供应商号, OUT.订购单号,OUT.订购日期,OUT.总金额; FROM 订购单 OUT WHER 总金额=; (SELE MAX(总金额) FROM 订购单 INNER1 WHER OUT.职工号=INNER1.职工号) 三、操作功能 SQL的操作功能是指对数据库中数据的操作功能, 主要包括数据的插入、更新和删除。 1、插入:VF支持两种SQL插入命令的格式,第一种格式 是标准格式,第二种格式是VF特殊格式 第一格式: INSERT INTO dbf_name (fname1,fname2.) Values (eExpression1,eExpression2,),第二种格式: INSERT INTO dbf_name FROM ARRAY arrayname 说明:insert into dbf_name 说明向dbf_name指定的表中插入记录,当插入的不是完整的记录时,可用fname1,fname2指定字段 values(eExpression1,eExpression2)给出具体的记 录值 from memvar 说明根据同名的内存变量来插入记录值 如果同名的变量不存在,那么相应的字段为默 认值或空。 Eg1 往订购单关系中插入元组(“E7”,“S4”,“OR01”, 2001/05/25) INSERT INTO 订购单 VALUSE( “E7”,“S4”, “OR01”,2005/05/25 ),Eg2 往订购单关系中插入职工号和订购单号两个属性 的值 INSERT INTO 订购单(职工号,订购单号)VALUES(“E7”,“OR01”) Eg3 使用INSERT INTOFROM ARRAY 插入记录 USE 订购单 SCATTER TO arr1将当前记录读到数组arr1 COPY STRUCTURE TO ord2拷贝订购单表的结 构到ord2 INSERT INTO ord2 FROM ARRAY arr1 select ord2 browse use delete file ord2.dbf,Eg 使用INSERT INTOFROM MEMVAR插入记录 USE 订购单 SCATTER MEMVAR &将当前记录读到内存变量 &(变量名与字段名同名) COPY STRUCTURE TO ord2 INSERT INTO ord2 FROM MEMVAR SELECT ord2 BROWSE USE DELETE FILE ord2.dbf,select的插入命令与以前VF中的插入命令有何区别?,当一个表定义了主索引或后选索引后,由于相应的字段具有关键字的特性,即:不能为空,所以只能用此命令插入记录.VF中以前插入命令(insert或append)是先插入一条空记录,然后输入各字段的值.由于关键字字段不允许为空,所以使用以前的方法就不能成功的插入.,2.更新操作 SQL的数据更新命令格式如下 格式: UPDATE tableName SET column_Name1=eExperssion , column_Name1=eExperssion, WHERE condition 说明:使用where子句指定条件,更新满足条件的一些记录的字段值,并且一次可更新多个字段; 如果不使用where子句则更新全部记录,EG1:给WH1仓库的职工提高1%的工资 UPDATE 职工 SET 工资=工资 * 1.1 WHERE 仓库“WH1“ EG2:给所有学生的年龄增加工1岁 UPDATE 学生 SET 年龄=年龄 +1 3.删除操作 SQL的数据删除命令格式如下 DELETE FROM tableName where condition 说明: from指定从哪个表中删除数据 where指定被删除的记录所满足的条件如不使用 where子句,则删除表中的全部记录. 注:此删除为逻辑删除,EG:删除仓库中仓库号为WH2的元组 DELETE FROM 仓库 where 仓库号=“WH2“ 注:此删除为逻辑删除,要物理删除用pack命令. 四.定义功能 1.表的定义 利用SQL命令建立的数据表同样可以完成在表设计器中设计的表的所有功能 格式如下:,格式: CREATE TABLE |DBF tableName1 NAME longTableName FREE (fieldName1 fieldType nFieldWidth,nPrecision) NULL | NOT NULL CHECK lExperssion1 ERROR cMessageText1 DEFAULT eExpression1 PRIMARY KEY | UNIQUE REFERENCES tableName2 TAG tagName1 NOCPTRANS fieldName2 , PRIMARY KEY , PRIMARY KEY eExperssion2 TAG tagName2 |,UNIQUE eExperssion3 TAG tagName3 ,FOREIGN KEY eExperssion4 TAG tagName4 NODUP REFERENCE tableName3 TAG tagName5 ,CHECK lExperssion2 ERROR cMessageText2) |FROM ARRAY arrayName,说明: NAME longtablename:为建立的表指定一个长名 FREE:建立的表不添加到当前数据库中,即建立 一个自由表 NULL或NOT NULL:说明字段允许或不允许为空值 UNIQUE:说明建立候选索引(注不是惟一索引) FROM ARRAY arrayname:说明根据指定数组的内容建立表,数组的元素依次是字段名、类型等,建议不用此方法 此命令除了具有建立表的基本功能外,还包括满足实体完整性的主关键字段(主索引)PRIMARY KEY ,定义域完整性的CKECK约束及出错提示信息(ERROR)定义默认值DEFAULT.别外还有描述表之间联系的FOREIGN KEY和REFERENCES等.,用SQL CREATE命令建立职工1表 CREATE TABLE 职工1 ( ; 仓库号 C(5) ,; 职工号 C(5) primary key ,; 工资 I CHECK (工资=1000 AND 工资=5000) ERROR “工资的范围在1000到5000!“ ; default 1200 ,foreign key 仓库号 tag 仓库号 references 仓库1) 用SQL CREATE命令建立供应商1表 CREAT TABLE 供应商1(供应商号 C(5) PRIMARY KEY,供应商名 C(20),地址 C(20),用SQL CREAT 命令建立订购单1 create table 订购单1(职工c(5),供应商号 c(5),订购单号 c(5) PRIMARY KEY , 订购日期 d, FOREIGN KEY 职工号 TAG 职工号 REFERENCES 职工1, FOREIGN KEY 供应商号 TAG 供应商号 REFERENCES 供应商1) 注:用SQL CREATE 命令新建的表自动在最低的可用的工作区打开,并可以通过别名引用,新表的打开方式为独占方式,忽略SET EXCLUSIVE的当前设置 如果建立自由表(当前没有打开数据库或使用了FREE),则很多命令不能使用,如NAME、CHECK、 DEFAULT、FOREIGN KEY、PRIMARY KEY和REFERENCES等。,2.表的删除 利用SQL命令删除表的命令为: DROP TABLE tableName 说明:如果删除的是自由表则应该将当前打开的数据表先关闭,才能进行删除.如果是数据库中的表,则应该先打开数据库再进行操作,否则,即使删除了数据库表,但记录在数据库中的信息并没有被删除,此后会出现错误提示. 3.表结构的修改 修改表结构的命令是:ALTER TABLE 该命令有三种格式: 格式1: ALTER TABLE tableName ADD |ALTER COLUMN fieldName1 fieldType nFieldWidth,nPrecisionNULL | NOT NULL CHECK lExperssion1 ERROR cMessageText1 PRIMARY KEY | UNIQUE REFERENCE tableName3 TAG tagName5 说明:可以添加(ADD)和修改(ALTER)已有字段,Eg1 为订购单表增加一个货币类型的总金额 ALTER TABLE 订购单1 ADD 总金额 Y CHECK 总金额0 ERROR”总金额应该大于0” Eg2 将订购单1表的订购单号字段的宽度由原来 的5改为6 ALTER TABLE 订购单1 ALTER 订购单号 C(6) 该种格式可以修改字段的类型、宽度、有效性规则、错误信息、默认值,定义主关键字段和联系等;但是不能修改字段名,不能删除字段,也不能删除已经定义的规则等。,格式2: ALTER TABLE tableName1 ALTER COLUMN fieldName2 NULL | NOT NULL SET DEFAULT eExpression2 SET CHECK lExperssion ERROR cMessageText2DROP DEFAULTDROP CHECK 说明:主要用于定义,修改和删除有效性规则和默认值定义.,Eg 修改或定义总金额字段的有效性规则 ALTER TABLE 订购单1 ALTER 总金额 SET CHECK 总金额100 ERROR “总金额应该大于100!” 若要设置默认值为0 用SET DEFAULT 0 Eg 删除总金额字段的有效性规则 ALTER TABLE 订购单1 ALTER 总金额 DROP DEFAULT DROP CHECK 该种格式也不能删除字段,不能修改字段名,所有修改是在字段的一级,格式3: ALTER TABLE tableName DROP COLUMNfieldName3DROP CHECK ADD PRIMARY KEY eExperssion3 TAG tagName2FOR lExpression4 DROP PRIMARY KEY ADD UNIQUE eExperssion4 TAG tagName3 FOR lExpression5 DROP UNIQUE TAG tagName4 ADD FOREIGN KEY eExpression5 TAG tagName4 FOR lExpression6 REFERENCE tableName2 TAG tagName5 DROP REFERENCE KEY TAG tagName6SAVE RENAME COLUMN fieldName4 TO fieldName5 该格式可删除字段DROP COLUMN,可以修改字段名(RENAME COLUMN),可以定义修改和删除一级的有效性规则等.,Eg1 将订购单1表的总金额字段名改为金额 ALT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论