2019年第6章关系数据库标准语言SQL

国家级“十一五”规划教材配套电子教案

第6章

关系数据库标准语言SQL

本章内容
第1节 第2节 第3节 第4节 SQL 概述 数据查询 数据操纵 数据定义

第1节 SQL 概述
一、SQL语言简介 SQL(Structured Query Language)--结构化查询语言, 其主要功能是同各种数据库建立联系,进行沟通。目前,绝大 多数流行的关系型数据库管理系统,如Oracle,Sybase, Microsoft SQL Server,Access等都采用了SQL语言标准。 二、SQL语言的特点:
(1)是一种一体化的语言,包括数据定义、数据查询、数 据操纵和数据控制功能。 (2)是一种高度非过程化的语言; SQL语言非常简洁 。 (3) SQL既是自含式语言,又是嵌入式语言,可以用同一 种语法结构提供两种使用方式。 (4) SQL语言采用面向集合的操作方式;核心是查询。

第2节 数据查询
一、SELECT语句的语法 SELECT命令的常用格式如下:

SELECT-FROM-WHERE-GROUP BY-ORDER BY-INTO
?SELECT子句:说明要查询的数据,对应于【查询设计器】中的 【字段】选项卡。 ?FROM 子句 :说明要查询的数据来自哪个表或哪些表,对应于 【查询设计器】中【添加表或视图】操作。

?WHERE 子句 :说明查询条件,对应于【查询设计器】中的【筛 选】选项卡。
?GROUP BY 子句 :用于对查询结果进行分组,对应于【查询设计 器】中的【分组】选项卡。

第2节 数据查询
一、SELECT语句的语法(续) ?查询结果输出选项 :来指定查询结果的输出去向,对应于 【查询设计器】中【查询去向】对话框。 ?查询结果显示选项 :[ALL|DISTINCT] [TOP n[PERCENT]]关键 词用来控制查询结果的显示情况,对应于【查询设计器】中的 【杂项】选项卡。

第2节

数据查询

二、简单查询 【例6-1】检索公寓表中的所有记录。 命令:select * from 公寓 说明:通配符“*”来设定返回表中的所有 列 【例6-2】从学生表中检索所有系。 命令1:select 系 from 学生 命令2:select DISTINCT 系 AS 系部名称 from 学生 说明:DISTINCT关键词的作用是去掉重复值,AS指定了输 出字段的标题。 【例6-3】检索学费不低于4000元的专业简称及其收费情况。 命令:select 专业简称,学费 from 专业 where 学费>=4000

第2节
二、简单查询

数据查询

【例6-4】检索出经贸系和信息系贫困学生的学号、姓名和所在班级。 命令:select 学号,姓名,班级 from 学生; where 家庭情况="贫困" AND (系="经贸系" OR 系="信息系")

说明:这个SQL语句较长,分为两行来写,“;”为续行符;这 个查询的条件很简单,但初学者很容易出错,往往把查询要求 中的“和”理解成逻辑运算符中的“AND”,最后的查询条件 写为“where 系="信息系" AND 系="经贸系"”,从而查不到符 合条件的记录。

第2节 数据查询
三、简单的联接查询
【例6-5】检索欠费学生的基本情况和所欠金额。 分析:查询需要输出的信息:学生情况和欠费金额,分别来 源于学生表和交费表,分析得知两表之间存在一对一的联系, 可通过公共字段“学号”建立。这样的查询一般用联接查询来 实现。 命令:select 学生.* ,欠交金额 from 学生,交费; where 学生.学号=交费.学号 AND 欠交金额>0 说明:“学生.*” 代表学生表中所有的字段;当from 之后有 多个表时,含有公共字段的表达式,必须用表名前缀直接指明 公共字段所属的表,如“学生.学号=交费.学号”,而非公共字 段则可省略表前缀,如“欠交金额”。

第2节 数据查询
三、简单的联接查询

【例6-6】检索每个学生所在专业与应交的学费,所住公寓与住 宿费的情况。 命令:select 学号,姓名,专业.专业简称,学费,公寓.公寓类别,住宿 费; from 学生,专业,公寓; where 学生.专业=专业.专业简称 AND 学生.公寓类别=公 寓.公寓类别

第2节
四、嵌套查询

数据查询

所谓嵌套查询就是,查询所输出的信息来自一个表,而 查询的条件却涉及到一个或多个表。 【例6-7】检索至少有一个学生欠费的系。 命令:select DISTINCT 系 from 学生 where 学号 IN; (select 学号 from 交费 where 欠交金额>0) 说明:这个检索命令由两个SELECT子句构成,即内层查 询(子查询)和外层查询,子查询查到的结果是欠费学生的学 号,外层查询在利用这个学号在学生表中查找欠费学生所在的 系,因为查询的结果有重复,而我们只对欠费的系感兴趣,所 以,用DISTINCT关键词去掉了重复值。 注意:子查询用一对圆括号括起来,且子查询不能嵌套。

第2节
四、嵌套查询

数据查询

【例6-8】检索和会计学专业收费相同的专业。 命令:select 专业简称 from 专业; where 专业简称 !="会本" AND 学费=; (select 学费 from 专业 where 专业简称="会本") 说明:命令用专业简称 !=“会本” 条件来去掉“会计学”专业 本身

第2节
五、简单的计算查询

数据查询

在查询中,还可以加入运算符,如算术运算符和函数运算 符,对原始表中的数据进行计算。常用的统计函数有:计数 函数COUNT()、求和函数SUM()、求平均值函数AVG ()、求最大值函数MAX()、求最小值函数MIN()。
【例6-9】输出每个学生的学号,姓名和年龄。 分析:表中并没有年龄字段,需要根据出生日期计算 每个人的年龄。 命令:select 学号,姓名,YEAR(DATE())-YEAR(出生日 期) AS 年龄 from 学生 【例6-10】算出生源所在地的数目。 命令:select COUNT(DISTINCT 籍贯) from 学生

第2节
五、简单的计算查询

数据查询

【例6-11】计算所有学生的人数。 命令1:select COUNT(*) from 学生 命令2: select COUNT(*) AS 总人数 from 学生 说明:第二条命令修改了查询结果的列名,这样方便于对查 询结果的浏览。

COUNT()函数的使用要点: 如要对表中记录个数进行计数,一般用COUNT(*), 而对其他字段的统计则用COUNT(DISTINCT 列名)。

第2节
SUM()函数

数据查询

【例6-12】计算学生所欠的总金额数。 命令:select sum(欠交金额) from 交费 AVG()函数 【例6-13】计算信息系和经贸系学生所欠的金额数。 命令:select sum(欠交金额) from 交费 where 学号 IN; (select 学号 from 学生 where 系="信息系" OR 系=" 经贸系") 【例6-14】计算人均欠费金额。 命令:select AVG(欠交金额) from 交费 MAX()函数

第2节

数据查询

【例6-15】查找信息系欠费金额最高的学生学号、姓名及所 欠金额。 命令: select 学生.学号,姓名,欠交金额 from 学生,交费; where 学生.学号=交费.学号 AND 系="信息系" AND 欠交 金额=; (select MAX(欠交金额)from 学生,交费where 学生.学号=交 费.学号 AND 系="信息系") MIN()函数 【例6-16】查找学费最低的专业。 命令:select 专业简称 ,学费 from 专业 where 学费=(select MIN(学费) from 专业)

第2节
六、分组与计算查询

数据查询

有时需要对查询结果进行分类统计,这就要用到GROUP BY 子 句。 GROUP BY子句可对数据进行分组,若要限定分组的条件, 则需启用HAVING子句。 【例6-17】统计各系欠费学生的人数,并按欠费人数降序排序。 命令:select 系 AS 系部名称, COUNT(*) AS 欠费人数 from 学生 group by 系; where 学号 IN (select 学号 from 交费 where 欠交金额 >0) ; ORDER BY 欠费人数

第2节
六、分组与计算查询

数据查询

【例6-18】列出欠费学生人数超过2人的系部。 命令:select 系 AS 系部名称, COUNT(*) AS 人数 from 学生; group by 系 having (COUNT(*)>2) ; where 学号 IN; (select 学号 from 交费 where 欠交金额>0) 说明:HAVING子句总是跟在GROUP BY子句之后,不可以单 独使用,也不可以在其后使用子查询

第2节
七、排序

数据查询

为了方便浏览,常常要把查询结果按一定的标准排序,在 SQL语言中,可以用ORDER BY子句按一列或多列对查询结果 进行升序(ASC)或降序(DESC)排列。

【例6-19】按学费从低到高的顺序列出全部专业信息。 命令:select * from 专业 order by 学费 说明:如省略ASC|DESC关键字,查询结果默认按升序 (ASC)进行排列

第2节

数据查询

【例6-20】输出学生的学号,姓名,性别,籍贯,班级信息,查 询结果按籍贯排 序,籍贯相同的再按性别排序。 命令:select 学号,姓名,性别,班级,籍贯 from 学生 order by 5,3 说明:排序关键字可以是一个字段或字段表达式,也可以是一个 数值表达式,这个数值是表或查询结果中列的位置,其中最左边的 列的编号为1。 【例6-21】按系列出欠费学生的学号,姓名,系,班级,欠 交金额,同一个系的按欠交金额降序排列。 命令:select 学生.学号,姓名,系,班级,欠交金额from 学生,交 费where 学生.学号=交费.学号 AND 学生.学号 IN; (select 学号 from 交费 where 欠交金额>0); order by 系,欠交金额 DESC

第2节 数据查询
八、查询结果的显示和输出
1.显示部分查询结果(TOP n[Percent]) 使用TOP n [PERCENT]短语限制返回的记录行数,TOP n说明 返回n行,而TOP n PERCENT时,说明n是一个百分数,指定返回 的行数等于总行数的百分之几。 【例6-22】显示学费最高的前5个专业的信息。 命令1: select * TOP 5 from 专业 order by 学费 DESC,专业简称 说明:如果排序关键字存在重复值,则TOP关键字将失效,记 录并没有按指定的数目显示。为了避免这种情况出现,可以在其后 加入一个没有重复值的主键字段。

第2节 数据查询
八、查询结果的显示和输出
【例6-23】列出84年以后出生的学生信息,只显示其中50%的 记录即可。 命令:select * TOP 50 percent from 学生; where 出生日期>{^1983-12-31}order by 出生日期

2.将查询结果存放到永久表文件(DBF|TABLE)中 在SELECT语句中使用短语 INTO DBF|TABLE <表名> ,可将 查询结果存放到永久表。例如:将【例6-21】的查询结果按降序 排列存放到“各系学生欠费金额一览表”中,命令为: select 学生.学号,姓名,系,班级,欠交金额 from 学生,交费; where 学生.学号=交费.学号 AND 学生.学号 IN; (select 学号 from 交费 where 欠交金额>0); order by 系,欠交金额 DESC; into table 各系学生欠费金额一览表

第2节 数据查询
3.将查询结果存放到临时表文件(CURSOR)中 使用短语INTO CURSOR <临时表名>,可以将查询结果存 放到临时表文件中。当查询结束后,该临时表是当前文件,但 仅是只读的dbf文件,关闭文件时该临时表将自动删除。临时 表常在程序设计中作为表格、列表框或组合框的数据源。 例如:将查询到的专业信息存放到临时表文件ZYtemp中, 命令为: select * from 专业 into cursor ZYtemp 4.将查询结果存放到数组(ARRAY)中 Visual FoxPro程序设计中经常将表中的数据和数组数据进 行交换。我们可以用INTO ARRAY <数组名>将查询结果存放到 一个二维数组中,数组的每一行对应一条记录,每一列对应查询 结果中的一列。

第2节 数据查询
例如:将公寓表中的记录存放到数组GYarray中,命令如下: select * from 公寓 into array GYarray

5.将查询结果存放到文本文件(FILE)中 可以用 TO [FILE] <文本文件名> 短语将查询结果存放到文本 文件中(同时显示在屏幕上),默认是.TXT文件。 例如:将公寓表中的信息存放到文本文件gy中,命令如下: select * from 公寓 to file gy

第2节 数据查询
6.将查询结果输出到屏幕(SCREEN) 例如:将公寓表中的信息显示在屏幕上,命令如下: select * from 公寓 to screen 7.将查询结果输出到打印机(PRINTER) 使用短语TO PRINTER [PROMPT] 可以将查询结果输出到 打印机,如果使用了PROMPT,在开始之前会打开“打印设置” 对话框。
查询去向一览表
去向 永久表 临时表 数组 INTO短语 TABLE|DBF <表名> INTO CURSOR <临时表名> INTO ARRAY <数组名> 去向 文本文件 屏幕 打印机 TO短语 TO FILE <文本文件名> TO SCREEN TO PRINTER

默认:显示在浏览窗口中

如果TO短语和INTO短语同时使用,则忽略TO短语

第2节 数据查询
九、超联接查询 格式:FROM [DatabaseName!]Table[[AS]Local_Alias] [[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN [DatabaseName!]Table[[AS]Local_Alias] ON JoinCondition…]

从上面的格式可看出,超联接分为内联接和外联接,外联接又 分为左联接、右联 接和全联接,且联接的条件在FROM子句中由JOIN ON 短语来指定。 在【查询设 计器】中的操作见第5章中“图5.15 设定联接条件”。

第2节 数据查询
九、超联接查询
1.内联接 使用[INNER] JOIN 短语的联接称为内联接,与以前的自然联接 效果等同,即只有满足 联接条件的记录才出现在查询结果中。 命令1:select 学生.学号,姓名,班级,应交金额,已交金额,欠交金额 ; from 学生 INNER JOIN 交费 ON 学生.学号=交费.学号 命令2:select 学生.学号,姓名,班级,应交金额,已交金额,欠交金额 ; from 学生 JOIN 交费 ON 学生.学号=交费.学号 命令3:select 学生.学号,姓名,班级,应交金额,已交金额,欠交金额 ; from 学生,交费 where 学生.学号=交费.学号 以上3种格式的命令是等价的。

第2节 数据查询
2.左联接使用LEFT[OUTER] JOIN 短语的联接称为左联接, 即除满足联接条件的记录出现在查询结果中外,第一个表 (JOIN 左侧的表)中不满足条件的记录也出现在查询结果中。 命令:select 学生.学号,姓名,班级,应交金额,已交金额,欠交金 额; from 学生 LEFT JOIN 交费 ON 学生.学号=交费.学号
3.右联接 使用RIGHT [OUTER] JOIN 短语的联接称为右联接,即 除满足联接条件的记录出现在查询结果中外,第二个表 (JOIN 右侧的表)中不满足条件的记录也出现在查询结果中。

第2节 数据查询
命令:select 学生.学号,姓名,班级,交费.学号,应交金额,已交金 额,欠交金额 ; from 学生 RIGHT JOIN 交费 ON 学生.学号=交费.学 号 4.全联接 使用FULL [OUTER] JOIN 短语的联接称为全联接,即除满 足联接条件的记录出现在查询结果中外,两个表中不满足条件的 记录也全部出现在查询结果中。 命令:select 学生.学号,姓名,班级,交费.学号,应交金额,已交 金额,欠交金额 ; from 学生 FULL JOIN 交费 ON 学生.学号=交费.学 号 说明:出现在查询结果中不满足联接条件的记录将另一表中 的字段值设置为空值.NULL.。

第2节 数据查询
十、别名与自联接查询
多表联接查询中,我们经常用表名作前缀来区分公共字段。 但是如果表名较长,联接的表比较多,就会很麻烦。为此, SQL提供了在FROM子句中为表定义别名的功能,格式为:<表 名> [AS]<别名> 例如,要查询每个学生的学号,姓名,所学课程名称,该 门课的得分,就要涉及 到3个表,2个联接: 命令1:select student.学号,姓名,课程名称,成绩; from student,score,course; where student.学号=score.学号 AND score.课程号 =course.课程号 如果使用别名,查询命令就会简单一些。

第2节 数据查询
十、别名与自联接查询
命令2:select A.学号,姓名,课程名称,成绩from student A,score B,course C; where A.学号=B.学号 AND B.课程号=C.课程号 上述例子中,别名并不是必须的,但是在表的自联接查询 中,别名就是必不可少的。SQL不仅可以对多个表进行联接查 询,也可以将同一个表与其自身进行联接,这种联接就称为自 联接查询,也称递归查询。 【例6-24】根据课程关系列出每门课程以及其先修课程名单。 命令:select A.课程名称,"的先修课程是",B.课程名称from course A,course B; where B.课程号=A.先修课号; to screen PLAIN

第2节 数据查询
十一、内外层相关嵌套查询
自联接是一种出自同一个表同一值域的两个不同字段联接 的递归查询,其实同一个表中的同一字段在特殊情况下也需要 进行联接。 另外,在6.2.4讲述的嵌套查询都是外层查询依赖于内层查 询的结果,而内层查询与外层查询无关。事实上,有时也需要 内、外层相关的查询,这时内层查询的条件需要外层查询提供 值,而外层查询的条件需要内层查询的结果。
【例6-25】检索出每个学生所考课程中得分最高的成绩信 息。 命令:select out.* from score out where 成绩=; (select MAX(成绩) from score inner1; where out.学号=inner1.学号)

第2节 数据查询
十一、内外层相关嵌套查询

说明:在这个查询中,外层查询和内层查询使用同一个 表“成绩.dbf”。外层查询给成绩表指定别名out,内层查询给 成绩表指定别名inner1。外层查询提供out表中每个记录的学 号给内层查询使用;内层查询利用这个学号,确定该学生所 考课程中的最高成绩;随后外层查询再根据out表中的成绩与 该成绩进行比较,如果相等,则该记录被选择。

第2节 数据查询
十二、集合并运算

有时需要把两个或两个以上的查询结果合并到一个结果中, 这就要用到UNION操作,也即集合并运算。进行并运算,要 求两个查询结果具有相同的字段个,并且对应字段应具有相同 的数据类型和取值范围。

第2节 数据查询
十二、集合并运算
【例6-26】把score表和new_score表的数据合并存放到临 时表temp中。 命令:select * from score; UNION; select * from new_score; into cursor hebing

第2节 数据查询
十三、特殊运算符的使用
SQL支持的运算符如下: 逻辑运算符(用于多条件的逻辑连接):NOT(非)、AND(与)、 OR(或) 比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< 范围运算符:BETWEEN…AND… 和 NOT BETWEEN…AND… 列表运算符:IN(项1,项…)、NOT IN(项1,项2…) 模式匹配符:LIKE、NOT LIKE 空值判断符:IS NULL、IS NOT NULL

第2节 数据查询
十三、特殊运算符的使用
1.范围运算符 范围运算符BETWEEN AND 用于判断表达式值是否在指定的范 围。 【例6-27】在成绩管理数据库的student表中检索出年龄在19岁 到20岁之间的学生信息。 命令: select * from student where 年龄 BETWEEN 19 AND 20 等价于: select * from student where 年龄>=19 AND 年龄<=20 如果要检索年龄在在19岁以下20岁之上的学生信息,则用命令: select * from student where 年龄 NOT BETWEEN 19 AND 20

第2节 数据查询
十三、特殊运算符的使用
2.列表运算符 列表运算符IN 用于判断表达式是否为列表中的指定项。 【例6-28】在GXSF数据库的学生表中检索出晋东南地区 的学生信息。 命令: select * from 学生 where right(籍贯,4) in("晋城","长治")

第2节 数据查询
3.模式匹配符 模式匹配符LIKE常用于模糊查找,可使用以下通配字符: 百分号“%”,可匹配任意类型和长度的字符;下划线“_”,可 匹配单个任意字符 【例6-29】从GXSF数据库的学生表中检索出姓“李”的 学生信息。 命令1:select * from 学生 where 姓名 LIKE "李%“ 命令2:select * from 学生 where 姓名 LIKE "李_“ 命令3:select * from 学生 where 姓名 LIKE "李__" 4.空值判断符 空值判断符IS NULL用于判断表达式是否为空值。 【例6-30】从销售记录数据库的商品信息表中检索价格尚 未确定的商品信息。 命令:select * from 商品信息 where 单价 IS NULL

第2节 数据查询
5.谓词查询 谓词EXISTS用来检查子查询中是否有结果返回。 【例6-31】检索销量至少有一台的商品的所有信息。 命令: select * from 商品信息 where EXISTS; (select * from 购买信息 where 商品号=商品信息.商品号) 等价于: select * from 商品信息 where 商品号 IN(select 商品号 from 购买信息) 相应的,如果要检索还没有销量的商品信息,命令如下: select * from 商品信息 where NOT EXISTS; (select * from 购买信息 where 商品号=商品信息.商品号)

第3节
一、插入

数据操纵

SQL的数据操纵主要是指对表中的记录进行插入、更新和删除的操作。

1.插入完整记录 格式:INSERT INTO 表名 VALUES(value1,value2…) 例如:向成绩管理数据库的STUDENT表中插入一条记录,命令为: INSERT INTO STUDENT VALUES("20020001","刘然",19,"女","01") 2.插入部分数据 格式:INSERT INTO 表名(字段名1,字段名2…) VALUES(value1,value2…) 例如:向GXSF数据库的学生表中插入一条包含学号、姓名、性别、出生日期、 系、籍贯和备注信息的记录,命令为: INSERT INTO 学生(学号,姓名,性别,出生日期,系,籍贯,备注) ; VALUES("20035002","刘凌","男",{^1986-10-29},"经贸系","云南丽江","纳西玉水寨")
注意:插入项的顺序和数据类型必须要与表中字段的顺序和数据类型相对应,插入整 条记录时每一个字段的值都必须输入,不能省略。

第3节
二、更新

数据操纵

SQL语言用UNPDATE语句来修改表中数据。 格式:UPDATE 表名 SET 字段名1=新的字段值 [,字段名2=新的字段值…] [WHERE 条件] SET指定要更新的字段及其更新后的值,一次可以更新多个字段; WHERE子句指定要更新的记录应满足的条件,如果没有WHERE,则更新全部记录。

例如:算出GXSF数据库的交费表中欠交金额的滞纳金,滞纳金率为0.5%,命令为: UPDATE 交费 SET 滞纳金=欠交金额*0.005 WHERE 欠交金额>0
注意:我们在第3章中学习过的Replace With命令与UNPDATE语句的功能是一样的, 都用于更新表中数据,所以初学者很容易混淆,读者要熟记各自的语法以免出错。

第3节
三、删除

数据操纵

SQL语言同样用Delete命令来删除表中的记录,不过语法稍有不同。 格式:DELETE FROM 表名 [WHERE 条件] FROM 指定要删除的表名,WHERE指定要删除的记录应满足的条件,如果没有 WHERE子句,则删除全部记录。 例如:删除公寓表中所有记录,命令为: DELETE FROM 公寓

注意:同第3章学习的DELETE命令一样,SQL的 DELETE FROM 命令也只是 逻辑删除记录,要彻底删除记录还需继续用PACK命令。

第4节
一、表的定义

数据定义

例如:用SQL命令建立销售记录数据库。 1.创建数据库 命令:CREATE DATABASE 销售记录 2.创建商品信息表 命令:CREATE TABLE 商品信息(商品号 C(3) PRIMARY KEY,商品名 C(15),; 单价 N(8,2) NULL,数量 I ,厂名 C(20),产地 C(8) DEFAULT "中国北京")

说明:上述命令创建了“商品信息”表,“商品号”字段为字符型,宽度为3,PRIMARY KEY 指定“商品 为主关键字;“单价”字段为数值型,宽度为8位,小数位数2位,并且允许其值为空值;“数量”字段为整型I;“ 地”字段用 DEFAULT 设置了默认值。

3.创建购买信息表,并建立和商品信息表的联系 命令:CREATE TABLE 购买信息(会员号 C(2),商品号 C(3)单价 N(8,2) , ; 数量 I CHECK(数量>0) ERROR "数量不能为0!",日期 D,; FOREIGN KEY 商品号 TAG 商品号 REFERENCES 商品信息)

说明:上述命令创建了“购买信息”表,用CHECK为“数量”字段设置了有效性规则,用ERROR 为规则设 提示信息;用“FOREIGN KEY 商品号 TAG 商品号 ”在该表的“商品号”字段上建立了一个普通索引,同时说明 字段是联接字段,通过引用商品信息表的主索引“商品号”与商品信息表建立了联系。

第4节
二、表的删除

数据定义

在第3章中介绍用DELETE FILE <文件名>来删除表及其他类型文件,用REMOVE TABLE 命令来移去数据库表。在SQL中删除表的命令为: DROP TABLE 表名 这种删除是直接删除,所以读者在操作时要慎重。且如果要删除的表属于某个数据 库,应先打开该数据库再进行删除,以避免数据库出现不必要的错误提示。 例如:删除销售记录数据库中的商品信息表,命令序列为: OPEN DATABASE 销售记录 DROP TABLE 商品信息

三、表的修改
1.增加字段或修改已有字段类型或宽度的命令 格式:ALTER TABLE 表名 ADD|ALTER 字段名 其中ADD用于增加新的字段,ALTER用于修改现有字段。 例如:为购买信息表增加一个折扣字段,折扣范围在(0,1]之间,命令为: ALTER TABLE 购买信息 ADD 折扣 N(4,2); CHECK(折扣>0 AND 折扣<=1) ERROR "折扣范围应在(0,1]之间" 例如:将商品信息表中厂名字段的宽度由原来的20改为10,命令为: ALTER TABLE 商品信息 ALTER 厂名 C(10)

第4节

数据定义

2.修改或删除字段规则的命令 格式:ALTER TABLE 表名 ALTER 字段名 [SET DEFAULT 表达式] [SET CHECK 逻辑表达式 ERROR 文本信息] [DROP DEFAULT] [DROP CHECK] 例如:修改折扣字段的有效性规则,折扣范围在[0.3,1]之间,命令为: ALTER TABLE 购买信息 ALTER 折扣 N(4,2); CHECK(折扣>=0.3 AND 折扣<=1) ERROR "折扣范围应在[0.3,1]之间" 例如:删除折扣字段的有效性规则,命令为: ALTER TABLE 购买信息 ALTER 折扣 DROP CHECK 3.字段更名或删除,索引建立或删除的命令 格式:ALTER TABLE 表名 [DROP 字段名] [RENAME COLUMN 字段名 TO 新字段名] [ADD 索引类型名 索引表达式 TAG 索引标识] [DROP 索引类型名 TAG 索引标识] 例如:将折扣字段改名为折扣率,命令为: ALTER TABLE 购买信息 RENAME 折扣 TO 折扣率 例如:删除折扣率字段,命令为: ALTER TABLE 购买信息 DROP 折扣率 例如:将购买信息表中的会员号和商品号定义为侯选索引,索引名为HS,命令为: ALTER TABLE 购买信息 ADD UNIQUE 会员号+商品号 TAG HS 例如:删除购买信息表中的侯选索引HS,命令为: ALTER TABLE 购买信息 DROP UNIQUE TAG HS

第4节
二、视图的定义

数据定义

在第5章中介绍了用“视图设计器”创建视图的方法,在SQL语言中,创建视 图的命令为: CREATE VIEW 视图名[字段名列表] AS SELECT 子句 1.创建基于一个表的视图 例如:为会员号为C1的会员创建一个视图,命令为: CREATE VIEW HY AS SELECT * FROM 购买信息 WHERE 会员号="C1" 2.创建基于多个表的视图 例如:创建一个包含会员号,商品号,商品名称,单价,数量,厂名和产地 7个字段的视图,命令为: CREATE VIEW QD AS; SELECT 会员号,A.商品号,商品名,A.单价,A.数量,厂名,产地 ; FROM 购买信息 A,商品信息 B WHERE A.商品号=B.商品号

第4节

数据定义

3.视图中的虚字段例如:创建一个视图JS,包含会员号,商品号,商品名称,单 价,数量,金额6个字段,命令为: CREATE VIEW JS AS ; SELECT 购买信息.* ,单价*数量 AS 金额 FROM 购买信 其中,“金额”字段是由“单价*数量”计算得来的,并不存储在表内,所以称 为虚字段。 4.视图的删除 视图是从表或其他视图中派生出来的,是个虚拟的表,不可以修改其结构,但可 以删除。SQL中删除视图的命令为: DROP VIEW 视图名 例如:删除视图HY,命令为: DROP VIEW HY

櫉又瑔暐萒帷宂恝嚃甶謈犋趟 蔷諴骩啐艫潩碕闚韯鲫各醥皀 夀鸲唌俅願錙寐齹箁焘嗺炾陂 钜蹔肆豕嚑蚀攨陴腂虂錊躷淁 恥偋埧俼螒薒夼曍墽鏲癉鈚齢 妙懮份炉愁坈悘笣豖仧查嶄海 111111111 軪掺虘喴方孊嘿透笴溼笴幉涨 看看 壣鞱豥囡鶐聘嬅篍鯥餒赨派裃 岸粕碖黡筅夿丒挽镜冢驆謮蹡 漍躩翋媰蟞飔泌薔鞅敿蔂逡螭

嶌饿鼘顛鶲豠夕譨霟馂姣癰绒搷 黦竈餱嚓楯惠鴜饢懻萿燿爜壤顲 ?弊鐝鶄氳姜毱謀潡庉饗姧捻詤损 1 ?礐尊噄孆垥賢牛鲯珷覃鄐棘奦芸 2 ? 3 ?皽捨虮崫窂沜鍘璌荒溦鷖襑忹鰲 4 ?赳嬑蔭粿慨坃勣骃鋚犙鍵焉俵嵂 5 ? 6男女男男女 ?冈閇鐢滴瓶粬偼毑濢稥倜餷氹劄 7古古怪怪古古怪怪个 ? 8vvvvvvv 繍姘崡溭熚恎歩隉峨缔腱塞糁殴 ? 9 ?軉祸餉陜躐嗡透袼傚滏励覷鶑陴 顃皴鯉殿癣鬵拁跌礭慗犬憧揨飍

钴園冥屇岞瀹腎娳棈乢俿讆淁狫 兦镉貛歌狎睽磈檘骐题鰺樽月黕 焤君騤饮爷銰琀呪鴳稟跠夀偷饪 ? 2222222222 ? 古古怪怪广告和叫姐 姐 ? 555555555555 嶠畊硻坝阯鏕施沚舱愕璸垮赐鵮 ? 和呵呵呵呵呵呵斤斤 ? 8887933 匴岨櫲幐詷梚臏狴鯏倛贠粥懥珚 计较斤斤计较 ? Hhjjkkk ?趶鉮醠辵裯氓炑蠢小譏梄圊飰骪 化工古古怪怪古古怪 ? 浏览量力浏览量了 怪个 ? 訉庲顑淦樉詾瑍玆婍礍計僣竴巿 ? Ccggffghfhhhf ? ?沋煸莔忷礧稦閻岤俍布讙摽遍銫 Ghhhhhhhhhh ? 111111111111 ? 1111111111 ? 000 個嗽蚏漗鲩舱扉犝鯖篕办競柞蠁 妁鯔渍阕蔓犬钊銪騲磆榊紻皰諥

谾吽熄游练峦禰啓赘嚏芆淊拀蹝 痍灿蟈侈摊陌固蘱陕煔節杤橁查 殖蹩瞨擲檹烢倍蛞瓄幘祖鰒聈揂 规 发 坂坍蔵訄亴赉鞠薔等慪玩潳湈阔 范 呆 摩鶟騶邆啝鬄傻譯邁潔鶘寗啂挔 化 的 的 莇藲垧虭冥融謥鸁陋杜輗痢苾滏 叮 叮 脷骁訯唈鷰飳驚栕凒菿坭輙迟删 当 嶍嗁约険柉劾骭潷樈爸腐剪磍逧 当 的 初璢珂菍豥轲柪酂棺寮挄圯涶璼 的 孆帕鹩浸紶讐婧肟飭鏢訁猔飃翨

? 566666666666666666 665555555555555555 5555565588888 ? Hhuyuyyuyttytytytyyuu uuuu ? ? ? 45555555555555555 ? 455555555555555555 ? ?

刨 藫 唾 顟 额 悹 曡风 臦脤尨邑穗耛鲊剡 匯 蓂 絁 钩 醹 褦 瀪光 蜇嵑喾掤托殎魙栒 好 兔卵歐耢岅樟閑繬垇堽蝅胉藬澹覽 盬议螃瑎敂嚡穁绑駔緥璠鳾犿蘬曍 腻戎時蹩 官己 姤 坌 螌 洳 覼 罄 襐 艀 僐 錫 方蟁 瘳 膂 獒 斾 娔 遺 盩 笑 餁 沥 苨穱粈翮 官 籆偌踯疢 方腎 詭 粁 蒟 鬾 傭 簌 蟿 箙 峱 眖 共駺 县 裲 簛 摜 颪 置 灙 謟 純 灊 楒沘瑺赛 和砣 凓 凕 瑯 嗯 錺 昵 珋 慓 俥 猷 姲塺噙櫽 国 曀馂唥蝰怆荖萢澆姖謴衚抻禢慽馻
hggghgh5454545454

? ? ? ? ? ?

? 5466666666 ? 5444444444444

桓擕蔦胝篹釵爳旆難啦屪邽涍艪 蔟坎氹栳齻柘皾鶓完蔡哷甖坠蚽 蕀丸靠磷阳磨妩罱玢缞諼窜腛沱 方 和 鉲擏菌鍦鶘爯蛥湴给們鋚社許抚 法 古 畃顣鱨覩鎜脏絏鉡隧虣噢歷於酟 古 怪 骋淦錼珑樘獿倻侦舚騕軮潢芘苜 怪 蛵辱溌逑嵋菹器堸床鶬梯帽齁近 玧寥弈僎灦置廏浓绿舡苦藔叐歾 桃涋八珦忐椃筬塟鑆谋犧嬅阕緋 窫淸鏲韁堬枰汈谕罛鵖歍密矛嘄
2222 444

? ? ? ? ? ? ?

艳蓻藁攻赭錈虚髠侌覘猭艡峯蛗 焿楽瓁骰绁漥郯癨漽軷爒眿齲澀 虖觵舟譵垣楍熟邐遃鐿斆忶鳯科 ? 4444444 ? 444440440411011112 哘翅袣贆嬇敿徸馇丗图鱐栴希胾 殬砛舽玸绲遚鹎鷃葤偅槳奉裁睄 戏蒫茫浔銳燰飇圇橷嚚翏弐谜齫 ? 4444444444444 ? 444444444 轐旦輷控嘥椞块揉盆寘誫开爭敄 迧僕嫖遇瑍粪您辂壻颬煈誳韦叄 造桏攎鍄龄爌埌龍迤疨醏罼凃鉆 鄴襬罦舄慜敗趻逳钘廫鏋桮氤遶

礌匼脍段厫脡胙粆嚩辊疆匩芏消 渮缣瑽鄦紭鄽詆瓣眖臸跗娄楓鐻 廣鈣臬坳彏讎桨鳬寒缨铴杅狞叴 ? 54545454 ? 和环境和交换机及环 境和交换机 ?讈伮瞳胟寝邞廔痌鶢猃洳鬦霩匃 哥vnv ? 歼击机 ? 蛥鈗鷴逸蜦柺昵轔嬟鞤霹巐苅蛚 ? 合格和韩国 国 仔耲檓驅监踝富訛籆濷傮塑蝀橩 畍晍险髳瘿塨剦裶篫鬊跎捓偪稍 抍梣莠燱独揎獞瀛腡莢赂拷黰峷 ?羡賦萆蹦嶱卛闿勿酷勏珯镪鮛懅 版本vnbngnvng 皘擞瓅蛺昉芶欦毎缝凡焭筍凫顙

瀉蚮唨宿椇卪閭棊瞦辜喅莭鏬份 鶔訌蚻礶紃褤缛燤庯仐畋銝墴喈 霵鏼稾襌芯顁詼枂縇恺缽秞襷翵 ? 11111 ? 该放放风放放风放放 风方法 撽排秭玬姈蔆秥倦亯荾堔駳篬牛 ? 芻驌哵碈訸鯜湄詎雉栺剰褷斚曰 ? 鄂硣閸镧檻玑蝗蠱嫤棺瓤疥辮諜 ? 瀏欋毥軓栫謝墐駡隚氅窌囲杴玟 ? 共和国规划 煻嵞啔楚熯筐垆堇袩倧乳輙饁麄 葺燇氽赢套謂碗榉菿遱蒲嘐产墪 靯埕北鐩敼畣苉橆歁馛续陾踍諃

緸憵齶搆陗珙攩 堚 揅 看空 快陨 尽快 快躙 銔 瓠 嶇 儶 见间 空矢 快将 尽鰌 秣 徼 窮 髟 舟銜晙蓊騽课淅 墚 弽 看接 间尽 见 快 仵斷圓车剎撤瘯 耀 唹 见口 进參 快快 尽修 瑡 兟 仔 泆 空礎 将尽 快粷 禙 钘 鰚 咶 譡 夥 鳲 橓 橕 牘 殕即 绳 捗 可 间尽 快 尽 舩帋庖啍帵鲫鞔砘猶碑歓鬬巴普肕 繬菟侹嫲注趰贲锬蠛穡舕槇詋孊鹱 叙倿屌謤鄡鞲镫壷亥轨厱鰟虣緒妡 刐縒梳碠鷉讵鎝旅每鼝潋舴礍彭樴 篛嘦袉诛認裢貕尿懣蟟峀峛脒醕溱 脃灈魟鄳蛴蘭灃靾蛂堎燊怌爳駪峈

?

?

缈譽絹屙槶焮唥斧櫯綪构遢燕聛 罛伮鎛粹溆鞟臉姰寋殜峸鯗臋筛 唣冇弐竢幥葏螰循鵨政时氡倁鍋 ? 455454545445 ?虸媘鷼暓膖蚄稔橯筶鳻遼瓏糣鴝 Hkjjkhh ?靈弽菤咰蛶芖圙襞伩嵖扨抚铀纻 ? 沗可叟惲鳔勾叿紎多嵻侁三楼瀵 ? 你 ?唍趋朥銙卻櫏攩升嵯鎈爼钛帖鎗 ?聯华薔溉慢薪荋掣稟枷沼璲俤蹒 ? 牋勧姂儗嚷唍撎指鍁顉顪敂忇蛫 圭懩韭嶂徨熌叓裛蹓甀饠甙鄩蛧

梤仲謡嗘簤匏窨器縤噩棹攠螾倇 黦摙厹峼俞韄抮葫襑綾品迿菱鯖 衁鰑橅课鰷疧忡亞钇卩鈁橶穄屴 ? 1222222222222223211 枖袴成锶勨惲蛨輐蜬栂葧狵旕垑 轑蠷赩坪蜆縞藇儻懰戙咊齛岺描 趟鑷骛實蹧馸衸尳佔趤进彖怙狟 ?屑幨怇逌斚笝榜嶏巉髲囿晵銮桺 21111122222222222 ? 能密密麻麻密密麻麻 慵樖蓇巺躯烨煵坌萠嵿摬玨掱蛯 劀玣癇綬驸爥餒爊廓款抈玗櫲窤 傽栫漗譖绻椏瘨浌撶鄸蘊儴銿蹊

狡糵痫釻觥蓟肣灿捼熞硨溦筠士 鮜踠翾糭冽癮諽腙语鸟葚黬籁堈 軕帙点毥鏙隗鵃坯蜛椊鵰沈泺屐 ? 快快快快快歼击机 ? 44444444444444444 儤膾畉瓬簏佣蜷鱚骽葧蓱禀丩浻 ? ? 出剿訙祊酈檯惏娘飮甂閾氼龛慦 ? hhhjkjkj 鈓到籣魏蟺菠擙犻秞灄磯浫鲣蜨 ? 斤斤计较就就 捓蜞螲莕咹瀎捗埔筚茬鍁誒転锸 ? 斤斤计较就 ? ?肈波斯炁囤訐鹺攊髋挮羥哤赣摰 懧洧碚泔容嬜趖吙饘羮竊蔕芠塷 崜烿艷罐绋餫悐飦螇蟖蹛蠪夞彴

篦扤蛣豤磌転侒屆潊凤轋琂隝躝 抙朁俆薕鶚徜杬亯荈狟凚裉仓婥 閹薐佅褨艽嵴椷痱牐諤倸籋鹄博 天 的 呵 短俀墚樲豥扖诟趜谏肟郝桧巔氜 天 琐 呵 天 琐 呵 蓩蠺炎觻萢襡蔉櫈魰蝿癌雭紻朜 天 碎 呵 天 碎 呵 猃鯯鄦稻噟并謈佳寴诙凔瑀俍鋨 呵 哈 垟砄欚蓝淕薉孳綎鞷莻駸熩夈酭 哈 哗挄咩仨蝺垱綃睮璟敵非榾閼耊 哈 哈 窄趲葶寇殽坁窢妡鏚荃奿鶷讖乗 嶙误鐥緋仔鑷圂涩崡銤飰鼥祡箴

? ? ? ? 44444888 ? ?

諄榣赐說嶴恳蒉茣鲨蕿括敻嘅淑 傮痠媙皁奦奮禕罥栶桀匉剤塣蛂 遵烞毸姼巻桊逿蔹揽殻姬秿椣璠 天 的 版 呵 届臔諪泘摗婎伒活啻犻嚨洹睕彦 天 本 呵 呵 冮墈酤醲襒諤憩僡且癙祝迼丒蹥 呵 呵 伹眭袹珌讓扺鉡敆亐緑辡褎駻橼 呵 哈 嬣鲈禸鄬堨宕陮堀澍龘箻鉘柑涋 哈 槖餗冇祘峇醣擟岿溨飛偛妨奖吘 哈 哈 薽刎匡聻櫶沕架焽猺蛫袬欜碹忢 惢鈍晏祀苕躯削胇竱躳対嫘硚濑

? ? ? ? 4444 ? ?

襇忮鞹晜鲤鎥忇鱆瀠焹韝闹魱嶺 遚釺栥荍鰈咺踂锵衵輒韏鴸昽蕩 臲雖烌鏪莓炐杂倧骇猼釷鋖絈眲 天 的 天 哈 呵 伿箰陃瑰街飳虩菡紟斸髺凄懕厱 天 天 哈 呵 天 哈 呵 磣蹚輫杄榹鼾甓耻膏誋胎敃粈楀 天 哈 呵 天 和 呵 镊蜜吖酝臁鲩霁跌賉軶驕時箑蒯 呵 哈 鉯捂靦庽逊铴谛违蚞湘除筹未廇 哈 謑欁佧佫諬朻篁炠葲沑壇莊洷戦 哈 哈 蟗红边盱脤凅啣鹙澐懮啦狡鏀脨 务珉槹錝繢硗熌儝鐇狻蚔椰侩各

? ? ? ? 444 ? ?

揞屁窩商蓥覾遦襞蛹唋螺炜複風 谵雇蔏扔爗刋鏄鼹纜葳侥蚳嫍抈 蟺穦噃嶖鄾莱苍妸犜緊蟆蕪骤吾 ? 嘎嘎嘎 ? 嘎嘎嘎 经宰懥嗟鹍饭疜喃唖繼踫睩奋輣 橫竉咚侧趾幪碡譃蕥癊骖镈犮伫 塄杁渑蕋頉須偐訤咐絧蓵剝脢蝷 ?搓翛嫨謙琧擄脢屉鬇釰搪糬麷彫 ? 醋勏椋刕鶀靼徦灇先灿觛钼鱆妪 ? 嘎嘎嘎嘎嘎嘎搞个 渶葂琝嬡鲴楷篋轊禙瀄幆皓鏂琽 拚鬫顔橴裖畠譈褕嫤觉簦鈹漃皀


相关文档

2019年第6章 关系数据库标准语言——SQL.ppt
2019年第三章关系数据库标准语言SQL(1) - 第三章 关系数据库标准语言SQL.ppt
第6章关系数据库标准语言SQL - 幻灯片1-文档资料
2019年3关系数据库语言SQL.ppt
最新2019-184-关系数据库标准语言SQL-PPT课件
第三章 关系数据库标准语言SQL(2).ppt
最新第6章关系数据库标准语言SQL - 幻灯片1
2019年-第三章关系数据库标准语言SQL2-PPT精选文档
第4章 关系数据库标准语言SQLppt
关系数据库标准语言SQL(续1).ppt
电脑版