第五章 结构化查询语言SQL_第1页
第五章 结构化查询语言SQL_第2页
第五章 结构化查询语言SQL_第3页
第五章 结构化查询语言SQL_第4页
第五章 结构化查询语言SQL_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1、5.1 SOL简介5.2 数据查询5.3 数据操作5.4 数据定义SQL是Sturctured Query Language(结构化查询语言)的缩写。SQL包含数据查询、数据定义、数据操纵和数据控制等功能。其中查询是SQL语言的重要组成部分。SQL是关系数据库的标准语言,所有的关系数据库管理系统都支持SQL。SQL语言主要特点: 一体化语言 高度非过程化 语言简洁,易学易用 统一的语法格式,不同的工作方式 视图数据结构SQL操作的两个基本数据结构对象是:表和视图格式:格式:SELECT ALL|DISTINCT , FROM , WHERE AND 连接条件连接条件 AND|OR AND |O

2、R GROUP By ,分组列分组列HAVING UNION ALL ORDER By ASCENDING|DESCENDING,ASCENDING|DESCENDING INTO | TO FILE ADDITIVE | TO PRINTER | TO SCREEN|into cursor|into table建议:多多操作!来加深印象!ALL:在查询结果中包含所有的行(包括重复值)。它是在查询结果中包含所有的行(包括重复值)。它是系统的默认设置。系统的默认设置。DISTINCT:在查询结果中删除重复行在查询结果中删除重复行:当涉及到多表查询时,需要通过别名来区分不同当涉及到多表查询时,需要

3、通过别名来区分不同表文件中的字段。表文件中的字段。:检索项主要是检索项主要是FROM子句中所给出的表文件中的子句中所给出的表文件中的字段名。选中的字段名可以和字段名。选中的字段名可以和SQL函数一起使用。函数一起使用。常用到的函数有:常用到的函数有:平均值函数平均值函数AVG():求一列数据的平均值求一列数据的平均值最小值函数最小值函数MIN():求一列数的最小值求一列数的最小值最大值函数最大值函数MAX():求一列数的最大值求一列数的最大值计数函数计数函数COUNT():求一列中该字段的个数求一列中该字段的个数求和函数求和函数SUM():求一列数的总和求一列数的总和FROM:form子句也是

4、命令中不可缺少的成分,用于指定数子句也是命令中不可缺少的成分,用于指定数据来源,其后列出所有要查询的表文件名,可以加上相应的据来源,其后列出所有要查询的表文件名,可以加上相应的别名。别名。WHERE:WHERE是命令可选项,其后各子句含义为:是命令可选项,其后各子句含义为: 是指多表文件查询的条件;是指多表文件查询的条件;是指单表是指单表文件的查询条件文件的查询条件.GRONP By短语:短语:将查询结果按某一列将查询结果按某一列(或多个列或多个列)的值进行的值进行分组;分组;HAVING子句:子句: HAVING子句,只与子句,只与GROUP By配合使用,配合使用,用于说明分组条件;用于说

5、明分组条件;UNION ALL :说明将两个查询结果合并在一说明将两个查询结果合并在一起输出;若无起输出;若无ALL,重复记录将被自动取消,若有,重复记录将被自动取消,若有ALL表示表示结果全部合并;结果全部合并;ORDER By ASC|DESC:ORDER BY子句指定子句指定按哪个字段对查询结果排序按哪个字段对查询结果排序,ASC为升序,为升序, DESC为降序;为降序;INTO Destination:指定在何处保存查询结果。如果在同指定在何处保存查询结果。如果在同一个查询中同时包含了一个查询中同时包含了INTO子句和子句和TO子句,则子句,则TO子句不起子句不起作用。如果没有包含作用

6、。如果没有包含INTO子句,查询结果显示在子句,查询结果显示在“浏览浏览”窗窗口中。口中。Destination可以是下列三种子句之一可以是下列三种子句之一DBF TableName|TABLE TableName:将查询结果保存到一个表中,如果指定将查询结果保存到一个表中,如果指定的表已经打开,并且的表已经打开,并且SET SAFETY设置设置为为OFF,则,则VFP在不给出任何警告信息在不给出任何警告信息的情况下改写该表。执行完的情况下改写该表。执行完SELECT语语句后,该表仍然保持打开活动状态。句后,该表仍然保持打开活动状态。CURSOR CursorName:将查询结:将查询结果保存

7、到临时表中。如果指定了一果保存到临时表中。如果指定了一个已打开表的名称,则个已打开表的名称,则VFP产生错产生错误信息。执行完误信息。执行完SELECT语句后,语句后,临时表仍然保持打开,但只读。一临时表仍然保持打开,但只读。一旦关闭临时表,则自动删除它。旦关闭临时表,则自动删除它。ARRAY ArrayName:将查询结果保存到数组中。如果查询将查询结果保存到数组中。如果查询结果中不包含任何记录,则不创建这结果中不包含任何记录,则不创建这个数组。个数组。TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了如果命令

8、中包含了TO子句,但没有包括子句,但没有包括INTO子句,则查询结果定向输出到名为子句,则查询结果定向输出到名为FileName的的ASCII码文件、打印机或主窗口。包含码文件、打印机或主窗口。包含ADDITIVE子句使查询结果子句使查询结果追加到所指定的文本文件的内容后面。追加到所指定的文本文件的内容后面。5.2.1 简单查询简单查询简单查询基于单个表,由简单查询基于单个表,由select-from构成无条件查询,构成无条件查询,select-from-where构成条件查询构成条件查询无条件查询无条件查询:select-from构成构成1.查询表中部分字段查询表中部分字段例例5.1查询查询

9、student表中学生的学号和姓名表中学生的学号和姓名select 学号学号,姓名姓名 from student例例5.2 查询查询department表中所有的系名表中所有的系名Select 系名系名 from department5.2.1 简单查询简单查询2.使用使用distinct短语短语例例5.3 列出学生表中的班级名称列出学生表中的班级名称 (无重复行无重复行)select distinct 班级班级 from student3.查询表中全部字段查询表中全部字段例例5.4 查询学生表中全部字段查询学生表中全部字段select * from student例例5.5 查询查询cour

10、se表中的所有元组表中的所有元组Select * from courseDistinct:去掉查询结果去掉查询结果中的重复值中的重复值“*”是通配符是通配符,表示所有字表示所有字段段5.2.1 简单查询简单查询条件查询:条件查询:select-from-where结构结构4.简单的条件查询简单的条件查询例例5.6 查询查询1992年年9月月1日以后出生的学生名单日以后出生的学生名单Select 姓名姓名 from student where 出生日期出生日期ctod(“09/01/92”)例例5.7 列出选修课的课程名称和课程号列出选修课的课程名称和课程号Select 课程名课程名,课程号课程

11、号 from course where 课程性质课程性质=“选修选修”例例5.8 查询课程号是查询课程号是0600101,成绩大于成绩大于80分的学生学号及成绩分的学生学号及成绩,且将成绩由高到低列出且将成绩由高到低列出Select 学号学号,成绩成绩 from grade where 课程号课程号=“0600101” and 成绩成绩80 order by 成绩成绩 desc5.2.1 简单查询简单查询4.简单的条件查询简单的条件查询例例5.9 查询查询teacher表中工资多于表中工资多于2200元的职工所在的系号元的职工所在的系号Select distinct 系号 from teach

12、er where 工资2200例例5.10 给出在系号给出在系号“01”或或“02”工作并且工资少于工作并且工资少于3000元的教师编号元的教师编号select 教师编号 from teacher where 工资2200) and (teacher.系号=department.系号)例例5.12找出成绩大于找出成绩大于90分的学生的学号、姓名及成绩。分的学生的学号、姓名及成绩。select student.学号,姓名,成绩 from student,grade where 成绩90 and student.学号=grade.学号或者select s.学号,姓名,成绩 from student

13、 s,grade g where 成绩90 and s.学号=g.学号在连接查询中引用两个表的公共字在连接查询中引用两个表的公共字段时,须在公共字段名前添加表名段时,须在公共字段名前添加表名或表别名作为前缀,否则系统会提或表别名作为前缀,否则系统会提示出错。对于只在一个数据表中出示出错。对于只在一个数据表中出现的字段,则无须指定前缀。现的字段,则无须指定前缀。在在select查询的查询的from子句中,可以子句中,可以对数据表指定别名,对数据表指定别名,格式为格式为. ,指定别名后,在引用指定别名后,在引用该数据表的字段时,应以别名作为该数据表的字段时,应以别名作为数据表的前缀。数据表的前缀。

14、5.2.2 简单连接查询简单连接查询1.等值连接等值连接例例5.13 查询上官小梅所学课程的课程名及其对应的成绩查询上官小梅所学课程的课程名及其对应的成绩select 姓名,课程名,成绩 from student s,course c,grade g where 姓名=上官小梅 and s.学号=g.学号 and g.课程号=c.课程号对于对于3个表的连接查询,使用个表的连接查询,使用where子句指定查询条件时,其形式为子句指定查询条件时,其形式为:from , where and 5.2.2 简单连接查询简单连接查询2.自连接查询:自连接查询:同一关系与自身进行连接同一关系与自身进行连接例

15、例5.14 找出至少选修找出至少选修0200101号课和号课和0600201号课学生的学号课学生的学号号select x.学号学号 from grade x, grade y where x.学号学号=y.学号学号 and x.课程号课程号=0200101 and y.课程号课程号=06002015.2.3 嵌套查询嵌套查询 在一个select命令的where子句中,如果还出现了另一个select命令,则这种查询称为嵌套查询嵌套查询。 Vfp只支持只支持单层单层嵌套查询。嵌套查询。 嵌套查询所要求的结果出自一个关系,但相关的条件却涉及多个关系:一般外层查询的条件依赖内层查询的结果,而内层查询与

16、外层查询无关。5.2.3 嵌套查询嵌套查询例例5.15 查询哪些系至少有一个教师的工资为查询哪些系至少有一个教师的工资为2200元。元。select 系名 from department where 系号 in (select 系号 from teacher where 工资=2200)例例5.16 查询所有教师的工资都多于查询所有教师的工资都多于2200元的系的信息。元的系的信息。select * from department where 系号 not in (select 系号 from teacher where 工资=80 and 成绩成绩1992-01-01As的作用是在查询结果中

17、将的作用是在查询结果中将指定列命名为一个新的名称指定列命名为一个新的名称Count(*)是是count()函数的一函数的一种特殊形式,用来统计查询种特殊形式,用来统计查询结果的记录个数结果的记录个数5.2.6 简单的计算查询(库函数查询)简单的计算查询(库函数查询)例例5.32 查询查询grade表中成绩的最高分、最低分及平均分。表中成绩的最高分、最低分及平均分。select max(成绩成绩)as 最高分最高分,min(成绩成绩)as 最低分最低分,avg(成成绩绩) as 平均分平均分 from grade例例5.33 查询查询grade表中所有选修课的成绩总和表中所有选修课的成绩总和se

18、lect sum(成绩成绩)from grade where 课程号课程号 in (select 课课程号程号 from course where 课程性质课程性质=选修选修)5.2.7 分组与计算查询分组与计算查询 GRONP By短语:短语: 将查询结果按某一列将查询结果按某一列(或多个列或多个列)的值的值进行分组;进行分组; HAVING子句:子句: HAVING子句,只与子句,只与GROUP By配合使用,配合使用,用于说明分组条件;用于说明分组条件;5.2.7 分组与计算查询分组与计算查询例例5.34 查询男女生人数查询男女生人数Select 性别性别,count(*) from s

19、tudent group by 性别性别或或Select 性别性别,count(性别性别) from student group by 性别性别例例5.35 求每个系的教师的平均工资求每个系的教师的平均工资select 系号系号,avg(工资工资) from teacher group by 系号系号例例5.36 求至少有两名教师的每个系的平均工资求至少有两名教师的每个系的平均工资select 系号系号,count(*),avg(工资工资) from teacher group by 系号系号 having count(*)=2Count(*)为每一组的记录为每一组的记录个数个数5.2.7 分

20、组与计算查询分组与计算查询例例5.37 列出各门课的平均成绩、最高成绩、最低成绩和选课列出各门课的平均成绩、最高成绩、最低成绩和选课人数人数select 课程号课程号, AVG(成绩成绩) AS 平均成绩平均成绩, MAX(成绩成绩) AS 最最高分高分, MIN(成绩成绩) AS 最低分最低分, COUNT(学号学号) AS 选课人数选课人数 from grade group by 课程号课程号例例5.38 列出最少选修二门课程的学生姓名列出最少选修二门课程的学生姓名select 姓名姓名 from student where 学号学号 in(select 学号学号 from grade g

21、roup by 学号学号 having count(*)=2)5.2.7 分组与计算查询分组与计算查询例例5.39 求出总分大于求出总分大于180的学生的学号的学生的学号,姓名及总成绩姓名及总成绩select s.学号学号,姓名姓名,sum(成绩成绩) as 总成绩总成绩 from student s, grade g where s.学号学号=g.学号学号 group by g.学号学号 having sum(成绩成绩)1805.2.8 排序排序ORDER By ASC|DESC:指定将查询结果按哪个指定将查询结果按哪个字段排序字段排序,ASC为升序,为升序, DESC为降序;为降序;例例5

22、.40 对学生表按姓名排序对学生表按姓名排序 Select * from student order by 姓名姓名例例5.41 对对teacher表按工资升序检索出全部教师的信息。表按工资升序检索出全部教师的信息。 select * from teacher order by 工资工资例例5.42 先按系号排序,再按工资降序排序输出全部教师信息先按系号排序,再按工资降序排序输出全部教师信息select * from teacher order by 系号系号,工资工资 desc5.2.8 排序排序显示前几项记录:显示前几项记录:有时只需要查找满足条件的前几个记录,这时可使用top短语格式:T

23、OP nExpr PERCENT说明: nExpr为数字表达式,当不使用PERCENT时, nExpr为1至32767间的整数,说明显示前几个记录;当使用PERCENT时, nExpr是0.01至99.99间的实数,说明显示结果中前百分之几的记录。5.2.8 排序排序例例5.43 显示显示teacher表工资最高的表工资最高的3位教师的信息位教师的信息select * top 3 from teacher order by 工资 desc例例5.44 显示显示teacher表工资最低的那表工资最低的那20%教师的信息教师的信息select * top 20 percent from teach

24、er order by 工资例例5.45 在grade表中查询成绩最高的5位学生的得分情况。select * top 5 from grade order by 成绩 desc例例5.46 在grade表中查询成绩最低的30%学生的得分情况select * top 30 percent from grade order by 成绩top短语必须和短语必须和order by短语短语配合起来使用才有效,它不配合起来使用才有效,它不能单独使用能单独使用5.2.9 超连接查询超连接查询 用where指定的连接条件一般都是等值连接,即只有满足连接条件的记录才会出现在查询结果中。 在SQL标准中还支持表的

25、超连接,使用下面的命令:Select From Table1 Inner | Left | Right | Full JoinTable2 On Where 其中,其中,innerinner代表内连接,即普通连接;代表内连接,即普通连接;Left、Right、Full分别代表左连接、右连接和全连接,分别代表左连接、右连接和全连接,Left、Right、Full三种三种连接方式也称为外连接。连接方式也称为外连接。5.2.9 超连接查询超连接查询 INNER JOIN(JOIN),普通连接:普通连接:只有满足连接条件的记录才出现在查询结果中。 LIFT JOIN,左连接左连接:在进行连接运算时,首

26、先将满足连接条件的所有元组放在结果关系中,同时将第一个表(或称Join左边的表)中不满足连接条件的元组也放入结果关系中,这些元组对应第二个表(或称Join右边的表)的属性值为空值。5.2.9 超连接查询超连接查询 RIGHT JOIN,RIGHT JOIN,右连接右连接: :在进行连接运算时,首先将满足连接条件的所有元组放在结果关系中,同时将第二个表(或称Join右边的表)中不满足连接条件的元组也放入结果关系中,这些元组对应第一个表(或称Join左边的表)的属性值为空值。 FULL JOIN,FULL JOIN,全连接:全连接:在进行连接运算时,首先将满足连接条件的所有元组放在结果关系中,同时

27、将两个表中不满足连接条件的元组也放入结果关系中,这些元组对应另一个表的属性值为空值。5.2.9 超连接查询超连接查询例例5.47 普通连接(将普通连接(将teacher表和表和department表的部分字段表的部分字段通过公共的字段通过公共的字段“系号系号”进行连接)进行连接)select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d,teacher t where d.系号系号=t.系号系号等价于等价于select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d join teacher

28、t on d.系号系号=t.系号系号等价于等价于select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d inner join teacher t on d.系号系号=t.系号系号5.2.9 超连接查询超连接查询例例5.48 左连接左连接select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d Left join teacher t on d.系号系号=t.系号系号例例5.49 右连接右连接假设假设teacher表插入一条记录表插入一条记录“2006108”,“07”, “刘丽刘丽”,1

29、972-06-24, “副教授副教授”,2500.00select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d Right join teacher t on d.系号系号=t.系号系号5.2.9 超连接查询超连接查询例例5.50 全连接全连接select d.系号系号, 系名系名,教师编号教师编号,教师姓名教师姓名 from Department d Full join teacher t on d.系号系号=t.系号系号Join 连接格式在连接多个表时的书写方连接格式在连接多个表时的书写方法要特别注意,在这种格式中法要特别注意,在这种格

30、式中join和和on的顺序很重要,特别要注意的顺序很重要,特别要注意join的顺序的顺序与与on的顺序正好相反的顺序正好相反5.2.10 使用量词和谓词的查询使用量词和谓词的查询 格式格式1:比较运算符比较运算符ANYALLSOME(子查询子查询) 量词量词:ANY、ALL、SOME,其中ANY与SOME为同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果就为真;而ALL则要求子查询中的所有行都使结果为真时,结果才为真。 格式格式2:NOTEXISTS(子查询子查询) 谓词:谓词:EXISTS,EXISTS或或NOT EXISTS是用来检查在子查询中是是用来检查在子查询中是否有结果

31、返回(即存在元组或不存在元组)否有结果返回(即存在元组或不存在元组)5.2.10 使用量词和谓词的查询使用量词和谓词的查询例例5.51 检索那些系中还没有教师的系的信息检索那些系中还没有教师的系的信息。select * from department where not exists (select * from teacher where 系号=department.系号)等价于等价于select * from department where 系号 not in (select 系号 from teacher )例例5.52 检索那些系中至少已经有一个教师的系的信息。检索那些系中至少已经有

32、一个教师的系的信息。 select * from department where exists (select * from teacher Where 系号=department.系号)等价于等价于select * from department where 系号 in (select 系号 from teacher)5.2.10 使用量词和谓词的查询使用量词和谓词的查询例例5.53 查询还没有被学生选修课程的课程号和课程名查询还没有被学生选修课程的课程号和课程名Select 课程号课程号,课程名课程名 from course where not exist(select * from g

33、rade where course.课程号课程号=grade.课程号课程号)注意:注意:NOTEXISTS只是只是 判断子判断子查询中是否有或没有结果返回,查询中是否有或没有结果返回,它本身并没有任何运算或比较。它本身并没有任何运算或比较。5.2.10 使用量词和谓词的查询使用量词和谓词的查询例例5.54 求必修课程号是求必修课程号是0200101的学生中成绩比必修课号的学生中成绩比必修课号是是0600201课的最低成绩要高的学生的学号与成绩课的最低成绩要高的学生的学号与成绩 select 学号学号,成绩成绩 from grade where 课程号课程号=0200101 and 成绩成绩an

34、y (select 成绩成绩 from grade where 课程号课程号=0600201)等价于等价于select 学号学号,成绩成绩 from grade where 课程号课程号=0200101 and 成绩成绩 (select min(成绩成绩) from grade where 课程号课程号=0600201)5.2.10 使用量词和谓词的查询使用量词和谓词的查询例例5.55 求必修课程号是求必修课程号是0200101的学生中成绩比必修课号的学生中成绩比必修课号是是0600201课的最高成绩要高的学生的学号与成绩课的最高成绩要高的学生的学号与成绩 select 学号学号,成绩成绩 f

35、rom grade where 课程号课程号=0200101 and 成绩成绩all(select 成绩成绩 from grade where 课程号课程号=0600201)等价于等价于select 学号学号,成绩成绩 from grade where 课程号课程号=0200101 and 成绩成绩 (select max(成绩成绩) from grade where 课程号课程号=0600201)5.2.11 集合的并运算集合的并运算SQL支持集合的并支持集合的并(UNION)运算,即可以将两个运算,即可以将两个SELECT 语语句的查询结果通过并运算合并成一个查询结果。为了进行并句的查询结

36、果通过并运算合并成一个查询结果。为了进行并运算,要求两个查询结果具有相同的字段个数,并且对应字运算,要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域。段的值要出自同一个值域。 格式:格式:UNION ALL 说明将两个查询结果合并在一起输出;若无说明将两个查询结果合并在一起输出;若无ALL,重复记,重复记录将被自动取消,若有录将被自动取消,若有ALL表示结果全部合并;表示结果全部合并;5.2.11 集合的并运算集合的并运算例例5.56 以下结果为系名为自动化系和经济系的教师信息以下结果为系名为自动化系和经济系的教师信息select * from teacher where

37、系号=(select 系号 from department where 系名=自动化系)union;select * from teacher where 系号=(select 系号 from department where 系名=经济系) 5.2.11 集合的并运算集合的并运算例例5.57 以下结果为以下结果为“选修课选修课”和和“必修课必修课”的课程相关信息。的课程相关信息。select 课程名课程名,课程号课程号 from course where 课程性质课程性质=选修选修“Unionselect 课程名课程名,课程号课程号 from course where 课程性质课程性质=“必

38、修必修“5.2.12 查询结果的输出查询结果的输出查询结果的输出去向查询结果的输出去向 Into Array Into Array Into Cursor Into Cursor Into Dbf Into Dbf| |TableTable To File To File To Printer prompt To Printer promptInto cursor产生的临时产生的临时表文件是只读的表文件是只读的.dbf文件,当查询结束后文件,当查询结束后该临时文件是当前文件,可像一般的该临时文件是当前文件,可像一般的.dbf文件使用,当该临时文件被关闭后,文文件使用,当该临时文件被关闭后,文件

39、将自动被删除。件将自动被删除。执行完执行完into table 后,系统后,系统将在默认路径下建立数据表文件,同时将在默认路径下建立数据表文件,同时打开该文件,并将其设为当前数据表。打开该文件,并将其设为当前数据表。与临时表文件不同,该表文件存放在磁与临时表文件不同,该表文件存放在磁盘上,关闭后不会被自动删除。盘上,关闭后不会被自动删除。To fileadditive可将查询结果可将查询结果保存到一个文本文件,文本文件的默认保存到一个文本文件,文本文件的默认扩展名是扩展名是.txt,若使用,若使用additive可将查询可将查询结果追加到原文本文件的尾部,否则将结果追加到原文本文件的尾部,否则

40、将覆盖原有文件。覆盖原有文件。5.2.12 查询结果的输出查询结果的输出1.将查询结果存放在数组将查询结果存放在数组例例5.58 将查询到的选修课的课程号和课程名存放在数组将查询到的选修课的课程号和课程名存放在数组xx中。中。select 课程号,课程名 from course where 课程性质=“选修” into array xx?xx(1,1),xx(1,2)?xx(2,1),xx(2,2)5.2.12 查询结果的输出查询结果的输出2.将查询结果存放到临时表文件将查询结果存放到临时表文件例例5.59 将查询到的选修课的课程号和课程名存放在临时将查询到的选修课的课程号和课程名存放在临时.

41、dbf表表文件文件xx中中。 select 课程号,课程名 from course where 课程性质=选修“into cursor xx3.将查询结果存放到永久表文件将查询结果存放到永久表文件例例5.60 将查询到选修课的课程号和课程名存放在永久表文件将查询到选修课的课程号和课程名存放在永久表文件yy中中select 课程号,课程名 from course where 课程性质=“选修“into table yy5.2.12 查询结果的输出查询结果的输出4.将查询结果存放到文本文件将查询结果存放到文本文件若命令中包含了若命令中包含了to子句,但没有包含子句,但没有包含into子句,则子句,

42、则to子句起子句起作用。作用。例例5.61 将查询到的选修课的课程号和课程名存放在文本文件将查询到的选修课的课程号和课程名存放在文本文件 xx中。中。select 课程号课程号,课程名课程名 from course where 课程性质课程性质=选修选修 to file xx5.将查询结果直接输出到打印机将查询结果直接输出到打印机使用子句使用子句to printerprompt可以直接将查询结果输出到打印可以直接将查询结果输出到打印机,若使用了机,若使用了prompt选项,则在打印之前还会打开打印机设选项,则在打印之前还会打开打印机设置对话框。置对话框。5.3 数据操作数据操作SQL的数据操作

43、功能是指对数据库中的数据进行操作的功能,主要包括数据的插入、数据的更新和数据的删除,对应的SQL命令动词分别是INSERT、UPDATE和DELETE。5.3.1.插入数据插入数据 格式格式1:INSERT INTO (, ) VALUES (, ) 功能:功能:向指定的数据表尾部插入一条记录,并用指定的表达式向指定的数据表尾部插入一条记录,并用指定的表达式对字段赋值。对字段赋值。 说明:说明: 当对新记录的所有字段都赋值时,可省略字段名。若只对某些当对新记录的所有字段都赋值时,可省略字段名。若只对某些字段赋值,即插入的不是完整的记录时,则需要指定要赋值的字段赋值,即插入的不是完整的记录时,则

44、需要指定要赋值的字段名称。字段名称。 VALUES子句中各个表达式的值为赋给每个字段的值,表达式子句中各个表达式的值为赋给每个字段的值,表达式和对应字段的数据类型、取值范围必须一致。和对应字段的数据类型、取值范围必须一致。5.3.1.插入数据插入数据例例5.62 在course表中插入记录。Insert into course values(“0600010”,”,48,3,”选修”)& 在course表中插入记录,课程号为“0600010”,课程名为空,学时为48,学分为3,课程性质为“选修”Insert into course(课程号,课程名) values (“0600020”,”信息资

45、源管理“)& 在course表中插入记录,课程号为“0600020”,课程名为”信息资源管理“5.3.1.插入数据插入数据 格式格式2:Insert Into From Array |MEMVAR 功能:功能:向指定的数据表插入一条新记录,插入新记录的字段值来自于数组元素或内存变量。例例5.63 输入以下命令并查看输出结果。输入以下命令并查看输出结果。dimension b(4)b(1)=“2012052101b(2)=张珊 b(3)=女 b(4)=.null.insert into student from array b5.3.1.插入数据插入数据例例5.64 输入以下命令并查看输出结果。

46、输入以下命令并查看输出结果。学号=“2012052102“姓名=黎明“性别=男“出生日期=1986-09-10insert into student from memvar5.3.2.更新数据更新数据 格式:格式:UPDATE SET= WHERE 功能:功能:对于指定表中满足条件的记录,用指定的表达式的值对于指定表中满足条件的记录,用指定的表达式的值来更新指定的字段。来更新指定的字段。 注意:注意:update-sql只能在单一的表中更新记录。只能在单一的表中更新记录。5.3.2.更新数据更新数据例例5.65 将course表中所有选修课的学时增加5个学时。Update course set

47、 学时=学时+5 where 课程性质=”选修“5.3.3 删除数据删除数据 格式:格式:DELETE FROM WHERE 功能:功能:对于指定数据表中满足条件的记录进行逻辑删除。对于指定数据表中满足条件的记录进行逻辑删除。 说明:说明:where用来指定删除的条件,若不使用用来指定删除的条件,若不使用where子句,则逻辑删除表中的全部记录。子句,则逻辑删除表中的全部记录。5.3.3 删除数据删除数据例例5.66 逻辑删除逻辑删除course表中课程性质为选修的记录。表中课程性质为选修的记录。Delete from course where 课程性质课程性质=“选修选修”5.4 数据定义数

48、据定义SQL的数据定义功能主要包括数据库、表、视图、存储过程、规则和索引等对象的定义。本节主要介绍使用CREATE TABLE命令建立数据表结构,使用ALTER TABLE命令修改数据表结构以及使用DROP TABLE命令删除数据表。5.4.1 表的定义表的定义SQL语言提供的定义表的命令是Create Table。在使用这个命令之前,首先要设计好表结构的各种细节,包括: 表名; 各列(字段)的名称、数据类型、宽度; 哪(几)列将组成表的主键; 表中的哪些列必须提供数据;5.4.1 表的定义表的定义创建表的语句格式如下:创建表的语句格式如下:Create Table | Dbf Name Fr

49、ee ( (字段宽度, ) Null | Not Null Check ErrorDefault Primary Key | UniqueReferences Tag , . 5.4.1 表的定义表的定义,Primary Key Tag , ,Unique Tag ,Foreign Key Tag Nodup References Tag, Check Error ) 功能:创建一个由指定字段组成的数据表。功能:创建一个由指定字段组成的数据表。5.4.1 表的定义表的定义关于关于Create Table命令说明如下命令说明如下: 用CREATE Table命令可以完成表设计器所能完成的所有功能

50、。 命令关键字Create Table 与Create DBF功能相同。 Name :为所创建的表定义长表名,只有当前有打开的数据库时,才能使用此选项。 Free:创建为自由表。5.4.1 表的定义表的定义 (字段宽度字段宽度, ) :4 4个个选项依次分别定义字段名、字段类型,数值型和字符型字选项依次分别定义字段名、字段类型,数值型和字符型字段的宽度,数值型字段的小数位宽度。段的宽度,数值型字段的小数位宽度。 Null | Not Null:定义本字段是否可以为空。定义本字段是否可以为空。 Check Error:定义本字段的有效性规则和出错时的提示信息字符串。 Default :定义字段的

51、默认值。5.4.1 表的定义表的定义 Primary Key | Unique:将本字段创建为主索引字段。或将本字段创建为侯选索引字段。 References Tag:说明本表与之建立永久联系的父表及父表的索引名。 Foreign Key:创建一个外部索引(非主索引),并与一个父表建立关联。 Primary Key Tag :以以作为索引表达式建立主索引,索引名为作为索引表达式建立主索引,索引名为5.4.1 表的定义表的定义 ,Unique Tag :以作为索引表达式建立候选索引,索引名为 ,Foreign Key Tag Nodup References Tag:以作为索引表达式建立外(普通

52、)索引,索引名为,同时以该字段作为连接字段,通过引用的建立两数据表之间的永久性关联。 , Check Error ):定义表记录的有效性规则和出错信息。5.4.1 表的定义表的定义例例5.67:建立一个自由表KZScreate table kzs free(学号 c(6), 姓名; c(8), 性别 c(2), 年龄 n(3) null, 入学年月 d)5.4.1 表的定义表的定义例例5.68 建立教学管理数据库,再用SQL命令建立学生表、课程表、成绩表。create database kkkcreate table 学生(学号 c(8) primary key, 姓名 c(8) not nu

53、ll, 性别 c(2), 年龄 n(3) check 年龄16 and 年龄0) error 面积应该大于0)5.4.1 表的定义表的定义create table 职工(仓库号 C(5),职工号 c(5) primary key,工资 i check(工资=1000 and 工资=5000)error “工资值的范围在1000-5000!“ default 1200,foreign key 仓库号 tag 仓库号 references 仓库1)create table 供应商(供应商号 c(5) primary key,供应商名 c(20),地址 c(20)5.4.1 表的定义表的定义crea

54、te table 订购单(职工号 c(5),供应商号 c(5),订购单号 c(5) primary key,订购日期 d,foreign key 职工号 tag 职工号 references 职工1,foreign key 供应商号 tag 供应商号 references 供应商1)5.4.2 表结构的修改表结构的修改Alter Table命令用于修改表结构,可以增添字段、删除字段、改变字段的定义、增添或删除约束等。5.4.2 表结构的修改表结构的修改 Alter Table命令有命令有3种格式。种格式。格式格式1:Alter Table Add | Alter Column (字段宽度字段宽

55、度, ) Null | Not Null CheckError Default Primary Key | UniqueReferences Tag 5.4.2 表结构的修改表结构的修改功能:这种格式用来添加字段或修改字段的参数 。可以修改字段的类型、宽度、有效性规则等,但不能修改字段名,不能删除字段及已定义的字段有效性规则。不管是否修改字段类型,必须将字段名和类型一同在命令中列出。5.4.2 表结构的修改表结构的修改例例5.70 为课程表增加一个新的字段“学时”(数值型,宽度2)。Alter table 课程 add 学时 n(2) check 学时0 error “学时应该大于0例例5.7

56、1将课程表的“课程名”字段的宽度改为14Alter table 课程 alter 课程名c(14) 例例5.72 为“订购单”表增加一个新字段“总金额”(货币类型)alter table 订购单 add 总金额 y check 总金额0 error “总金额应该大于0“例例5.73 将订购单的“订购单号”字段的宽度改为6alter table 订购单 alter 订购单号 c(6)5.4.2 表结构的修改表结构的修改格式格式2:ALTER TABLE ALTER COLUMN NULL | NOT NULL SET CHECKERROR SET DEFAULT DROP DEFAULTDROP CHECK

温馨提示

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

评论

0/150

提交评论