第5章 关系数据库标准语言SQL.doc_第1页
第5章 关系数据库标准语言SQL.doc_第2页
第5章 关系数据库标准语言SQL.doc_第3页
第5章 关系数据库标准语言SQL.doc_第4页
第5章 关系数据库标准语言SQL.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第5章 关系数据库标准语言SQL(34-40%)考核知识点:1、 SQL的数据定义功能CREATETABLE-SQLALTERTBLE-TABLE2、 SQL的数据修改功能DELETE-SQLINSERT-SQLUPDATE-SQL3、 SQL的数据查询功能简单查询嵌套查询连接查询分组和计算查询集合的并运算重要考点提示: 利用SQL定义语句的ALTER为数据表添加、删除或修改字段 利用数据的插入和更新操作 利用SQL语句进行嵌套查询 利用SQL语句进行超连接查询,主要掌握内部连接INNER JOIN 利用SQL语句的GROUP短语进行分组和计算查询,以及HAVING子句的作用 利用SQL语句建立视图,包括视图中字段名的重新定义一、SQL概述考点1 概述1、概念SQL是结构化查询语言Structured Query Language的缩写。它包括:数据定义、数据查询、数据操纵和数据控制4部分。核心部分是:数据查询VFP只支持:数据定义、数据查询、数据操纵,但不支持数据控制。2、SQL语言的特点(1)一种一体化的语言(2)一种高度非过程化的语言(3)语言非常简洁(4)可以直接以命令方式交互使用,也可以以程序方式使用二、查询功能SQL的核心是查询,基本形式由:SELECT-FROM-WHERE查询块构成,多个查询块可嵌套执行。SELECT命令考点2 简单查询1、简单查询由SELECT 和FROM短语构成的无条件查询,或由SELECT、FROM、WHERE短语构成的条件查询。例1 从职工关系中检索所有工资值。注意:SELECT一定要写全,不然机试没分SELECT 工资 FROM 职工例2 检索仓库关系中的所有元组SELECT * FROM 仓库等价于:SELECT 仓库号, 城市, 面积 FROM 仓库例3 检索工资多于1230元的职工号。SELECT 职工号 FROM 职工 WHERE 工资1230例4 检索哪些仓库有工资多于1210元的职工。SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资1210例5 给出在仓库“WH1”或“WH2”工作并且工资少于1250元的职工号。SELECT 职工号 FROM 职工;WHERE 工资1230 AND 职工.仓库号=仓库.仓库号例7 找出工作在面积大于400的仓库的职工号以及这些职工工作的城市。SELECT 职工号, 城市 FROM 职工, 仓库;WHERE 面积400 AND 职工.仓库号=仓库.仓库号3、嵌套查询嵌套查询所要求的结果出自一个关系,但关系的条件即涉及多个关系。其内层基本上也是一个SELECT-FROM-WHERE查询语句。这种简单嵌套查询,可使用谓词IN或NOT IN来判断在外层的查询条件中是否包含内层查询的结果。注意:嵌套查询都是外层查询依赖于内层查询的结果,而内层查询与外层查询无关。例8 哪些城市至少有一个仓库的职工的工资为1250。SELECT 城市 FROM 仓库 ;WHERE 仓库号 ;IN (SELECT 仓库号 FROM 职工 WHERE 工资=1250)找职工的工资金额为1250的仓库号: SELECT 仓库号 FROM 职工 WHERE 工资=1250结果是:WH1, WH2再找这两个中的城市号。难:例9 查询所有职工的工资都多于1210元的仓库的信息。即:没有一个职工的工资少于或等于1210元的仓库的信息,且要求该仓库至少有一名职工。SELECT * FROM 仓库 ;WHERE 仓库号 NOT IN;(SELECT 仓库号 FROM 职工 WHERE 工资=1210); AND 仓库号 IN (SELECT 仓库号 FROM 职工)例10 找出和职工E4挣同样工资的所有职工SELECT 职工号 FROM 职工 WHERE 工资=;(SELECT 工资 FROM 职工 WHERE 职工号=”E4”)若把他本人除去,则为:SELECT 职工号 FROM 职工 WHERE 工资=;(SELECT 工资 FROM 职工 WHERE 职工号=”E4”);AND 职工号”E4”考点3 特殊运算符号1、BETWEENAND该查询条件是:在范围之内,相当于用AND连接一个逻辑表达式。例11 检索出工资在1220元到1240元范围内的职工信息。SELECT * FROM 职工 ;WHERE 工资 BETWEEN 1220 AND 1240或:SELECT * FROM 职工 ;WHERE 工资=1220 AND 工资=1240本例中:检索出工资在不在1220元到1240元范围内的职工信息。SELECT * FROM 职工 ;WHERE 工资 NOT BETWEEN 1220 AND 12402、LIKE含义:它是一个字符串匹配运算符,与之搭配使用的通配符包括“%”和“_”。%:0个或多个字符;_:1个字符例12 从供应商关系中检索出全部公司的信息(不要工厂或其他供商的信息)。SELECT * FROM 供应商 ;WHERE 供应商名 LIKE %公司或:SELECT * FROM 供应商 ;WHERE 公司$ 供应商名例13 找出不在北京的全部供应商信息。SELECT * FROM 供应商 WHERE 地址#北京或:SELECT * FROM 供应商 WHERE 地址!=北京考点4 排序使用SQL SELECT可以将查询结果进行排序,排序的短语是:ORDER BY格式:ORDER BY 排序项1 ASC | DESC ,排序项2ASC | DESC例14 按职工的工资升序检索出全部职工信息。SELECT * FROM 职工 ORDER BY 工资若为降序:SELECT * FROM 职工 ORDER BY 工资 DESC例15 先按仓库号排序,再按工资排序输出全部职工信息。SELECT * FROM 职工 ORDER BY 仓库号, 工资下面的例:SELECT * FROM 职工 ORDER BY 仓库号 DESC, 工资SELECT * FROM 职工 ORDER BY 仓库号, 工资 DESC考点5 计算查询及利用空值查询1、简单的计算查询SQL不仅具有一般的检索能力,而且 有计算方式的检索,用于计算检索的函数有:COUNT(计数),SUM(求和),AVG(计算平均值),MAX(求最大值),MIN(求最小值)例16 找出供应商所在地的数目。SELECT COUNT(DISTINCT 地址) FROM 供应商或:SELECT COUNT(DISTINCT 地址) AS 供应商所在地数目; FROM 供应商例17 求支付的工资总数。SELECT SUM(工资) FROM 职工或:SELECT SUM(工资) AS 支付工资总数 FROM 职工例18 求北京和上海的仓库职工的工资总和。方法一:嵌套SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN;( SELECT 仓库号 FROM 仓库 ;WHERE 城市=”北京” OR 城市=”上海”)方法二:简单SELECT SUM(工资) FROM 职工, 仓库 ; WHERE 仓库.仓库号=职工.仓库号 AND ;(城市=”北京” OR 城市=”上海”)例19 求所有职工的工资都多于1210元的仓库的平均面积。 与前面的例9,差不多SELECT AVG(面积) FROM 仓库 ;WHERE 仓库号 NOT IN;(SELECT 仓库号 FROM 职工 WHERE 工资=23、利用空值查询假设在订购单关系中,一名职工正在准备订购单,但尚未选定供应商,这样若把信息存入数据库,则供应商号和订购日期两个属性均为空值,在前面给出的订购记录中有3条这样的记录。例23 找出尚未确定供应商的订购单。(由于表的原因,无法演示)SELECT * FROM 订购单 WHERE 供应商号 IS NULL例24 列出已经确定了供应商的订购单信息。SELECT * FROM 订购单 WHERE 供应商号 IS NOT NULL考点6 别名和自连接查询1、SQL语句允许在FROM短语中为关系定义别名,格式为: 也可以为: AS 例如:有如下的连接语句:SELECT 供应商名 FROM 供应商, 订购单, 职工, 仓库;WHERE 地址=”北京” AND 城市=”北京”;AND 供应商.供应商号=订购单.供应商号;AND 订购单.职工号=职工.职工号;AND 职工.仓库号=仓库.仓库号是一个基于4个关系的连接查询,其中必须使用关系名作前缀,如果使用别名就会简单一些,如下是使用了别名的同样的连接查询语句:SELECT 供应商名 FROM 供应商 S, 订购单 P, ; 职工 E, 仓库 W;WHERE 地址=”北京” AND 城市=”北京”;AND S.供应商号=P.供应商号;AND P.职工号=E.职工号;AND E.仓库号=W.仓库号在这个例子中,别名并不是必须的。但在关系的自连接操作中,别名就是必不可少的了。2、SQL不仅可以对多个关系进行连接操作,也可以将同一关系与其自身进行连接,这种连接就称为自连接。在关系的自连接操作中,别名是必不可少的。假设有一人个雇员关系: 雇员(雇员号,雇员姓名,经理)其中的雇员号和经理两个属性出自同一个值域,同一元组的这两个属性值是“上、下级”关系。下图说明了雇员关系和它的一个实例。 雇员 雇员例25 根据雇员关系列出上一级经理及其职员(被领导者)的清单。SELECT S.雇员姓名, ”领导”, E.雇员姓名 ;FROM 雇员 S, 雇员 E ; WHERE S.雇员号=E.雇员号结果是:赵涌 领导 钱潮赵涌 领导 孙洁孙洁 领导 李渌考点7 使用量词和谓词的查询除了IN和NOT IN外,还有两类和子查询有关的运算符。它们是:格式1 ANY|ALL|SOME(子查询)ANY、ALL和SOME是量词,其中ANY和SOME是同义词,在进行比较运算时,只要子查询中有一行能使结果为真,则结果就为真;而ALL则要求子查询中的所有行都使结果为真时,结果才为真。格式2 NOT EXISTS(子查询)EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回(即存在元组或不存在元组)。注意:NOT EXISTS只是判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。例27 检索那些仓库中还没有职工的仓库的信息。前面的做法是:SELECT * FROM 仓库 WHERE 仓库号 NOT IN; ( SELECT 仓库号 FROM 职工 )也可以用:SELECT * FROM 仓库 WHERE NOT EXISTS; ( SELECT * FROM 职工 WHERE 仓库号=仓库.仓库号)结果为:WH4 武汉 400例28 检索那些仓库中至少已经有一个职工的仓库的信息。前面的做法是:SELECT * FROM 仓库 WHERE 仓库号 IN; ( SELECT 仓库号 FROM 职工)也可以用:SELECT * FROM 仓库 WHERE EXISTS; ( SELECT * FROM 职工 WHERE 仓库号=仓库.仓库号)例29 检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号。简单讲一下方法二即可方法一,前面的做法是:SELECT DISTINCT 仓库号 FROM 职工;WHERE 工资= ; ( SELECT MIN(工资) FROM 职工 ; WHERE 仓库号=”WH1” )方法二,也可以用:SELECT DISTINCT 仓库号 FROM 职工;WHERE 工资= ANY ; ( SELECT 工资 FROM 职工 ; WHERE 仓库号=”WH1” )例30 检索有职工的工资大于或等于WH1仓库中所有职工的工资的仓库号。前面的做法是:SELECT DISTINCT 仓库号 FROM 职工;WHERE 工资= ; ( SELECT MAX(工资) FROM 职工 ; WHERE 仓库号=”WH1” )也可以用:SELECT DISTINCT 仓库号 FROM 职工;WHERE 工资=ALL ; ( SELECT 工资 FROM 职工 ; WHERE 仓库号=”WH1” )考点8 超链接查询在一般的SQL中,超连接运算符是“*=”和“=*”,称为左连接和右连接。但VFP不支持它们,VFP有专门的连接运算。格式:很重要的SELECT FROM 表1 INNER | LEFT | RIGHT | FULL JION 表2 ON 连接条件 WHERE 其中: INNER JOIN等价于JOIN ,为普通连接;重点 LEFT JOIN为左连接; RIGHT JOIN为右连接; FULL JOIN为全连接。例31 普通连接(即可有满足连接条件的记录才出现在查询结果中)。SELECT 仓库.仓库号, 城市, 面积, 职工号, 工资; FROM 仓库 JOIN 职工; ON 仓库.仓库号=职工.仓库号等价于:SELECT 仓库.仓库号, 城市, 面积, 职工号, 工资; FROM 仓库 INNER JOIN 职工; ON 仓库.仓库号=职工.仓库号等价于:SELECT 仓库.仓库号, 城市, 面积, 职工号, 工资; FROM 仓库, 职工 WHERE 仓库.仓库号=职工.仓库号注意:JOIN连接格式在连接多个表时的书写方法要特别注意,在这种模式中JOIN的顺序和ON的顺序是很重要的,特别要注意JOIN要和ON的顺序(相应的连接条件)正好相反。例如:下面是一个基于4个关系的连接查询,前面别名与自连接时用的例:SELECT 供应商名 FROM 供应商, 订购单, 职工, 仓库;WHERE 地址=”北京” AND 城市=”北京”;AND 供应商.供应商号=订购单.供应商号;AND 订购单.职工号=职工.职工号;AND 职工.仓库号=仓库.仓库号用JOIN ON的形式:SELECT 供应商名 FROM 供应商 JOIN 订购单 ;JOIN 职工 JOIN 仓库;ON 职工.仓库号=仓库.仓库号;AND 订购单.职工号=职工.职工号;AND 供应商.供应商号=订购单.供应商号;WHERE 地址=”北京” AND 城市=”北京”;了解集合的并运算:SQL支持集合的并(UNION)运算,即可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果。为了进行并运算,要求两个查询具有相同的字段个数,并且对应字段的值要出自同一个值域(相同数据类型和取值范围)。例:如下语句的结果是城市为北京和上海的仓库信息:SELECT * FROM 仓库 WHERE 城市=”北京”;UNION ;SELECT * FROM 仓库 WHERE 城市=”上海”等价于:SELECT * FROM 仓库 ;WHERE 城市 IN(”北京”,”上海”)考点9 VFP中SQL SELECT的几个特殊选项 很重要的1、只显示前几项记录格式:TOP 数值型表达式 PERCENT当不使用PERCENT时,数值型表达式是1-32767之间的整数,说明显示前几个记录;当使用PERCENT时,数值型表达式是0.01至99.99间的实数,说明显结果中前百分之几的记录;注意:TOP短语要与ORDER BY短语同时使用才有效。重点例35 显示工资最高的3位职工的信息。SELECT * TOP 3 FROM 职工 ;ORDER BY 工资 DESC例36 显示工资最低的那30%职工的信息。SELECT * TOP 30 PERCENT FROM 职工 ;ORDER BY 工资 2、将查询结果存放到数组中 很重要的格式:INTO ARRAY 数组变量名功能:将查询结果存放到数组中。一般将存放查询结果的数组作为二维数组来使用,每行一条记录,每列对应于查询结果的一列。查询结果存放到数组中,可以非常方便地在程序中使用。例:职工表的记录如下:则:SELECT * FROM 职工 INTO ARRAY TMPTMP(1,1) 存放的是第1条记录的仓库号字段值,TMP(1,3) 存放的是第1条记录的工资字段值,TMP(4,2) 存放的是第4条记录的职工号字段值,演示:3、将查询结果存放到临时文件中 很重要的格式:INTO CURSOR 临时表文件名功能:将查询结果存放到临时数据库表文件中,该临时文件是一个只读的 .dbf 文件,当查询结束后该临时文件是当前文件,可以像一般的.dbf文件一样使用,当关闭文件时,该文件将自动删除。例:SELECT * FROM 职工 INTO CURSOR aaa可用LIST,BROW等命令演示一下4、将查询结果存放到永久表中 很重要的格式:INTO DBF | TABLE 表名 功能:将查询结果放到永久表中(.dbf文件)。该表在磁盘上是存在的例:SELECT * FROM 职工; INTO DBF ABC ORDER BY 工资 DESCSELECT * TOP 3 FROM 职工; ORDER BY 工资 INTO TABLE AAA111演示:5、将查询结果存放到文本文件中 很重要的格式:TO FILE 文本文件名 ADDITIVE 功能:将查询结果放到文本文件中,其中文本文件名默认的后缀为.TXT。如果使用ADDITIVE,则结果将追加在原文件的属部,否则将覆盖原有的文件。 例:SELECT * TOP 3 FROM 职工; ORDER BY 工资 TO FILE tttSELECT * FROM 职工; To file ABC ORDER BY 工资 DESC演示:6、将查询结果直接输出到打印机 了解格式:TO PRINTER PROMPT 功能:可以将查询结果输出到打印机,如果有PROMPT选项,在开始打印之前会打开打印机设置对话框。 例:SELECT * FROM 职工; ORDER BY 工资 DESC To PRINTER三、操作功能SQL的操作功能是指对数据库中数据的操作功能,主要包括:数据的插入、更新和删除3个方面的内容。考点10 插入INSERT 重点SQL支持两种SQL插入命令的格式,一种是标准格式,另一种是特殊格式。1、标准格式INSERT INTO 表名(字段1 ,字段2 ) VALUES ( 表达式1,表达式2, )2、特殊格式INSERT INTO 表名 FROM ARRAY 数组名 | MEMVAR其中:INSERT INTO 表名:说明由表名指定的表中插入记录;当插入的不是完整的记录时,可以用字段1,字段2指定字段VALUES ( 表达式1,表达式2, ):给出具体的记录值FROM ARRAY 数组名:说明从指定的数组中插入记录值;FROM MEMVAR:说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那么相应的字段为默认值或空值。注意:SQL的插入总是从尾部插入记录的例1:往订购单关系中插入元组即记录,( “E7”,”S4”,”OR01”,2001-05-25 )可用如下命令:INSERT INTO 订购单 ;VALUES( “E7”,”S4”,”OR01”,2001-05-25 )演示:(演示完毕删除该记录)对以上情况,假设供应商尚未确定,那么只能先插入职工号和订购单号两个属性的值,这时,可用如下的命令:INSERT INTO 订购单(职工号, 订购单号) ;VALUES( “E7”, ”OR01” )这时,另外两个属性的值为空。用下面一组命令来说明INSERT INTO FROM ARRAY的使用方式:(可用程序1来做)USE 订购单 SCATTER TO arr1 & 将当前记录读到数组arr1COPY STRUCTURE TO ord2 &拷贝订购单表结构到ord2INSERT INTO ord2 FROM ARRAY arr1 & 从数组arr1插入一条记录到ord2SELECT ord2 & 切换到ord2的工作区BROWSE &用BROWSE 命令验证插入的结果USE &关闭当前工作区数据表,即关闭表ord2文件DELETE FILE ord2.dbf &删除ord2.dbf文件用下面一组命令来说明INSERT INTO FROM MEMVAR的使用方式:(可用程序2来做)USE 订购单 SCATTER MEMVAR & 将当前记录读到内存变量,变量名与字段名同名COPY STRUCTURE TO ord2 &拷贝订购单表结构到ord2INSERT INTO ord2 FROM MEMVAR& 从内存变量插入一条记录到ord2SELECT ord2 & 切换到ord2的工作区BROWSE &用BROWSE 命令验证插入的结果USE &关闭当前工作区数据表,即关闭表ord2文件DELETE FILE ord2.dbf &删除ord2.dbf文件如:18,一中4小题。考点11 更新 UPDATE 重点格式:UPDATE 表名 SET 字段名1=要更新的值1,字段名2=要更新的值2, WHERE 条件功能:例1:设有一“职工1”表,包含有仓库号、工资等字段,给WH1仓库的职工提高10%的工资,可以使用SQL命令:UPDATE 职工1 SET 工资=工资*1.1 WHERE 仓库号=”WH1”VFP命令为:REPLACE 工资WITH 工资*1.1 FOR 仓库号=”WH1”例2:设有一“学生”表,包含有年龄、助学金等字段,给所有学生年龄增加1岁,所有学生助学金增加20元。使用SQL命令:UPDATE 学生 SET 年龄=年龄+1 ,助学金=助学金+20VFP命令为:REPLCE ALL 年龄 WITH 年龄+1 ,助学金 WITH 助学金+20如:15,一中的4小题。考点12 删除 DELETE 重点格式:DELETE FROM 表名 WHERE 条件功能:删除指定表中满足条件的记录,如果无条件,则删除该表中所有的记录。这是逻辑删除。例1:删除学生表中所有女生记录。SQL命令: DELETE FROM 学生 WHERE 性别=”女”VFP命令为: USE 学生DELETE FOR 性别=”女”例2:删除职工1中所有记录。SQL命令: DELETE FROM 职工1 VFP命令为: USE 职工1DELETE ALL若要物理删除,则需:PACK或:USE 职工1ZAP四、定义功能考点13 表的定义 重点格式:CREATE TABLE | DBF NAMEFREE ( (, ) NULL | NOT NULL CHECKERRORDEFAULT PRIMARY KEY | UNIQUE REFERENCESTAG NOCPTRANS, , PRIMARY KEY TAG | , UNIQUE TAG , FOREIGN KEY TAG NODUP REFERENCES TAG , CHECK ERROR )| FROM ARRAY 说明: CREATE TABLE | DBF :指定要创建的表的名字; NAME:指定长表名,最多包括128个字符; FREE:指定建立一个自由表; (, ) :分别定义字段名、类型、宽度和小数位数,其中的字段类型要用单个字母表示,如下: 字符型,C;日期型,D;日期时间型,T;数值型,N; 浮点型,F;整型,I; 双精度型,B; 贷币型,Y; 逻辑型,L;备注型,M;通用型,G NULL | NOT NULL:指定字段是否允许空值 CHECKERROR:设置字段的有效性规则及出错时的提示信息 DEFAULT :设置字段的默认值 PRIMARY KEY | UNIQUE:设置主索引或候选索引,标识名与字段名相同 REFERENCESTAG :指定与之建立永久关系的父表 NOCPTRANS:防止字符字段和备注字段转换到另一个代码页。 PRIMARY KEY TAG :指定主索引和主索引的标识符 UNIQUE TAG :指定候选索引和候选索引标识名 FOREIGN KEY TAG NODUP:指定外部索引和索引标识名,包含有NODUP,表示创建一个候选外部索引 FROM ARRAY :根据指定数组内容建立表,数组元素依次是字段名、类型、宽度和小数位数注意: 新表自动在最低要用工作区以独占方式打开,并可通过别名引用; 建表时若没有打开相关数据库或在CREATE TABLE 命令中使用了FREE选项,则建立的是自由表,此时NAME,CHECK,DEFAULT等数据库表才有的属性设置将不能使用。从这个命令的语法格式可以看出,该命令能够完成表设计器完成的所有功能,包括定义表结构、设置主索引、定义字段有效性规则、字段默认值以及描述表间关系等。例1:建立学生表。SQL命令: CREATE TABLE 学生( 学号 C(8), 姓名 C(8), 性别 C(2), 出生日期 D, 助学金 N(7,2), 简历 M(4), 照片 G(4)如:18,一中的3小题。VFP命令为:CREATE 学生 然后进入表设计器进行设计例2:建立学生表,含有NULL项。CREATE TABLE 学生( 学号 C(8), 姓名 C(8), 性别 C(2) , 出生日期 D NULL, 助学金 N(7,2), 简历 M, 照片 G)其中,D、M、G类型的字段长度可省略例3:建立学生表的同时建立标识符为学号的主索引。注意:要建立数据库或打开数据库。CREATE TABLE 学生( 学号 C(8) PRIMARY KEY, 姓名 C(8), 性别 C(2)CREATE TABLE 学生22( 学号 C(8) , PRIMARY KEY 学号 tag xh , 姓名 C(8), 性别 C(2)此格式是自已定义的主索引名和标识符例4:建立学生表的同时建立标识符为学号的主索引,为性别建立有效性规则: 性别$”男女”或性别=”男” OR 性别=”女”,说明出错提示信息”性别只能是男或女”,性别的默认值为”男”。CREATE TABLE 学生(学号 C(8) PRIMARY KEY, 姓名 C(8), 性别 C(2) DEFAULT “男”; CHECK(性别=”男” OR 性别=”女”) ; ERROR”性别只能是男或女”)又如:CREATE TABLE 学生55( 学号 C(8) PRIMARY KEY, 姓名 C(8), 性别 C(2), 助学金 N(7,2) DEFAULT 200; CHECK(助学金=100 AND 助学金=1000) ; ERROR”助学金的范围在100-1000”)考点14 表的删除 重点格式:DROP TABLE 表名如果删除的是自由表,则应该将当前打开的数据库先关闭,才能进行删除。如果删除数据库表,则要先打开数据库,在数据库中进行,否则,即使删除了数据库表,但记录在数据库中的信息并没有被删除,此后会出现错误提示。例:假设已打开某一数据库,现有一自由表aa, 请把它删除。 CLOSE DATABASE DROP TABLE AA例:假设已打开某一数据库,若没有打开,则应先打开该数据库,现有一数据库表bb, 请把它删除。 DROP TABLE bb考点15 表结构的修改 重点如:15,一中的3小题。如:16,一中4小题。说明:格式太长了,请复习时,注意看例题修改表结构的命令是 ALTER TABLE,该命令有三种格式:格式1:ALTER TABLE ADD | ALTER COLUMN (, ) NULL | NOT NULL CHECKERRORDEFAULT PRIMARY KEY | UNIQUE REFERENCESTAG 功能:修改表中指定的字段或向表中添加新的字段。说明:ADD表示添加指定的字段,ALTER表示修改指定的字段该格式可以修改字段的类型、宽度、有效性规则、错误提示信息、默认值,定义主关键字和联接关系等,但不能修改字段名。例1:将学生表中的“学号”字段的宽度改为9,原来为8。SQL命令:ALTER TABLE 学生 ALTER 学号 C(9)例2:将学生表中增加一个字段:奖学金,N型,宽度为4。SQL命令:ALTER TABLE 学生 ADD 奖学金 N(4)例3:在学生表中,增加成绩字段,N(7,2),并要求成绩不超过100分。ALTER TABLE 学生 ADD 成绩 N(7,2) CHECK 成绩=0 AND 成绩=100 ERROR“成绩大超过100分!”该命令可以增加字段,并且写上字段的有效性规则和提示信息等.注意: 必须是数据库表才有意义。例4:在上例中,把成绩字段修改为N(6,1),并要求成绩不超过100分。ALTER TABLE 学生 ALTER 成绩 N(6,1) CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!”例5:在上例中,把成绩字段修改为N(5,1),并要求成绩不超过100分,且能够接受空值。ALTER TABLE 学生 ALTER 成绩 N(5,1) CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!” NULL格式2:ALTER TABLE ALTER COLUMN NULL | NOT NULL SET DEFAULT SET CHECKERRORDROP DEFAULT DROP CHECK功能:修改或删除表中指定字段的有效性规则或默认值说明:执行该命令后,不会影响数据表中的数据。注意:要求在数据库表中进行例6:在学生表中,删除成绩的有效性规则并设置字段默认值为75。再把默认值删除。删除成绩的有效性规则:ALTER TABLE 学生 ALTER 成绩 DROP CHECK设置成绩的默认值:ALTER TABLE 学生 ALTER 成绩 SET DEFAULT 75删除成绩字段的默认值:ALTER TABLE 学生 ALTER 成绩 DROP DEFAULT 注意格式1与格式2的区别:有无SET的区别例:上面的例4例4:在上例中,把成绩字段修改为N(6,1),并要求成绩不超过100分。用格式1:把字段修改的同时修改成绩的有效性规则ALTER TABLE 学生 ALTER 成绩 N(6,1) CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!”又如:增加字段时ALTER TABLE 学生 ADD 成绩 N(6,1) CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!” 用格式2:对已有的字段进行修改,如修改成绩的有效性规则ALTER TABLE 学生 ALTER 成绩SET CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!”设置成默认值,改有效性规则格式1:ALTER TABLE 学生 ALTER 成绩 N(6,1) CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!” default 75格式2:分别设置ALTER TABLE 学生 ALTER 成绩SET CHECK 成绩=0 AND 成绩=100 ERROR“成绩不超过100分!” 75ALTER TABLE 学生 ALTER 成绩set default 75格式3:可看书本,130页开始该格式可以删除字段、修改字段名,可以定义、修改和删除表一级的有效性规则等。ALTER TABLE DROP COLUMN SET CHECKERROR DROP CHECKADD PRIMARY KEY TAG FORDROP PRIMARY KEYADD UNIQUE TAG FORDROP UNIQUE TAG ADD FOREIGN KEY TAG FOR REFERENCESTAG DROP FOREIGN KEY TAG SAVERENAME COLUMN TO NOVALIDATE例7:在学生表中,将“成绩”字段改名为“入学成绩”,最后删除这个字段。字段改名:ALTER TABLE 学生 RENAME 成绩 TO 入学成绩或:ALTER TABLE 学生 RENAME COLUMN 成绩 TO 入学成绩删除字段:ALTER TABLE 学生 DROP 入学成绩或:ALTER TABLE 学生 DROP COLUMN 入学成绩例8:在学生表中,将性别和姓名定义为候选索引,索引名为XB_XM。ALTER TABLE 学生 ; ADD UNIQUE 性别+姓名 TAG XB_XM上例中,删除刚建立的候选索引,XB_XMALTER TABLE 学生 ; DROP UNIQUE TAG XB_XM例:定义记录的有效性规则:ALTER TABLE 学生 SET CHECK 成绩=0 AND 成绩=100 ERROR“成绩大超过100分!”区别:字段的有效性规则ALTER TABLE 学生 alter 成绩 SET CHECK 成绩=0 AND 成绩=100 ERROR“成绩大超过100分!”考点16 视图的定义 重点1、视图的概念及其定义(1)视图的概念VFP中视图是一个虚拟的表,可以是本地的、远程的或带参数的。在关系数据库中,视图也称作窗口,即视图是操作表的窗口,可以把它看作是从表中派生出来的虚表(依赖于表,不独立存在)。(2)视图的定义格式:CREATE VIEW 视图名 AS select_statement说明:select_statement:可以是任意的SELECT查询语句,它说明和限定了视图中的数据;视图的字段名将与select_statement中指定的字段名或表中的字段名同名。视图是根据表定义或派生出来的,所以在涉及视图的时候,常把表称作基本表。2、从单个表派生出的视图例1:建立一个视图,包括职工号和所在工作的仓库号。CREATE VIEW E_W AS ; SELECT 职工号, 仓库号 FROM 职工如:CREATE VIEW AAA AS ; SELECT * FROM E_W数据源可以来自视图。如:CREATE VIEW CCC AS ; SELECT 仓库号, 面积 FROM 仓库 ; WHERE 城市=”北京”可以显示视图内容:方法一: USE 视图名 LIST方法二:SELECT * FROM 视图视图一经定义,就可以和基本表一样进行各种查询,也可以进行一些修改操作。对于最终用户来说,有时并不需要知道操作的是基本表还是视图。3、从多个表派生出的视图例2:建立一个视图,包括职工号、职工工资和职工工作所在的城市信息。CREATE VIEW DDD AS ; SELECT 职工号, 工资, 城市

温馨提示

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

评论

0/150

提交评论