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

下载本文档

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

文档简介

1、关于结构化查询语言第一张,PPT共九十一页,创作于2022年6月5.1 SQL简介SQL是Sturctured Query Language(结构化查询语言)的缩写。SQL包含数据查询、数据定义、数据操纵和数据控制等功能。其中查询是SQL语言的重要组成部分。SQL是关系数据库的标准语言,所有的关系数据库管理系统都支持SQL。第二张,PPT共九十一页,创作于2022年6月5.1 SQL简介SQL语言主要特点:一体化语言高度非过程化语言简洁,易学易用统一的语法格式,不同的工作方式视图数据结构SQL操作的两个基本数据结构对象是:表和视图第三张,PPT共九十一页,创作于2022年6月5.2 数据查询格

2、式:SELECT ALL|DISTINCT , FROM , WHERE AND 连接条件 AND|OR AND |OR GROUP By ,分组列HAVING UNION ALL ORDER By ASCENDING|DESCENDING,ASCENDING|DESCENDING 第四张,PPT共九十一页,创作于2022年6月5.2 数据查询INTO | TO FILE ADDITIVE | TO PRINTER | TO SCREEN|into cursor|into table建议:多多操作!来加深印象!第五张,PPT共九十一页,创作于2022年6月5.2 数据查询ALL:在查询结果中包

3、含所有的行(包括重复值)。它是系统的默认设置。DISTINCT:在查询结果中删除重复行:当涉及到多表查询时,需要通过别名来区分不同表文件中的字段。:检索项主要是FROM子句中所给出的表文件中的字段名。选中的字段名可以和SQL函数一起使用。常用到的函数有:平均值函数AVG():求一列数据的平均值最小值函数MIN():求一列数的最小值最大值函数MAX():求一列数的最大值计数函数COUNT():求一列中该字段的个数求和函数SUM():求一列数的总和第六张,PPT共九十一页,创作于2022年6月5.2 数据查询FROM:form子句也是命令中不可缺少的成分,用于指定数据来源,其后列出所有要查询的表文

4、件名,可以加上相应的别名。WHERE:WHERE是命令可选项,其后各子句含义为: 是指多表文件查询的条件;是指单表文件的查询条件.第七张,PPT共九十一页,创作于2022年6月5.2 数据查询GRONP By短语:将查询结果按某一列(或多个列)的值进行分组;HAVING子句: HAVING子句,只与GROUP By配合使用,用于说明分组条件;UNION ALL :说明将两个查询结果合并在一起输出;若无ALL,重复记录将被自动取消,若有ALL表示结果全部合并;第八张,PPT共九十一页,创作于2022年6月5.2 数据查询ORDER By ASC|DESC:ORDER BY子句指定按哪个字段对查询

5、结果排序,ASC为升序, DESC为降序;第九张,PPT共九十一页,创作于2022年6月5.2 数据查询INTO Destination:指定在何处保存查询结果。如果在同一个查询中同时包含了INTO子句和TO子句,则TO子句不起作用。如果没有包含INTO子句,查询结果显示在“浏览”窗口中。Destination可以是下列三种子句之一DBF TableName|TABLE TableName:将查询结果保存到一个表中,如果指定的表已经打开,并且SET SAFETY设置为OFF,则VFP在不给出任何警告信息的情况下改写该表。执行完SELECT语句后,该表仍然保持打开活动状态。CURSOR Curs

6、orName:将查询结果保存到临时表中。如果指定了一个已打开表的名称,则VFP产生错误信息。执行完SELECT语句后,临时表仍然保持打开,但只读。一旦关闭临时表,则自动删除它。ARRAY ArrayName:将查询结果保存到数组中。如果查询结果中不包含任何记录,则不创建这个数组。第十张,PPT共九十一页,创作于2022年6月5.2 数据查询TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了TO子句,但没有包括INTO子句,则查询结果定向输出到名为FileName的ASCII码文件、打印机或主窗口。包含ADDITI

7、VE子句使查询结果追加到所指定的文本文件的内容后面。第十一张,PPT共九十一页,创作于2022年6月5.2.1 简单查询简单查询基于单个表,由select-from构成无条件查询,select-from-where构成条件查询无条件查询:select-from构成1.查询表中部分字段例5.1查询student表中学生的学号和姓名select 学号,姓名 from student例5.2 查询department表中所有的系名Select 系名 from department第十二张,PPT共九十一页,创作于2022年6月5.2.1 简单查询2.使用distinct短语例5.3 列出学生表中的班

8、级名称 (无重复行)select distinct 班级 from student3.查询表中全部字段例5.4 查询学生表中全部字段select * from student例5.5 查询course表中的所有元组Select * from courseDistinct:去掉查询结果中的重复值“*”是通配符,表示所有字段第十三张,PPT共九十一页,创作于2022年6月5.2.1 简单查询条件查询:select-from-where结构4.简单的条件查询例5.6 查询1992年9月1日以后出生的学生名单Select 姓名 from student where 出生日期ctod(“09/01/92

9、”)例5.7 列出选修课的课程名称和课程号Select 课程名,课程号 from course where 课程性质=“选修”例5.8 查询课程号是0600101,成绩大于80分的学生学号及成绩,且将成绩由高到低列出Select 学号,成绩 from grade where 课程号=“0600101” and 成绩80 order by 成绩 desc第十四张,PPT共九十一页,创作于2022年6月5.2.1 简单查询4.简单的条件查询例5.9 查询teacher表中工资多于2200元的职工所在的系号Select distinct 系号 from teacher where 工资2200例5.

10、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 s,grade g where 成绩90 and s.学号=g.学号在连接查询中引用两个表的公共字段时,须在公共字段名

11、前添加表名或表别名作为前缀,否则系统会提示出错。对于只在一个数据表中出现的字段,则无须指定前缀。在select查询的from子句中,可以对数据表指定别名,格式为. ,指定别名后,在引用该数据表的字段时,应以别名作为数据表的前缀。第十七张,PPT共九十一页,创作于2022年6月5.2.2 简单连接查询1.等值连接例5.13 查询上官小梅所学课程的课程名及其对应的成绩select 姓名,课程名,成绩 from student s,course c,grade g where 姓名=上官小梅 and s.学号=g.学号 and g.课程号=c.课程号对于3个表的连接查询,使用where子句指定查询条

12、件时,其形式为:from , where and 第十八张,PPT共九十一页,创作于2022年6月5.2.2 简单连接查询2.自连接查询:同一关系与自身进行连接例5.14 找出至少选修0200101号课和0600201号课学生的学号select x.学号 from grade x, grade y where x.学号=y.学号 and x.课程号=0200101 and y.课程号=0600201第十九张,PPT共九十一页,创作于2022年6月5.2.3 嵌套查询在一个select命令的where子句中,如果还出现了另一个select命令,则这种查询称为嵌套查询。Vfp只支持单层嵌套查询。嵌

13、套查询所要求的结果出自一个关系,但相关的条件却涉及多个关系:一般外层查询的条件依赖内层查询的结果,而内层查询与外层查询无关。第二十张,PPT共九十一页,创作于2022年6月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

14、工资=80 and 成绩1992-01-01As的作用是在查询结果中将指定列命名为一个新的名称Count(*)是count()函数的一种特殊形式,用来统计查询结果的记录个数第二十九张,PPT共九十一页,创作于2022年6月5.2.6 简单的计算查询(库函数查询)例5.32 查询grade表中成绩的最高分、最低分及平均分。select max(成绩)as 最高分,min(成绩)as 最低分,avg(成绩) as 平均分 from grade例5.33 查询grade表中所有选修课的成绩总和select sum(成绩)from grade where 课程号 in (select 课程号 from

15、 course where 课程性质=选修)第三十张,PPT共九十一页,创作于2022年6月5.2.7 分组与计算查询GRONP By短语: 将查询结果按某一列(或多个列)的值进行分组;HAVING子句: HAVING子句,只与GROUP By配合使用,用于说明分组条件;第三十一张,PPT共九十一页,创作于2022年6月5.2.7 分组与计算查询例5.34 查询男女生人数Select 性别,count(*) from student group by 性别或Select 性别,count(性别) from student group by 性别例5.35 求每个系的教师的平均工资select

16、系号,avg(工资) from teacher group by 系号例5.36 求至少有两名教师的每个系的平均工资select 系号,count(*),avg(工资) from teacher group by 系号 having count(*)=2Count(*)为每一组的记录个数第三十二张,PPT共九十一页,创作于2022年6月5.2.7 分组与计算查询例5.37 列出各门课的平均成绩、最高成绩、最低成绩和选课人数select 课程号, AVG(成绩) AS 平均成绩, MAX(成绩) AS 最高分, MIN(成绩) AS 最低分, COUNT(学号) AS 选课人数 from gra

17、de group by 课程号例5.38 列出最少选修二门课程的学生姓名select 姓名 from student where 学号 in(select 学号 from grade group by 学号 having count(*)=2)第三十三张,PPT共九十一页,创作于2022年6月5.2.7 分组与计算查询例5.39 求出总分大于180的学生的学号,姓名及总成绩select s.学号,姓名,sum(成绩) as 总成绩 from student s, grade g where s.学号=g.学号 group by g.学号 having sum(成绩)180第三十四张,PPT共九

18、十一页,创作于2022年6月5.2.8 排序ORDER By ASC|DESC:指定将查询结果按哪个字段排序,ASC为升序, DESC为降序;例5.40 对学生表按姓名排序 Select * from student order by 姓名例5.41 对teacher表按工资升序检索出全部教师的信息。 select * from teacher order by 工资例5.42 先按系号排序,再按工资降序排序输出全部教师信息select * from teacher order by 系号,工资 desc第三十五张,PPT共九十一页,创作于2022年6月5.2.8 排序显示前几项记录:有时只需

19、要查找满足条件的前几个记录,这时可使用top短语格式:TOP nExpr PERCENT说明: nExpr为数字表达式,当不使用PERCENT时, nExpr为1至32767间的整数,说明显示前几个记录;当使用PERCENT时, nExpr是0.01至99.99间的实数,说明显示结果中前百分之几的记录。第三十六张,PPT共九十一页,创作于2022年6月5.2.8 排序例5.43 显示teacher表工资最高的3位教师的信息select * top 3 from teacher order by 工资 desc例5.44 显示teacher表工资最低的那20%教师的信息select * top

20、20 percent from teacher 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短语配合起来使用才有效,它不能单独使用第三十七张,PPT共九十一页,创作于2022年6月5.2.9 超连接查询用where指定的连接条件一般都是等值连接,即只有满足连接条件的记录才会出现在查询结果中

21、。在SQL标准中还支持表的超连接,使用下面的命令:Select From Table1 Inner | Left | Right | Full JoinTable2 On Where 其中,inner代表内连接,即普通连接;Left、Right、Full分别代表左连接、右连接和全连接,Left、Right、Full三种连接方式也称为外连接。第三十八张,PPT共九十一页,创作于2022年6月5.2.9 超连接查询INNER JOIN(JOIN),普通连接:只有满足连接条件的记录才出现在查询结果中。LIFT JOIN,左连接:在进行连接运算时,首先将满足连接条件的所有元组放在结果关系中,同时将第一

22、个表(或称Join左边的表)中不满足连接条件的元组也放入结果关系中,这些元组对应第二个表(或称Join右边的表)的属性值为空值。第三十九张,PPT共九十一页,创作于2022年6月5.2.9 超连接查询RIGHT JOIN,右连接:在进行连接运算时,首先将满足连接条件的所有元组放在结果关系中,同时将第二个表(或称Join右边的表)中不满足连接条件的元组也放入结果关系中,这些元组对应第一个表(或称Join左边的表)的属性值为空值。 FULL JOIN,全连接:在进行连接运算时,首先将满足连接条件的所有元组放在结果关系中,同时将两个表中不满足连接条件的元组也放入结果关系中,这些元组对应另一个表的属性

23、值为空值。第四十张,PPT共九十一页,创作于2022年6月5.2.9 超连接查询例5.47 普通连接(将teacher表和department表的部分字段通过公共的字段“系号”进行连接)select d.系号, 系名,教师编号,教师姓名 from Department d,teacher t where d.系号=t.系号等价于select d.系号, 系名,教师编号,教师姓名 from Department d join teacher t on d.系号=t.系号等价于select d.系号, 系名,教师编号,教师姓名 from Department d inner join teache

24、r t on d.系号=t.系号第四十一张,PPT共九十一页,创作于2022年6月5.2.9 超连接查询例5.48 左连接select d.系号, 系名,教师编号,教师姓名 from Department d Left join teacher t on d.系号=t.系号例5.49 右连接假设teacher表插入一条记录“2006108”,“07”, “刘丽”,1972-06-24, “副教授”,2500.00select d.系号, 系名,教师编号,教师姓名 from Department d Right join teacher t on d.系号=t.系号第四十二张,PPT共九十一页,

25、创作于2022年6月5.2.9 超连接查询例5.50 全连接select d.系号, 系名,教师编号,教师姓名 from Department d Full join teacher t on d.系号=t.系号Join 连接格式在连接多个表时的书写方法要特别注意,在这种格式中join和on的顺序很重要,特别要注意join的顺序与on的顺序正好相反第四十三张,PPT共九十一页,创作于2022年6月5.2.10 使用量词和谓词的查询格式1:比较运算符ANYALLSOME(子查询)量词:ANY、ALL、SOME,其中ANY与SOME为同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果就

26、为真;而ALL则要求子查询中的所有行都使结果为真时,结果才为真。格式2:NOTEXISTS(子查询)谓词:EXISTS,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回(即存在元组或不存在元组)第四十四张,PPT共九十一页,创作于2022年6月5.2.10 使用量词和谓词的查询例5.51 检索那些系中还没有教师的系的信息。select * from department where not exists (select * from teacher where 系号=department.系号)等价于select * from department where 系号 not

27、 in (select 系号 from teacher )例5.52 检索那些系中至少已经有一个教师的系的信息。 select * from department where exists (select * from teacher Where 系号=department.系号)等价于select * from department where 系号 in (select 系号 from teacher)第四十五张,PPT共九十一页,创作于2022年6月5.2.10 使用量词和谓词的查询例5.53 查询还没有被学生选修课程的课程号和课程名Select 课程号,课程名 from course

28、where not exist(select * from grade where course.课程号=grade.课程号)注意:NOTEXISTS只是 判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。第四十六张,PPT共九十一页,创作于2022年6月5.2.10 使用量词和谓词的查询例5.54 求必修课程号是0200101的学生中成绩比必修课号是0600201课的最低成绩要高的学生的学号与成绩 select 学号,成绩 from grade where 课程号=0200101 and 成绩any (select 成绩 from grade where 课程号=0600201)

29、等价于select 学号,成绩 from grade where 课程号=0200101 and 成绩 (select min(成绩) from grade where 课程号=0600201)第四十七张,PPT共九十一页,创作于2022年6月5.2.10 使用量词和谓词的查询例5.55 求必修课程号是0200101的学生中成绩比必修课号是0600201课的最高成绩要高的学生的学号与成绩 select 学号,成绩 from grade where 课程号=0200101 and 成绩all(select 成绩 from grade where 课程号=0600201)等价于select 学号,

30、成绩 from grade where 课程号=0200101 and 成绩 (select max(成绩) from grade where 课程号=0600201)第四十八张,PPT共九十一页,创作于2022年6月5.2.11 集合的并运算SQL支持集合的并(UNION)运算,即可以将两个SELECT 语句的查询结果通过并运算合并成一个查询结果。为了进行并运算,要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域。格式:UNION ALL 说明将两个查询结果合并在一起输出;若无ALL,重复记录将被自动取消,若有ALL表示结果全部合并;第四十九张,PPT共九十一页,创作于20

31、22年6月5.2.11 集合的并运算例5.56 以下结果为系名为自动化系和经济系的教师信息select * from teacher where 系号=(select 系号 from department where 系名=自动化系)union;select * from teacher where 系号=(select 系号 from department where 系名=经济系) 第五十张,PPT共九十一页,创作于2022年6月5.2.11 集合的并运算例5.57 以下结果为“选修课”和“必修课”的课程相关信息。select 课程名,课程号 from course where 课程性质=

32、选修“Unionselect 课程名,课程号 from course where 课程性质=“必修“第五十一张,PPT共九十一页,创作于2022年6月5.2.12 查询结果的输出查询结果的输出去向 Into Array Into Cursor Into Dbf|Table To File To Printer promptInto cursor产生的临时表文件是只读的.dbf文件,当查询结束后该临时文件是当前文件,可像一般的.dbf文件使用,当该临时文件被关闭后,文件将自动被删除。执行完into table 后,系统将在默认路径下建立数据表文件,同时打开该文件,并将其设为当前数据表。与临时表文

33、件不同,该表文件存放在磁盘上,关闭后不会被自动删除。To fileadditive可将查询结果保存到一个文本文件,文本文件的默认扩展名是.txt,若使用additive可将查询结果追加到原文本文件的尾部,否则将覆盖原有文件。第五十二张,PPT共九十一页,创作于2022年6月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)第五十三张,PPT共九十一页,创作于

34、2022年6月5.2.12 查询结果的输出2.将查询结果存放到临时表文件例5.59 将查询到的选修课的课程号和课程名存放在临时.dbf表文件xx中。 select 课程号,课程名 from course where 课程性质=选修“into cursor xx3.将查询结果存放到永久表文件例5.60 将查询到选修课的课程号和课程名存放在永久表文件yy中select 课程号,课程名 from course where 课程性质=“选修“into table yy第五十四张,PPT共九十一页,创作于2022年6月5.2.12 查询结果的输出4.将查询结果存放到文本文件若命令中包含了to子句,但没有

35、包含into子句,则to子句起作用。例5.61 将查询到的选修课的课程号和课程名存放在文本文件 xx中。select 课程号,课程名 from course where 课程性质=选修 to file xx5.将查询结果直接输出到打印机使用子句to printerprompt可以直接将查询结果输出到打印机,若使用了prompt选项,则在打印之前还会打开打印机设置对话框。第五十五张,PPT共九十一页,创作于2022年6月5.3 数据操作SQL的数据操作功能是指对数据库中的数据进行操作的功能,主要包括数据的插入、数据的更新和数据的删除,对应的SQL命令动词分别是INSERT、UPDATE和DELE

36、TE。第五十六张,PPT共九十一页,创作于2022年6月5.3.1.插入数据格式1:INSERT INTO (, ) VALUES (, )功能:向指定的数据表尾部插入一条记录,并用指定的表达式对字段赋值。说明:当对新记录的所有字段都赋值时,可省略字段名。若只对某些字段赋值,即插入的不是完整的记录时,则需要指定要赋值的字段名称。VALUES子句中各个表达式的值为赋给每个字段的值,表达式和对应字段的数据类型、取值范围必须一致。第五十七张,PPT共九十一页,创作于2022年6月5.3.1.插入数据例5.62 在course表中插入记录。Insert into course values(“0600

37、010”,”,48,3,”选修”)& 在course表中插入记录,课程号为“0600010”,课程名为空,学时为48,学分为3,课程性质为“选修”Insert into course(课程号,课程名) values (“0600020”,”信息资源管理“)& 在course表中插入记录,课程号为“0600020”,课程名为”信息资源管理“第五十八张,PPT共九十一页,创作于2022年6月5.3.1.插入数据格式2:Insert Into From Array |MEMVAR功能:向指定的数据表插入一条新记录,插入新记录的字段值来自于数组元素或内存变量。例5.63 输入以下命令并查看输出结果。d

38、imension b(4)b(1)=“2012052101b(2)=张珊 b(3)=女 b(4)=.null.insert into student from array b第五十九张,PPT共九十一页,创作于2022年6月5.3.1.插入数据例5.64 输入以下命令并查看输出结果。学号=“2012052102“姓名=黎明“性别=男“出生日期=1986-09-10insert into student from memvar第六十张,PPT共九十一页,创作于2022年6月5.3.2.更新数据格式:UPDATE SET= WHERE 功能:对于指定表中满足条件的记录,用指定的表达式的值来更新指定

39、的字段。注意:update-sql只能在单一的表中更新记录。第六十一张,PPT共九十一页,创作于2022年6月5.3.2.更新数据例5.65 将course表中所有选修课的学时增加5个学时。Update course set 学时=学时+5 where 课程性质=”选修“第六十二张,PPT共九十一页,创作于2022年6月5.3.3 删除数据格式:DELETE FROM WHERE 功能:对于指定数据表中满足条件的记录进行逻辑删除。说明:where用来指定删除的条件,若不使用where子句,则逻辑删除表中的全部记录。第六十三张,PPT共九十一页,创作于2022年6月5.3.3 删除数据例5.66

40、 逻辑删除course表中课程性质为选修的记录。Delete from course where 课程性质=“选修”第六十四张,PPT共九十一页,创作于2022年6月5.4 数据定义SQL的数据定义功能主要包括数据库、表、视图、存储过程、规则和索引等对象的定义。本节主要介绍使用CREATE TABLE命令建立数据表结构,使用ALTER TABLE命令修改数据表结构以及使用DROP TABLE命令删除数据表。第六十五张,PPT共九十一页,创作于2022年6月5.4.1 表的定义SQL语言提供的定义表的命令是Create Table。在使用这个命令之前,首先要设计好表结构的各种细节,包括: 表名;

41、 各列(字段)的名称、数据类型、宽度; 哪(几)列将组成表的主键; 表中的哪些列必须提供数据;第六十六张,PPT共九十一页,创作于2022年6月5.4.1 表的定义创建表的语句格式如下:Create Table | Dbf Name Free ( (字段宽度, ) Null | Not Null Check ErrorDefault Primary Key | UniqueReferences Tag , . 第六十七张,PPT共九十一页,创作于2022年6月5.4.1 表的定义,Primary Key Tag , ,Unique Tag ,Foreign Key Tag Nodup Refe

42、rences Tag, Check Error ) 功能:创建一个由指定字段组成的数据表。第六十八张,PPT共九十一页,创作于2022年6月5.4.1 表的定义关于Create Table命令说明如下:用CREATE Table命令可以完成表设计器所能完成的所有功能。命令关键字Create Table 与Create DBF功能相同。Name :为所创建的表定义长表名,只有当前有打开的数据库时,才能使用此选项。Free:创建为自由表。第六十九张,PPT共九十一页,创作于2022年6月5.4.1 表的定义 (字段宽度, ) :4个选项依次分别定义字段名、字段类型,数值型和字符型字段的宽度,数值型

43、字段的小数位宽度。Null | Not Null:定义本字段是否可以为空。Check Error:定义本字段的有效性规则和出错时的提示信息字符串。Default :定义字段的默认值。第七十张,PPT共九十一页,创作于2022年6月5.4.1 表的定义Primary Key | Unique:将本字段创建为主索引字段。或将本字段创建为侯选索引字段。References Tag:说明本表与之建立永久联系的父表及父表的索引名。Foreign Key:创建一个外部索引(非主索引),并与一个父表建立关联。Primary Key Tag :以作为索引表达式建立主索引,索引名为第七十一张,PPT共九十一页,

44、创作于2022年6月5.4.1 表的定义,Unique Tag :以作为索引表达式建立候选索引,索引名为,Foreign Key Tag Nodup References Tag:以作为索引表达式建立外(普通)索引,索引名为,同时以该字段作为连接字段,通过引用的建立两数据表之间的永久性关联。, Check Error ):定义表记录的有效性规则和出错信息。第七十二张,PPT共九十一页,创作于2022年6月5.4.1 表的定义例5.67:建立一个自由表KZScreate table kzs free(学号 c(6), 姓名; c(8), 性别 c(2), 年龄 n(3) null, 入学年月 d

45、)第七十三张,PPT共九十一页,创作于2022年6月5.4.1 表的定义例5.68 建立教学管理数据库,再用SQL命令建立学生表、课程表、成绩表。create database kkkcreate table 学生(学号 c(8) primary key, 姓名 c(8) not null, 性别 c(2), 年龄 n(3) check 年龄16 and 年龄0) error 面积应该大于0)第七十六张,PPT共九十一页,创作于2022年6月5.4.1 表的定义create table 职工(仓库号 C(5),职工号 c(5) primary key,工资 i check(工资=1000 an

46、d 工资=5000)error “工资值的范围在1000-5000!“ default 1200,foreign key 仓库号 tag 仓库号 references 仓库1)create table 供应商(供应商号 c(5) primary key,供应商名 c(20),地址 c(20)第七十七张,PPT共九十一页,创作于2022年6月5.4.1 表的定义create table 订购单(职工号 c(5),供应商号 c(5),订购单号 c(5) primary key,订购日期 d,foreign key 职工号 tag 职工号 references 职工1,foreign key 供应商

47、号 tag 供应商号 references 供应商1)第七十八张,PPT共九十一页,创作于2022年6月5.4.2 表结构的修改Alter Table命令用于修改表结构,可以增添字段、删除字段、改变字段的定义、增添或删除约束等。第七十九张,PPT共九十一页,创作于2022年6月5.4.2 表结构的修改Alter Table命令有3种格式。格式1:Alter Table Add | Alter Column (字段宽度, ) Null | Not Null CheckError Default Primary Key | UniqueReferences Tag 第八十张,PPT共九十一页,创作

48、于2022年6月5.4.2 表结构的修改功能:这种格式用来添加字段或修改字段的参数 。可以修改字段的类型、宽度、有效性规则等,但不能修改字段名,不能删除字段及已定义的字段有效性规则。不管是否修改字段类型,必须将字段名和类型一同在命令中列出。第八十一张,PPT共九十一页,创作于2022年6月5.4.2 表结构的修改例5.70 为课程表增加一个新的字段“学时”(数值型,宽度2)。Alter table 课程 add 学时 n(2) check 学时0 error “学时应该大于0例5.71将课程表的“课程名”字段的宽度改为14Alter table 课程 alter 课程名c(14) 例5.72

49、为“订购单”表增加一个新字段“总金额”(货币类型)alter table 订购单 add 总金额 y check 总金额0 error “总金额应该大于0“例5.73 将订购单的“订购单号”字段的宽度改为6alter table 订购单 alter 订购单号 c(6)第八十二张,PPT共九十一页,创作于2022年6月5.4.2 表结构的修改格式2:ALTER TABLE ALTER COLUMN NULL | NOT NULL SET CHECKERROR SET DEFAULT DROP DEFAULTDROP CHECK功能:这种格式主要用于定义、修改和删除字段的有效性规则和默认值定义。第八十三张,PPT共九十一页,创作于2022年6月5.4.2 表结构的修改例5.74 修改“订购单”表字段“总金额”的有效性规则alter table 订购单 alter 总金额 set check 总金额100 error 总金额应该大于100“例5.75 删除“订购单”表字段“总金额”的有效性规则alter table 订购单 alter 总金额 drop check例5.76 修改课

温馨提示

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

评论

0/150

提交评论