版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章关系数据库SQL语言,返回目录,SQL概述,查询语句SELECTSQL,其他SQL命令,关系数据库SQL语言,例题精解,SQL概述,一、SQL简介 1986年10月,美国ANSI颁布了结构化查询语言SQL(Structured Query Language)的标准。由于它具有诸多优点,备受计算机界欢迎。1989年,国际标准化组织ISO将SQL定为关系数据库的标准语言。1990年,我国颁布了信息处理系统数据库语言SQL,从此SQL成为国家标准。 结构化查询语言SQL是关系数据库的标准语言。目前包括VFP在内的数据库开发软件都支持SQL语言。,上一页,下一页,返回,二、SQL是一种一体化的语
2、言,它包括数据定义、数据查询、数据操纵和数据控制功能,可以完成数据库的全部操作。 三、SQL是一种非过程化的语言,用户在编写程序时,只要指出“干什么”,而不必一步步告诉计算机“怎么干”,SQL将自动完成全部操作。 四、SQL语言非常简洁,但功能很强,一共只有为数不多的几条命令: 1、查询数据命令SELECT-SQL(它是最重要的一条SQL命令),SQL概述,上一页,下一页,返回,2、创建新表命令CREATE TABLE-SQL 3、修改表结构命令ALTER TABLE-SQL 4、追加记录命令INSERT-SQL 5、逻辑删除记录命令DELETE-SQL 6、更新记录数据命令UPDATE-SQ
3、L 7、创建视图命令CREATE VIEW-SQL 五、Visual FoxPro系统与SQL语言的关系 VFP将SQL语言融入其中。这样,VFP中有两套命令系统:一套是Xbase系列的命令系统,另一套是SQL的命令系统。两者语法有所差异。,SQL概述,上一页,下一页,返回,查询语句SELECTSQL,一、SELECT-SQL语句的基本结构 SELECT FROM WHERE 二、SELECT-SQL语句中子句与关键字的含义 1、SELECT子句:指定查询输出的结果。(包括行的范围和列的内容及列标题) ALL:表示查询结果中包括所有满足查询条件的记录,也包括重复值。默认值为ALL。 DISTI
4、NCT:表示在查询结果中内容完全相同的记录只能出现一次。 TOP nExpr PERCENT:限制查询记录的数目为前n条或占记录总数的百分比为n。,上一页,下一页,返回,Alias.Select_Item:指定作为查询结果的列的内容,可以是字段名或表达式;Alias表示表的别名,用于标识不同表的同名字段。 AS Column_name:指定查询结果中列的标题名称。 2、FROM子句:指定查询数据所在的表(数据源)。 TableName:表示作为数据源的表名。 DataName!:如果TableName表不是自由表,且包含它的数据库不是当前数据库,则用DataName!为表文件指定数据库。 Lo
5、cal_Alias:指定本地表的别名。,查询语句SELECTSQL,上一页,下一页,返回,3、JOIN子句:指定多表之间的联接方式。 INNER|LEFTOUTER|RIGHTOUTER|FULLOUTER JOIN:内部|左(外部)|右(外部)|完全(外部)联接。其中OUTER关键字是任选的,它用来强调创建的是一个外部联接。 ON子句:与JOIN子句联用,作为JOIN子句的联接条件(JoinCondition)。 4、WHERE子句:指定多表之间的联接条件(JoinCondition)和查询筛选条件(FilterCondition)。,查询语句SELECTSQL,上一页,下一页,返回,5、O
6、RDER BY子句:指定对查询结果排序的依据。 Order_Item:指定排序依据的列。 ASC指定查询结果以升序排列,DESC指定查询结果以降序排列。 6、GROUP BY子句:指定对查询结果的分组依据。 GroupColumn:指定分组所依据的字段。 HAVING子句:与GROUP BY子句联用,指定对分组结果进行筛选的条件(FilterCondition)。,查询语句SELECTSQL,上一页,下一页,返回,7、TO子句:指定查询结果输出的目标。 浏览窗口:默认输出目标(查询结果显示于浏览窗口中只供浏览,不能修改)。 打印机:TO PRINTER PROMPT。若选用PROMPT,则在开
7、始打印之前,打开打印机设置对话框。 ASCII文件:TO FILE FileName ADDITIVE。将查询的结果写到指定的文本文件。若选用ADDITIVE,则查询结果将追加在原文件的尾部;否则将覆盖原文件。 VFP主窗口:TO SCREEN,查询语句SELECTSQL,上一页,下一页,返回,8、INTO子句:指定查询结果的保存方向。 独立的表:INTO TABLE TableName。 临时表:INTO CURSOR CursorName。 数组:INTO ARRAY ArrayName。 如果同时使用INTO子句和TO子句,则INTO子句优先。 三、单表查询 单表查询的数据源来自于一个表
8、,FROM子句中只出现一个表名,查询语句SELECTSQL,上一页,下一页,返回,1、单表无条件查询 命令格式:SELECT FROM 2、单表条件查询 命令格式:SELECT FROM WHERE 说明:在构造条件表达式时,除了可以使用比较算符和逻辑算符之外,还可以使用SQL专用算符:BETWEEN AND 和 LIKE 。,查询语句SELECTSQL,上一页,下一页,返回,在单表条件查询的SELECT-SQL语句中,条件子句WHERE 有以下几种形式: 1)简单条件查询。 2)复合条件查询。 3)模糊条件查询。 三、对查询结果进行排序 命令格式:SELECT FROM WHERE ; OR
9、DER BY ASC|DESC,查询语句SELECTSQL,上一页,下一页,返回,说明: 1、排序依据 备注型数据和通用型数据不能作为排序依据。排序依据可以是字段名;由AS子句命名的列标题,但不能直接使用表达式和函数;列序号即该列在查询结果中的位置1,2,3。 2、排序方式 ASC表示查询结果按照排序依据项的值升序排列,DESC表示查询结果按照排序依据项的值降序排列。默认排序方式为ASC。,查询语句SELECTSQL,上一页,下一页,返回,3、排序规则 数值按大小顺序,字母按ASCII值排序,汉字按内码值排序,日期按前后排序,逻辑型数据“假”在前“真”在后。 4、多关键字排序 如果有多个排序依
10、据,它们之间用逗号分隔。在排序时,先按第一排序依据排序,第一项值相同的记录,再按第二排序依据排序,依次类推。,查询语句SELECTSQL,上一页,下一页,返回,四、对查询结果进行分组 在SELECT-SQL命令中,使用GROUP BY子句,对查询结果按指定依据进行分组(分类统计),还可以对分组查询的结果按条件进行筛选。 命令格式: SELECT FROM WHERE ; GROUP BY HAVING 说明: 1、分组依据 备注型数据和通用型数据不能作为分组依据。分组依据的可以是字段名或列序号,而不能直接使用表达式和函数。,查询语句SELECTSQL,上一页,下一页,返回,2、分组条件 在GR
11、OUP子句中使用HAVING子句,对分组查询的结果进行筛选。 注意:WHERE子句和HAVING子句的区别:WHERE子句指定哪些记录能参加分组,HAVING子句指定分组后哪些记录能作为查询的最终结果输出。 五、指定查询结果输出的目标 在SELECT-SQL命令中,使用TO子句,可以将查询结果输出到指定目标主窗口、ASCII文件或打印机。,查询语句SELECTSQL,上一页,下一页,返回,六、指定查询结果保存的方向 在SELECT-SQL命令中,使用INTO子句,可以指定查询结果保存的方向表文件、临时表或数组。 INTO子句的格式:INTO TABLE |CURSOR |ARRAY ,查询语句
12、SELECTSQL,上一页,下一页,返回,七、多表查询 两表联接需要条件,即两表间存在关联字段。 1、内联(INNER JOIN)查询 从相关的两个表中选取满足联接条件的记录,联接成新的记录作为查询输出。 2、左联查询(LEFT JOIN) 从表1中选取所有记录,按联接条件与表2中相关的记录联接成新的记录作为查询输出,若表2中不存在相关联的记录,则查询输出中相应字段的值为.NULL.。,查询语句SELECTSQL,上一页,下一页,返回,3、右联(RIGHT JOIN)查询 从表2中选取所有记录,按联接条件与表1中相关的记录联接成新的记录作为查询输出,若表1中不存在相关联的记录,则查询输出中相应
13、字段的值为.NULL.。 4、全联(FULL JOIN)查询 从相关的两表中选取所有记录,按联接条件联接成新的记录作为查询输出,若表1或表2中不存在相关联的记录,则查询输出中相应字段的值为.NULL.。,查询语句SELECTSQL,上一页,下一页,返回,5、多表(三个以上)联接查询 三个以上多表联接查询的方法是:通过关联字段,将多个表两两联接起来,联接的条件是: ON .=. AND .=. AND 八、嵌套查询 1、嵌套查询的含意:嵌套查询是指在SELECT-SQL命令中包含了另一个SELECT-SQL命令。,查询语句SELECTSQL,上一页,下一页,返回,2、实现嵌套查询的命令格式: S
14、ELECT FROM WHERE IN; (SELECT FROM WHERE ) 3、说明: 1)命令中“IN”是一个关系运算符,表示表1中关联字段的值必须与从表2查询出的关联字段中的一个的值相匹配。 2)命令执行过程:首先执行子查询,然后执行外查询。,查询语句SELECTSQL,上一页,下一页,返回,九、自联查询 1、自联查询的含意:在SELECT-SQL命令将一个关系与其自身进行联接。为了区分内外层查询,在FROM子句中为内外层关系指定不同的别名。 2、实现自联查询的命令格式: SELECT FROM WHERE =; (SELECT FROM ; WHERE ),查询语句SELECTS
15、QL,上一页,下一页,返回,十、集合的并运算 1、命令格式:SELECT FROM WHERE ; UNION; SELECT FROM WHERE 2、功能:将两个SELECT-SQL语句的查询结果合并成一个查询结果输出。 3、说明:在两个SELECT-SQL语句中,查询结果中的字段个数、字段的名、型和宽都要相同,即只有两个结构相同的查询结果才能进行并运算。,查询语句SELECTSQL,上一页,下一页,返回,其他SQL命令,一、定义功能的SQL语句 1、定义表结构的完整命令 命令格式:CREATE TABLE|DBF NAME FREE ; ( ( ,) ; CHECK ERROR ; SE
16、T CHECK ERROR ; DEFAULT ; PRIMARY KEY|UNIQUE 3、删除表文件 1)命令格式:DROP TABLE 2)说明:若要删除数据库中的表,该数据库应是打开的当前数据库。,其他SQL命令,上一页,下一页,返回,4、定义视图 命令格式:CREATE VIEW AS 5、删除视图 命令格式:DROP VIEW VALUES ( ,) 2)命令格式2: INSERT INTO FROM ARRAY | FROM 2、更新记录 命令格式: UPDATE ; SET =,=, ; WHERE ,其他SQL命令,上一页,下一页,返回,3、逻辑删除记录 1)命令格式:DEL
17、ETE FROM WHERE 2)说明:若缺省WHERE子句,则默认所有记录。,其他SQL命令,上一页,下一页,返回,例题精解,【例51】设“图书管理”数据库有如下三个表: 图书(编号 C(6), 分类号 C(8), 书名 C(16), 作者 C(6), 出版单位 C(20), 单价 N(6,2)) 读者(借书证号 C(4), 单位 C(8), 姓名 C(8), 性别 C(2), 职称 C(6), 地址 C(20)) 借阅(借书证号 C(4),编号 C(6), 借书日期 D(8)) 要检索借阅网络技术基础的借书证号,正确的SQL语句是: SELECT 借书证号 FROM 借阅 WHERE 编号
18、=( )。,下一页,返回,A)(SELECT 借书证号 FROM 图书 WHERE 书名=网络技术基础) B)(SELECT 编号 FROM 图书 WHERE 书名=网络技术基础) C)(SELECT 借书证号 FROM 借阅 WHERE 书名=网络技术基础) D)(SELECT 编号 FROM 借阅 WHERE 书名=网络技术基础) 解:本题是嵌套查询。内层查询找出书名为“网络技术基础”的图书的编号,并作为外层查询的条件。 答:52B,上一页,下一页,返回,【例52】在“图书管理”数据库中,求出各单位借阅图书的人次。正确的SQL语句是( )。 A)SELECT 单位, COUNT(借阅.借书
19、证号) FROM 借阅,读者 WHERE借阅.借书证号=读者.借书证号 GROUP BY 单位 B)SELECT 单位, SUM(借阅.借书证号) FROM 借阅,读者 WHERE 借阅.借书证号=读者.借书证号 GROUP BY 单位 C)SELECT 单位, COUNT(借阅.借书证号) FROM 借阅,读者 WHERE 借阅.借书证号=读者.借书证号 ORDER BY 单位 D)SELECT 单位, COUNT(借阅.借书证号) FROM 借阅,读者 WHERE 借阅.借书证号=读者.借书证号 HAVING 单位 解:本题使用联接查询和分组查询。“各单位”即按单位分组,通过“GROUP
20、BY 单位”子句来实现。“人次”通过计数函数COUNT(借阅.借书证号)来实现。若将题目中的借阅图书的“人次”改为“人数”,则要添加DISTINCT短语以去掉重复值。 答:53A,上一页,下一页,返回,【例53】在“图书管理”数据库中,查询借书证号为0001的读者的姓名和所借的图书的书名。正确的SQL语句是( )。 SELECT 姓名,书名 FROM 借阅,图书,读者 WHERE 借阅.借书证号=0001 AND ; A)图书.编号=借阅.编号 AND 借阅.借书证号=读者.借书证号 B)图书.分类号=借阅.分类号 AND 借阅.借书证号=读者.借书证号 C)读者.编号=借阅.编号 AND 借阅.借书证号=读者.借书证号 D)图书.编号=借阅.编号 AND 借阅.书名=读者.书名 解:本题是多表联接查询。“借阅”作为纽带表,通过公共属性“编号”和“借书证号”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硅料腐蚀工岗位安全评优考核试卷含答案
- 智能汽车维修工安全培训效果知识考核试卷含答案
- 轨道作业车司机岗前规程考核试卷含答案
- 露天矿轮斗挖掘机司机操作安全强化考核试卷含答案
- 砂石骨料生产工岗位复测考核试卷含答案
- 排岩机操作工安全素养评优考核试卷含答案
- 2026年小学成语故事《狗尾续貂》优劣辨析教学教案
- 2026年小学成语故事《打草惊蛇》处事谋略公开课教案
- 银行从业资格银行业法律法规与综合能力讲义及模拟试题
- 审计师(初级)审计相关基础知识模拟试卷含答案
- 危险性较大的分部分项工程监理实施细则
- 2026年秋季小学道德与法治四年级上册(新教材)教学计划附教学进度表
- 2026秋小学岭南版美术三年级上册(新教材)教学计划附教学进度表
- 2026年国家能源集团招聘笔试题库及答案真题题库
- 2026年非公企业党建基础知识考试试题
- 2026年秋季开学新教师校园安全责任入职培训
- 2026年监理员考试题库及答案
- 2025年秋五四制六年级上册道德与法治全册知识点
- 2026年全国软件水平考试之中级系统集成项目管理工程师考试绝密预测题(详细参考解析)
- 施工工地扬尘治理方案及施工方法
- 新学期(2026年秋)高一历史教学工作计划
评论
0/150
提交评论