08 Visual Foxpro中的结构化查询语言SQL

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章结构化查询语言6.1SQL语言概述(1)关系数据库管理系统包括:OracleSybase、MicrosoftSQLServer、VisualFoxproAccess在关系数据库管理系统中都可以运用SQL语言。(2)SQL语言的优点1)一体化的语言2)完备的查询功能(统计和计算)3)简洁易学(命令少,语法简单)4)非过程化的语言(只需说明要做什么)5)执行方式灵活6)可对视图操作6.2SQL定义功能6.2.1建立表结构createtable|dbf表名1[name长表名][free](字段名1字段类型[(字段宽度[,小数位数])][null][notnull][check逻辑表达式1[error文本信息1]][default表达式1][primarykey|unique][references表名2[tag标识名1]][,字段名2…][,primarykey表达式2tag标识名2|,unique表达式3tag标识名3][,foreignkey表达式4tag标识名4references表名3[tag标识名5]][,check逻辑表达式2[error文本信息2]])|fromarray数组名例:(1)用SQL语句建立一个自由表:会员表,包括字段:编号,姓名,性别,籍贯,电话,入会日期,简历。(2)创建一个数据库:借书记录,在其中创建表:学生,包括字段:学号,姓名,性别,籍贯,班级,电话。并对学号创建主索引和对性别设定取值范围。再创建表:借书,字段包括:书号,书名,借书日期,学号。同时,对书号建主索引和设定默认值“TP39300”,再以表student为父表建立永久关系。·6.2.2修改表的结构命令格式1altertable表名1add|alter[column]字段名字段类型[(字段宽度[,小数位数])][null|notnull][check逻辑表达式[error文本信息]][default表达式][primarykey|unique][references表名2][tag标识名]例:给数据表学生增加字段出生日期,修改学号为数值型命令格式2altertable表名alter[column]字段名[null|notnull][setdefault表达式][setcheck逻辑表达式[error文本信息]][dropdefault][dropcheck]例:给数据表学生的字段出生日期设定条件约束:出生日期1980.01.01,删除性别的约束条件。命令格式3altertable表名1[drop[column]字段1][setcheck逻辑表达式[error信息]][dropcheck][addprimarykey表达式1tag标识1][dropprimarykey][addunique表达式2[tag标识名2]][dropuniquetag标识名3][addforeignkey表达式3tag标识名3references表名2[tag标识名4]][dropforeignkeytag标识名5rename字段名2to字段名3[novalidate]例:对数据表学生的字段电话改名为手机号码,删除字段籍贯。同时为字段姓名创建候选索引。6.2.3建立视图createview视图名asselect语句例:运用SQL语句创建视图,(1)由student中男生记录的学号,姓名,班级组成。(2)由student中借了书的记录的字段学号,姓名和borrow中的字段书名,借书日期组成。6.2.4删除表命令:droptable表名说明:直接从磁盘上删除表,如果是数据库表,应在数据库打开时删除,否则所删除的数据库表的登记信息还保存在数据库中,会造成数据库操作的失败。6.3SQL的操作功能6.3.1插入记录命令格式1:insertinto表名[(字段1,字段2,…)]values(表达式1,表达式1,…)说明:(1)各个表达式的类型、宽度、顺序要与指定的各个字段对应。(2)当插入表的所有字段时,可以不指定字段,但各个表达式须与表的结构吻合。例:在student中插入一条记录,这条记录只包含学号,姓名,班级。命令格式2:insertinto表名fromarray数组名|frommemvar说明:插入一条由数组或内存变量的值组成的记录。例:(1)创建一个一维数组,然后将这个数组的值插入到student表中。(2)创建学号,姓名,班级三个内存变量,然后将这三个内存变量的值插入到student表中6.3.2更新数据update表名set字段名1=表达式1[,字段名2=表达式2…]where(逻辑表达式)]缺省where短语是对所有记录进行数据更新例:对zgda中职称是高工的实发工资用基本工资的1.15倍加80填入。6.3.3删除数据deletefrom表名[where逻辑表达式]缺省where则删除所有记录仅对要删除的记录做上删除标记(逻辑删除)例:删除student表中学金融的学生记录6.4SQL的数据查询功能(核心、重点)SQL查询完成从一个或多个数据表中检索数据的功能.不需要打开表和表所在的数据库。6.4.1SQL查询命令Select[all|distinct][top数值[percent]]检索项[as列名][,检索项[as列名]…]from[数据库名!]表名[[as]逻辑别名][[into目的地]|[tofile文件名]|[toprinter]|[toscreen]][where连接条件[and连接条件…][and|or筛选条件[and|or筛选条件…]]][groupby列名[,列名…]][having筛选条件][orderby排序项[asc|desc][,排序项[asc|desc]…]]基本结构:SELECT…FROM…WHEREWHERE:联接和筛选条件ORDERBY:排序依据GROUPBY:分组依据INTO目的地:查询去向sele……from(最短形式)whereorderbygroupby…havingtop|distinctinto|to6.4.2简单查询1.查询student表中男生记录,结果存入新表nsjl2.查询student表中非北京籍女生的姓名,年龄,籍贯3.查询student表中有哪些班级(不出现重复值)4.查询student表中年纪最小的三名的学生记录6.4.3特殊运算符在SQL查询中,运用一些特殊运算符会使得查询更为灵活。常用的特殊运算符包括:between,in,notin,likeLike是字符串匹配运算符,允许使用通配符%,_,%代表零个或任意多个字符;_代表任意一个字符;5.查询student表中年龄在19-20之间的学生记录,并按出生日期排序6.在student表中查询所有姓“张”的同学的记录。7.在student表中查询姓王,而且姓名有三个字的记录8.在student表中查询所有籍贯为“内蒙古”或“山东”的记录9.查找zgda表中职称不是“工程师”也不是“助工”的记录。6.4.4嵌套查询允许在一个SELECT查询命令的WHERE短语中包含另一个SELECT查询命令。10.在表student和borrow中,按班级次序列出借书超过60天的学生所在班级,学号、姓名。11.在表student和borrow中,查询未曾借过书的男生记录。6.4.5多表查询基于多个相关联数据表的查询,数据表之间的关联通常是按两表中对应字段的共同值建立。12.在表student和borrow中,查询借阅“大学英语”书的学生姓名、性别、借书日期。13.在职工管理数据库中(包含zgda和zjgz),查询出职工最终发的工资是多少(=基本工资+增加工资),并按最终工资从高到低输出编号、姓名、最终工资6.4.6超链接查询基于多个相关联数据表的查询。select……from表1inner|left|right|fulljoin表2on连接条件where筛选条件14.根据表student和borrow,使用内部连接查询借阅“大学英语”书的学生的学号、姓名、性别、借书日期。15.根据表student和borrow,使用左连接查询男生借书者的学号、姓名、书名、借书日期。6.4.7统计查询SQL语句支持对查询的结果进行列的统计输出。AVG()平均值:SUM()求和:COUNT()计数:MIN()最小值:MAX()最大值:16.统计成绩表中数学成绩的最高成绩、外语的最低成绩和计算机的平均成绩。17.统计student表中年龄最小的学生的生日。18.查询student表中籍贯为“山东”的人数。19.查询student表中学生来自几个不同的地区(籍贯)。6.4.8分组查询分组查询是先将表中的记录按某个字段进行分组,然后各个组分别进行查询。20.统计student表中各班级的人数。21.在student表分别统计男女生的最大年龄和最小年龄。22.依据student表中的数据,分别统计各种籍贯的人数,但仅列出该籍贯仅有1人的姓名及籍贯。注意:groupby……[having条件]having子句必须与groupby连用。having与where的区别:where限定输出各记录满足的条件;having限定各分组应满足的条件。

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功