《关系数据库标准语言SQL》由会员分享,可在线阅读,更多相关《关系数据库标准语言SQL(49页珍藏版)》请在金锄头文库上搜索。
1、全国计算机等级考试Visual FoxPro 程序设计主讲老师:段克奇主讲老师:段克奇第第4 4章章 关系数据库标准语言关系数据库标准语言SQLSQL我们用Visual FoxPro中的命令可以实现对数据库中各种数据对象的操作,但与其相比,使用SQL会更加方便,而且在SQL中可以实现一些Visual FoxPro命令无法实现的功能。 第第4 4章章 关系数据库标准语言关系数据库标准语言SQLSQL SQLSQLSQLSQL概述概述概述概述4.14.1 查询功能查询功能查询功能查询功能4.24.2 操作功能操作功能操作功能操作功能4.34.3 定义功能定义功能定义功能定义功能4.44.4本章知识
2、点在笔试考试中的分析明细表知识点考核概率分值分布考试形式难易程度简单查询与简单连接查询10010选择或填空或上机嵌套查询404选择或填空或上机排序查询60选择或填空或上机简单的计算查询与分组计算查询10026选择或填空或上机利用空值查询80选择或填空或上机别名与自连接查询、内外层互相关嵌套查询与使用量词和谓词查询404选择或填空或上机SELECT的几个特殊选项804选择或填空或上机插入数据804选择或填空或上机更新数据60选择或填空或上机删除数据40选择或填空或上机表的定义604选择或填空或上机表结构的修改10026选择或填空或上机4.1 SQL概述 SQL是结构化查询语言(Structrue
3、d Query Language)缩写。查询是SQL语言的重要组成部分,此外,SQL还具有数据定义、数据操纵和数据控制功能。1. SQL语言的主要特点SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作;SQL语言是一种高度的非过程化的语言;SQL语言非常简洁,但功能强大;SQL语言可以直接以命令方式交互使用,也可以在程序设计语言中以程序方式使用。使用灵活。4.1 SQL概述 SQL命令动词SQL功能命令数据查询SELECT数据定义CREATE、DROP、ALTER数据操作INSERT、UPDATE、DELETE数据控制GRAN
4、T、REVOKE 2. SQL命令动词SQL可以完成数据库操作要求的所有功能,包括数据查询、数据操作、数据定义和数据控制,是一种全能的数据库语言。SQL的功能和相对应的命令如下表所示。4.2 查询功能SQLSQL的核心是查询。的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行。Visual FoxPro的SQL SELECT命令的语法格式如下 :SELECTALLDISTINCTTOP PERCENT.AS ,. AS FROM数据库名!INNERLEFTOUTERRIGHTOUTERFULLOUTERJOI
5、N 数据库名!ON 连接条件INTO 目标文件TO FILE文件名ADDITIVETO PRINTERPROMPTTO SCREENWHERE AND 连接条件ANDOR 筛选条件GROUP BY ,分组表达式2HAVINGUNIONALLORDER BY ASCDESC4.2 查询功能SELECT查询命令的使用非常灵活,用它可以构造各种各样的查询。本节将通过大量的实例来介绍SELECT命令的使用。首先来了解一下常用的特殊运算符,如下表所示。运算符含义,!=,#不等于IS NULL为空值BETWEENAND表示在和之间,其中包含等于,即大于等于AND前面的数,小于等于AND后面的数IN在一组值
6、的范围内LIKE字符串匹配运算符。在SQL中,字符串匹配运算符LIKE,可与通配符“%”和“_”一起使用。“%”表示与任意多个字符匹配;“_”表示与任意一个字符匹配。而在第二章用到的通配符“*”和“?”是用在一些命令中,在SQL中“*”和“?”不可以与LIKE短语一起使用。4.2 查询功能本节将用到4个表进行查询 ,表结构及模拟数据如下:4.2 查询功能 1.简单查询SELECT 职称 FROM 教师 SELECT DISTINCT 职称 FROM 教师 SELECT * FROM 教师 WHERE 职称!=”教授” SELECT * FROM 学生 WHERE year(出生日期)=1991
7、 AND 性别=”男”SELECT * FROM 成绩 WHERE 成绩 IN(92,90,85)SELECT * FROM 成绩 WHERE 成绩 BETWEEN 75 AND 89SELECT * FROM 学生 WHERE LEFT(班级,4)=”会电”SELECT * FROM 课程 WHERE 课程名 LIKE “%网络%” 4.2 查询功能 2.简单的连接查询 连接是关系的基本操作之一,连接查询是一种基于多个关系的查询。在连接查询中,当需要对多个表连接时,可以用SELECT 指定查询显示的字段;在WHERE子句中指定连接条件(连接的字段名前要加上表名做为前缀,表名和字段名之间用”.
8、”隔开);在FROM子句中指定要连接的表。 查询出所有学生的学号、姓名、课程号和成绩。 SELECT 学生.学号,姓名,课程号,成绩; FROM 学生,成绩; WHERE 学生.学号=成绩.学号 注意:此例中要查询的“学号”字段存在于“学生”和“成绩”两个表中,这时必须用表名作前缀指明字段是哪个表里的字段,一般情况下我们要选择字段值唯一的那个表里的字段(如:学生.学号)。4.2 查询功能 3.嵌套查询嵌套查询是一类基于多个表的查询,查询的结果是出自一个表中的字段,但是查询的条件要涉及到多个表。嵌套查询一般分为两层,内层和外层,被括号括起来的为内层查询,先进行内层查询,在内层查询的基础上再进行外
9、层查询。比如: 查询出没有考试成绩的学生的学号和姓名。SELECT 学生.学号,姓名;FROM 学生;WHERE 学号 NOT IN(SELECT 学号 FROM 成绩)4.2 查询功能 4.排序查询ORDER BY 字段名1ASC|DESC,字段名2ASC|DESC其中ASC表示升序,可省略;DESC表示降序。比如: 查询学生的学号、姓名和成绩字段,并按成绩升序排列,如果成绩相同再按学号降序排列。SELECT 学生.学号,姓名,成绩;FROM 学生,成绩;WHERE 学生.学号=成绩.学号 ORDER BY 成绩 ASC,学生.学号 DESC注意:此例中的ORDER BY短语可写成ORDER
10、 BY 3 ,1 DESC。ORDER BY 是对最终的查询结果进行排序,不可以在子查询中使用该短语。4.2 查询功能SQL计算函数函数名功能AVG计算一个数据列的平均值COUNT统计表中元组的个数(即统计输出的行数)MAX计算指定列的最大值MIN 计算指定列的最小值SUM计算指定列中的数值总和 5.计算查询SQL不仅具有一般的查询能力,而且还有计算机方式的查询,例如查询职工的平均工资、最高或最低工资等。用于计算查询的函数如下表所示。4.2 查询功能 5.计算查询 比如:SELECT COUNT(DISTINCT 班级) FROM 学生SELECT MIN(成绩) as 最低分; &AS短语可
11、指定查询结果中显示的新属性名。FROM 成绩;WHERE 学生.学号=成绩.学号SELECT SUM(成绩) AS 总分; FROM 成绩;WHERE 课程号=”C4”4.2 查询功能6.分组查询 在实际应用中,除了简单的计算查询外,还经常用到GROUP BY 子句进行分组查询。GROUP BY子句一般跟在WHERE子句之后,没有WHERE子句时,跟在FROM子句之后。另外,还可以根据多个属性进行分组(如:先按年分组,再按月分组)。 例如:若要统计一个系中各班的学生人数,就要先以班为单位进行分组,然后再统计每班的人数。 如果想要统计这个系中班级人数在35人以上的班级有哪些,还要用到HAVING
12、子句来限制分组后的条件必须是35人以上的班级。 注意:HAVING子句总是跟在GROUP BY子句之后,而不可以单独使用。HAVING子句和WHERE子句并不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。 一般情况下,分组与某些具有累计功能的函数联合使用,如AVG( )、SUM( )、COUNT( )。 4.2 查询功能6.分组查询查询平均成绩在80以上(含80)的课程名及平均分。SELECT 课程名,AVG(成绩) AS 平均成绩;FROM 课程,成绩;WHERE 课程.课程号=成绩.课程号;GROUP BY 课程.课程号 HAVING 平均成绩
13、=804.2 查询功能7.利用空值查询 SELECT 课程号,课程名 FROM 课程 WHERE 教师号 IS NULLSELECT 课程号,课程名 FROM 课程 WHERE 教师号 IS NOT NULL4.2 查询功能8.别名与自连接查询1)别名在连接操作中,经常需要使用表名作前缀,有时这样显得很麻烦,优其表名很长时,就显得更麻烦,因此,SQL允许在FROM短语中为表名定义别名,格式为:例4.16 利用别名查询学号、姓名、课程号及成绩大于80的学生信息。SELECT W.学号,W.姓名,P.课程号,P.成绩;FROM 学生 W,成绩 P; & 为学生表定义别名“W”,为成绩表定义别名“P
14、”。WHERE W.学号=P.学号 AND 成绩804.2 查询功能举例: 根据雇员表列出经理及其所管理的职员清单。SELECT s.雇员姓名 AS 领导, “管理雇员” AS 管理, e.雇员姓名 AS 雇员;FROM 雇员 s, 雇员 e;WHERE s.雇员号=e.经理8.别名与自连接查询2)自连接查询 SQL不仅可以对多个表实行连接操作,也可以将同一表与其自身进行连接,这种连接就称为自连接。例如:有这样一个雇员表,如下图所示。 4.2 查询功能 9.内外层互相关嵌套查询 前面讲过的嵌套查询都是外层查询依赖于内层查询的结果,而内层查询与外层查询无关。事实上,有时也需要内、外层相关的查询,
15、这时内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果。 在成绩表中每个学生有一门或多门课程的成绩,列出每个同学得分最高的那门课程的成绩,查询字段包括学号、课程号和成绩3个字段。 SELECT a.学号,a.课程号,a.成绩; FROM 成绩 a WHERE 成绩=(SELECT MAX(成绩) FROM 成绩 b ; WHERE a.学号=b.学号) ; ORDER BY 学号4.2 查询功能 10.使用量词和谓词的查询 与嵌套查询或子查询有关的运算符,除了IN和NOT IN运算符外,还有两类与子查询有关的运算符,它们有以下两种格式: 格式1:ANY|ALL|SOME(子查
16、询) ANY(任意的)和SOME(一些)表示只要子查询中存在符合条件的行,结果就成立;而ALL(所有的)只有子查询中的所有的行都符合条件,结果才成立。 格式2:NOTEXISTS(子查询)EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。其本身并没有进行任何运算或比较,只用来返回子查询结果。 4.2 查询功能 10.使用量词和谓词的查询 举例: 查询与课程号为C4的任何一个成绩相等或高于的学生记录 SELECT * FROM 成绩; WHERE 成绩=ANY(SELECT 成绩 FROM 成绩 WHERE 课程号=C4) 以上的查
17、询等价于: SELECT * FROM 成绩; WHERE 成绩=(SELECT MIN(成绩) FROM 成绩 WHERE 课程号=C4) 查询比课程号为C4的所有成绩都高的学生记录 SELECT * FROM 成绩; WHERE 成绩=ALL(SELECT 成绩 FROM 成绩 WHERE 课程号=C4) 以上查询等价于: SELECT * FROM 成绩; WHERE 成绩=(SELECT MAX(成绩) FROM 成绩 WHERE 课程号=C4) 4.2 查询功能 10.使用量词和谓词的查询 举例: 查询至少有一门考试成绩的学生信息 SELECT * FROM 学生;WHERE EXI
18、STS(SELECT * FROM 成绩 WHERE 学生.学号=成绩.学号)以上的查询语名等价于:SELECT * FROM 学生;WHERE 学号 IN(SELECT 学号 FROM 成绩) 查询出没有考试成绩的学生信息 SELECT * FROM 学生;WHERE NOT EXISTS(SELECT * FROM 成绩 WHERE 学生.学号=成绩.学号)以上的查询语句等价于:SELECT * FROM 学生 WHERE 学号 NOT IN(SELECT 学号 FROM 成绩)4.2 查询功能 11.超连接查询 前面我们进行的查询是把满足连接条件的记录包含到运算结果中,超连接首先保证一个
19、表中满足条件的元组都在结果表中,然后将满足连接条件的元组与另一个表的元组进行连接,不满足连接条件的则应将来自另一个表的属性值置为空值。 在一般的SQL中,超连接运算符是“*=”(左连接)和“=*”(右连接)。超连接查询有四种连接方式,其基本格式如下: SELECT FROM 左表 INNERLEFTRIGHTFULL JOIN 右表 ON 连接条件 WHERE 其它条件 其中:INNER JOIN等价于 JOIN,为普通连接(也称为内部连接);LEFT JOIN为左连接;RIGHT JOIN为右连接;FULL JOIN称为全连接; 4.2 查询功能 11.超连接查询1)普通连接(内部连接):普
20、通连接只有满足连接条件的记录才出现在查询结果中 SELECT 教师.*,课程.* FROM 教师 INNER JOIN 课程 ON 教师.教师号=课程.教师号2)左连接:左连接除满足连接条件的记录出现在查询结果中外,第一个表中不满足连接条件的记录也出现在查询结果中,不满足连接条件的记录的对应部分为.NULL. SELECT 教师.*,课程.* FROM 教师 LEFT JOIN 课程 ON 教师.教师号=课程.教师号4.2 查询功能11.超连接查询3)右连接:除满足连接条件的记录出现在查询结果中外,第二个表中不满足连接条件的记录也出现在查询结果中,不满足连接条件的记录的对应部分为.NULL.
21、SELECT 教师.*,课程.* FROM 教师 RIGHT JOIN 课程 ON 教师.教师号=课程.教师号4)全连接 :除满足连接条件的记录出现在查询结果中外,两个表中不满足连接条件的记录也出现在查询结果中,即两个表中的内容都会显示在结果中,不满足连接条件的记录的对应部分为.NULL. SELECT 教师.*,课程.* FROM 教师 FULL JOIN 课程 ON 教师.教师号=课程.教师号4.2 查询功能SELECT * FROM 计算机系教师 WHERE 职称=教授 OR 职称=副教授;UNION;SELECT * FROM 经管系教师 WHERE 职称=教授 OR 职称=副教授 1
22、2.集合的并运算SQL支持集合的并(UNION)运算,可以将具有相同查询字段个数且对应字段值域相同的SQL查询语句用UNION短语连接起来,合并成一个查询结果输出。比如:将计算机系教师表和经管系教师表(如下图所示)中职称为教授和副教授的教师信息合并成一个表。4.2 查询功能 13. Visual FoxPro中SQL SELECT的几个特殊选项 1)只显示前几项记录SELECT TOP 数字 PERCENT 如:TOP 3 表示前3项记录; TOP 30 PERCENT 表示前30%的记录。注意:TOP短语必须与ORDER BY短语同时使用才有效 比如SELECT TOP 2 *;FROM B
23、OOKS;ORDER BY 价格 DESC &查询价格高的前几项的记录要用升序 4.2 查询功能13. Visual FoxPro中SQL SELECT的几个特殊选项 2)将查询结果存放到数组 在SQL查询语句的尾部添加INTO ARRAY 可以将查询的结果放入指定的数组中。比如: 将成绩表中课程号为“C2”的信息存储到数组a中。SELECT * FROM 成绩 WHERE 课程号=C2 INTO ARRAY a3)将查询结果存放到临时表中在SQL查询语句的尾部添加INTO CURSOR 可以将查询的结果放入指定的临时表中。此操作的通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接下来
24、对临时表操作得到最终结果。生成的临时表是当前被打开的并且是只读的,关闭该文件时将自动删除。比如: 将教师表的所有记录存储到临时表tmp中。SELECT * FROM 教师表 INTO CURSOR tmp 4.2 查询功能 13. Visual FoxPro中SQL SELECT的几个特殊选项 4)将查询结果存放到永久表中 在SQL查询语句的尾部添加INTO DBF|TABLE 可以将查询的结果放入新生成的指定表中。 比如: 将教师表的所有记录存储到表teacher中。 SELECT * FROM 教师表; INTO TABLE teacher &INTO TABLE 和INTO DBF是等价
25、的4.2 查询功能 13. Visual FoxPro中SQL SELECT的几个特殊选项 5)将查询结果存放到文本文件中在SQL查询语句的尾部添加TO FILE ADDITIVE可以将查询的结果放入新生成的指定.TXT文件中。比如:将教师表的所有记录存储到文本文件tmp中SELECT * FROM 教师表 TO tmp 如果使用ADDITIVE短语则结果将追加在原文件的尾部,否则将覆盖原有文件。如:SELECT * FROM 教师表 TO tmp ADDITIVE 6)将查询结果存放到文本文件中 在SQL查询语句的尾部添加TO PRINTER PROMPT可以将查询的结果直接输出到打印机。如
26、果使用了PROMPT选项,在开始打印之前会打开打印机设置对话框。4.3 操作功能 1. 插入数据 插入数据的操作有两种格式,第一种是标准格式,第二种格式是特殊格式。 第一种格式:INSERT INTO (字段名1,字段名2,) VALUES(字段值1,字段值2,) 比如: INSERT INTO 成绩(学号,课程号) VALUES(08,C4) INSERT INTO 成绩 VALUES(07,C4,87) 第二种格式:INSERT INTO 表名 FROM ARRAY 数组名 | FROM MEMVAR 说明:FROM MEMVAR说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那
27、么相应的字段为默认值或空值,比如: USE 成绩 SELECT * FROM 成绩 INTO ARRAY cj &将成绩表中的记录存储到数组cj中 COPY STRUCTURE TO 成绩2 &拷贝成绩表的结构到成绩2 INSERT INTO 成绩2 FROM ARRAY cj &从数组cj插入记录到成绩2中4.3 操作功能 . 更新数据 格式:UPDATE 表名 SET 字段名1=表达式1 ,字段名2=表达式2 WHERE 条件 说明:一般使用WHERE子句指定更新的条件,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。 比如: 将成绩表中成绩字段值为80以下的全部加5。
28、 UPDATE 成绩 SET 成绩=成绩+5 WHERE 成绩80 4.3 操作功能 3.删除数据 删除数据的命令格式为: DELETE FROM 表名 WHERE 条件 说明:改命令是逻辑删除指定表中满足条件的记录,如果要物理删除记录需要继续使用PACK命令。WHERE指定被删除的记录所满足的条件,如果不使用WHERE子句,则删除该表中的全部记录。 比如: 删除成绩表中成绩小于等于75的记录。 DELETE FROM 成绩 WHERE 成绩=754.4 定义功能.表的定义CREATE TABLE|DBF NAME FREE(,)NULL|NOT NULLCHECK ERROR DEFAULT
29、 PRIMARY KEY|UNIQUEREFERENCES TAG NOCPTRANS,PRIMARY KEY TAG |,UNIQUE TAG ,FOREIGN KEY TAG NODUPREFERENCES TAG ,CHECKERROR)|FROM ARRAY 4.4 定义功能 .表的定义 说明: TABLE和DBF等价,都是建立表文件; NAME指定长表名; FREE建立自由表; NULL或NOT NULL说明字段允许或不允许为空值; CHECK定义域完整性,由逻辑表达式指定表的合法值; ERROR显示由字符型文本信息指定的错误信息; DEFAULT定义默认值; UNIQUE建立候选索
30、引(注意不是惟一索引)。 可以看出,利用SQL命令可完成表设计器所能完成的所有功能。 注意:如果建立自由表(当前没有打开的数据库或使用了FREE),则很多选项在命令中不能使用,如NAME、CHECK、DEFAULT、FOREIGN KEY、PRIMARY KEY和REFERENCES等。4.4 定义功能.表的定义举例:用命令建立数据库xsgl。CREATE DATABASE xsgl 用命令建立“xs”表。CREATE TABLE xs(学号 C(3) PRIMARY KEY NOT NULL,姓名 C(6),性别 C(2) CHECK 性别$男女 ERROR 性别必须是男或女 DEFAULT
31、 女)用命令建立“kc”表。CREATE TABLE kc(课程号 C(2) PRIMARY KEY,课程名 C(12),教师号 C(3)用命令建立“cj”表,并建立与“xs”表和“kc”表间的永联系。CREATE TABLE cj(学号 C(2),课程号 C(2),成绩 N(3) CHECK 成绩100 ERROR 成绩要小于100 DEFAULT 0,;FOREIGN KEY 学号 TAG 学号 REFERENCE xs,;FOREIGN KEY 课程号 TAG 课程号 REFERENCE kc)4.4 定义功能 2.表的删除 删除表的命令格式为: DROP TABLE 比如: DROP
32、TABLE kcTable 注意:DROP TABLE直接在磁盘上删除表名所对应的.dbf文件,若表是数据库中的表,并且相应的数据库是当前数据库,则从数据库中删除了表;否则,虽然从磁盘上删除了.dbf文件,但是记录在数据库文件中的信息却没有删除,此后会出现错误提示。所以,如果用户相要删除数据库中的表时,最好应使数据库是当前打开的数据库,在数据库中进行操作 。4.4 定义功能3.表结构的修改1)格式1向表中添加新的字段和新的索引,其命令格式为:ALTER TABLE ADDCOLUMN,)NULL|NOT NULLCHECK ERROR DEFAULT ADD PRIMARY KEY TAG A
33、DD UNIQUE TAG 4.4 定义功能3.表结构的修改1)格式1说明:ALTER TABLE 修改指定的表;ADD COLUMN向表中添加新的字段;ADD PRIMARY KEY TAG 向表中添加主索引;ADD UNIQUE TAG 向表中添加候选索引;NULL|NOT NULL指定字段可以为空或不能为空。格式1的应用举例。为xs表增加一个“身份证”字段。ALTER TABLE xs ADD 身份证 C(15) 为身份证字段添加候选索引。ALTER TABLE xs ADD UNIQUE 身份证 TAG sfz4.4 定义功能3.表结构的修改2)格式2修改表的结构和字段名,其命令格式为
34、:ALTER TABLE ALTER COLUMN NULL|NOT NULLSET DEFAULT SET CHECK ERROR RENAME COLUMN TO 4.4 定义功能3.表结构的修改2)格式2说明:ALTERCOLUMN指出要修改列的字段名;SET DEFAULT 重新设置默认值;SET CHECK ERROR 重新设置字段的合法值及错误信息;RENAME COLUMN TO 修改字段名,指定要修改的字段名,指定修改后的字段名。格式2应用举例。修改身份证的宽度为18。ALTER TABLE xs ALTER 身份证 C(18)将xs表中的“姓名”字段改为“学生姓名”ALTER
35、 TABLE xs RENAME COLUMN 姓名 TO 学生姓名重新定义cj表中成绩字段的有效性规则为“成绩=100”,错误提示信息修改为“成绩要小于等于100” ALTER TABLE cj ALTER 成绩 SET CHECK 成绩=100 ERROR 成绩要小于等于1004.4 定义功能3.表结构的修改3)格式3删除表中的字段、索引及有效性规则、错误提示信息及默认值,其命令格式:ALTER TABLE DROP COLUMN DROP PRIMARY KEY TAG DROP UNIQUE TAG DROP CHECK说明:DROP COLUMN 删除指定的字段;DROP PRIMA
36、RY KEY 删除主索引;DROP UNIQUE TAG 删除候选索引;DROP CHECK 删除有效性规则。4.4 定义功能格式3应用举例。删除xs表中为身份证字段建立的候选索引ALTER TABLE xs DROP UNIQUE TAG sfz删除xs表中的身份证号字段。ALTER TABLE xs DROP 身份证删除cj表中成绩字段的有效性规则。ALTER TABLE cj ALTER 成绩 DROP CHECK上述3种对表进行修改的命令,其核心短语分别为:ADD、ALTER、DROP 04.4 定义功能 4.视图的定义 在Visual FoxPro中视图是一个定制的虚拟表,可以是本地
37、的、远程的或带参数的。视图可以引用一个或多个表,或者引用其他视图。视图是可更新的,它可引用远程表。 在关系数据库中,视图也称作窗口,是操作表的窗口,可以把它看作是从表中派生出来的虚表。它依赖于表,不能独立存在。数据库表或自由表都可以建立视图,在建立视图时必须先打开一个数据库,因为视图不是以独立文件形式保存的,而是在数据库设计器中存放的。 视图是根据表定义派生出来的,所以在涉及视图的时候,常把表称作基本表。视图是根据对表的查询定义的,命令格式是:CREATE VIEW 视图名 AS SELECT查询语句4.4 定义功能 4.视图的定义1) 视图的导出 从单个表导出视图比如 从学生表导出视图。CR
38、EATE VIEW xs_v AS SELECT * FROM 学生从多个表导出视图。比如 从学生表和成绩表中导出视图。CREATE VIEW xscj_v AS;SELECT 学生.学号,姓名,成绩 FROM 学生,成绩;WHERE 学生.学号=成绩.学号4.4 定义功能 4.视图的定义 2) 视图的删除 视图由于是从表派生而来的,所以不存在修改结构的问题,但是视图可以删除,其命令格式为:DROP VIEW 比如: 删除视图xscj_v。DROP VIEW xscj_v 3)关于视图的说明 在关系数据库中,视图始终不曾真正含有数据,它总是原来表的一个窗口。所以,虽然视图可以像表一样进行各种查询,但是插入、更新和删除操作在视图上却有一定限制。在一般情况下,当一个视图是由单个表导出时可以进行插入和更新操作,但不能进行删除操作;当视图是从多个表导出时,插入、更新手和删除操作都不允许进行。这种限制是很有必要的,它可以避免一些潜在问题的发生。本章小结 本章比较全面地介绍了关系数据库标准语言SQL,包括数据的查询、定义、操纵等功能,重要的知识点主要集中在简单计算查询、几个特殊运算符、分组与计算查询、插入和更新等。大家应对此部分内容重点学习,并多加练习。