




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 关系数据库标准语SQL,http:/V/vfp,VFP课程建设组,目录,http:/V/vfp,VFP课程建设组,4.1 SQL语言概述,SQL全称是“结构化查询语言(Structured Query Language)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是Oracle,Sybase, Informix, SQL server这些大型的数据库管理系统,还是像Visual FoxPro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。,http:/V/vfp,VFP课程建设组,4.1.1 SQL语言的特点,1综合统一 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。,2非过程化语言 SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。,3面向集合的操作方式 SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。,http:/V/vfp,VFP课程建设组,4.1.1 SQL语言的特点,5语言简捷 SQL语言功能极强,但又十分简洁,只用9个动词即可完成对数据的操纵、数据的定义及数据的控制等功能。 (1)数据操纵:SELECT、INSERT、UPDATE、DELETE (2)数据定义:CREATE、DROP、ALTER (3)数据控制:GRANT,REVOKE,4一种语法结构有两种使用方式 SQL语言既是自含式语言,又是嵌入式语言。且在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。,http:/V/vfp,VFP课程建设组,4.1.2 SQL语言的功能,查询是SQL语言的重要组成部分,同时SQL还包括数据定义、数据操纵和数据控制功能等部分。SQL已经成为关系数据库的标准查询语言。 1数据查询功能 包括单表查询、多表查询、集合查询等。 2数据定义功能 包括定义、删除、修改表等操作。 3数据操纵功能 包括数据插入、数据更新、数据删除等操作。 4数据控制功能 包括数据保护及事务管理等操作。,http:/V/vfp,VFP课程建设组,4.2 查询功能,数据查询是SQL语言的重要部分,通过Select语句来实现,下面首先介绍Select语句的格式,然后通过实例具体说明其使用方法。 Select语句的基本格式: Select列名表; From表名; Where条件表达式; Group by ; Having ; Order by排序项目ASC/DESC,ASC/DESC.;,http:/V/vfp,VFP课程建设组,4.2 查询功能,说明: (1)Select子句的列名表:指出要显示的列的字段名,可选一个或多个字段,多个字段间用逗号分开,“*”可以用来表示某一个数据表中的所有字段。 (2)From子句的表名:指出在查找过程中所涉及的表,可以是单个表,也可以是多个表,多个表之间应用逗号分开。 (3)Where子句的条件表达式:指出所需数据应满足的条件,条件表达式中必须用到比较运算符或逻辑运算符(如:=、 !=等)。 (4)Group by 子句:说明对数据如何进行分组,其Having则表示分组满足的条件,与Group by一起使用。 (5)Order by排序项目:指出查询结构的输出顺序,其中ASC为升序,DESC为降序。,http:/V/vfp,VFP课程建设组,4.2.1 简单查询,简单的SQL查询只包括Select子句、FROM子句。 【例4-1】从“学生成绩数据库”中的student表查询所有学生的情况。 在“命令”窗口中写下查询语句: Select * From student 如图4-2所示,http:/V/vfp,VFP课程建设组,4.2.1 简单查询,【例4-2】从“学生成绩数据库”中的student表查询所有学生的学号、姓名和系科的情况。 在“命令”窗口中写下查询语句: Select 学号,姓名,系科 From student,http:/V/vfp,VFP课程建设组,4.2.2 条件查询,WHERE子句设置查询条件,过滤掉不需要的数据行。 WHERE子句可包括各种条件运算符: 1比较运算符(大小比较):、=、=、!、!=10 AND age=30 3列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2) NOT IN (项1,项2) 。如country IN (Germany,China) 4模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE 。 5空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL。 6逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR。,http:/V/vfp,VFP课程建设组,4.2.2 条件查询,【例4-3】从“学生成绩数据库”中的student表查询所有系科为计算机的学生的学号、姓名、性别及系科的情况。 在“命令”窗口中写下查询语句: Select 学号,姓名,性别,系科 From student Where 系科=“计算机”,http:/V/vfp,VFP课程建设组,4.2.2 条件查询,【例4-4】从“学生成绩数据库”中的student表查询总分在550至630之间的学生学号、姓名、系科、总分的情况,并按总分的升序排列。 在“命令”窗口中写下查询语句: Select 学号,姓名,系科,总分 From student Where 总分Between 550 and 630 Order by 总分,http:/V/vfp,VFP课程建设组,4.2.3 连接查询,通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型 数据库管理系统的一个标志。 1简单连接查询 【例4-5】从“学生成绩数据库”中的student表和assign表查询所有学生的姓名、性别、院系、课程号及成绩。 在“命令”窗口中写下查询语句: Select 姓名,性别,系科,课程号,成绩 From student,assign Where student.学号= assign.学号 如图4-6所示,http:/V/vfp,VFP课程建设组,4.2.3 连接查询,【例4-6】从“学生成绩数据库”中的student表、assign表及course表查询所有学生的学号、姓名、课程号、课程名和类别的情况。 在“命令”窗口中写下查询语句: Select student.学号,姓名,assign.课程号,课程名,类别 From student,assign,course Where student.学号= assign.学号 and assign.课程号= course.课程号 如图4-7所示,http:/V/vfp,VFP课程建设组,4.2.3 连接查询,2运用连接运算符进行连接查询 连接查询分为:内连接、外连接和交叉连接。 (1)内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。 (2)外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN) 和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。 (3)交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的 数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。,http:/V/vfp,VFP课程建设组,4.2.3 连接查询,【例4-7】从“学生成绩数据库”中的student表和assign表查询所有学生的姓名、性别、系科、课程号及成绩。我们使用连接运算符来实现。 在“命令”窗口中写下查询语句: Select 姓名,性别,系科,课程号,成绩 From student inner join assign on student.学号= assign.学号,其效果与如图4-6所示一样。,http:/V/vfp,VFP课程建设组,4.2.4 嵌套查询,在一个Select语句中包含多个Select语句为嵌套查询。下面举例说明: 【例4-8】从“学生成绩数据库”查询课程号A001成绩大于85分的学生学号,姓名及系科的情况。 在“命令”窗口中写下查询语句: Select学号,姓名,院系 From student Where 学号 In(Select 学号 From assign Where 课程号=“A001” and 成绩85) 如图4-8所示,http:/V/vfp,VFP课程建设组,4.2.5 计算与分组查询,1计算查询 常用计算查询的函数有Count(计数);Sum(求和);Avg(平均值);Max(最大值);Min(最小值)等。它们可以使用在Select语句中。 【例4-9】从“学生成绩数据库”查询数据表Student中“系科”的个数。 在“命令”窗口中写下查询语句: Select Count(Distinct 系科) From Student 如图4-9所示,http:/V/vfp,VFP课程建设组,4.2.5 计算与分组查询,【例4-10】从“学生成绩数据库”查询数据表Student学生总分的平均值,最大值和最小值。 在“命令”窗口中写下查询语句: Select Avg(总分) AS 平均值, Max(总分) AS 最大值, Min(总分) AS 最小值 From Student,如图4-10所示。 2分组查询 根据关键字的值对数值属性的值进行汇总,使用Group By 字句实现。 【例4-11】从“学生成绩数据库”查询数据表Student中男学生和女学生总分平均值的情况。 在“命令”窗口中写下查询语句: Select 性别,Avg(总分) AS 平均值From Student Group By 性别,如图4-11所示。,http:/V/vfp,VFP课程建设组,4.2.5 计算与分组查询,【例4-12】从“学生成绩数据库”中查询每位学生课程的平均成绩。 在“命令”窗口中写下查询语句: Select 姓名,Avg(成绩) AS 课程平均值From student,assign Where student.学号= assign.学号 Group By 姓名,如图4-12所示。 【例4-13】从“学生成绩数据库”中查询每位学生课程的平均成绩且大于80分的情况。 在“命令”窗口中写下查询语句: Select 姓名,Avg(成绩) AS 课程平均值From student,assign Where student.学号= assign.学号,Group By 姓名 Having Avg(成绩)80,如图4-13所示。,http:/V/vfp,VFP课程建设组,4.2.6 空值查询,空值不是空格或0,而是表示数据值不可用,用NULL值表示。SQL可以使用空值,利用它进行相应查询。 【例4-14】从“学生成绩数据库”查询数据表Student中系科为空的学生情况。 在“命令”窗口中写下查询语句: Select * From Student Where 系科 is null,http:/V/vfp,VFP课程建设组,4.3 操作功能,SQL的操作功能是对数据进行修改,包括数据的插入、数据的更新及数据的删除等操作。,http:/V/vfp,VFP课程建设组,4.3.1 数据插入,SQL语言中用INSERT语句向表或视图中插入新的数据行。 INSERT语句的语法格式为: INSERT INTO table_source column_list VALUES (DEFAULT | constant_expression ,n) 其中,column_list参数为新插入数据行中一列或多列列名列表,它说明INSERT 语句只为指定列插入数据。在给表或视图中部分列插入数据时,必须使用列名列表方式指出这部分列名。,http:/V/vfp,VFP课程建设组,4.3.1 数据插入,【例4-15】在数据表Student中插入一个学生的记录:学号2008021,姓名 郭襄,性别 女,系科 计算机,出生日期 1988年5月1日。 在“命令”窗口中可用如下语句: Insert Into student(学号,姓名,性别,出生日期,系科); Values(“2008021”,” 郭襄:, “女”,05/01/88,” 计算机”),http:/V/vfp,VFP课程建设组,4.3.2 数据更新,UPDATE语句用于修改表中数据,该语句的语法格式为: UPDATE table_name SET column_name1=variable1,column_name2=variable2 WHERE search_conditions 其中SET子句指出表中被修改的列或变量,以及它们的新值。column_name为被修改的列名。,http:/V/vfp,VFP课程建设组,4.3.2 数据更新,【例4-16】在数据表Student中为所有学生的总分增加10分。 在“命令”窗口中可用如下语句: Update student Set 总分=总分+10 【例4-17】在数据表Student中为计算机系的学生其总分增加10分。 在“命令”窗口中可用如下语句: Update student Set 总分=总分+10 Where 系科=”计算机”,http:/V/vfp,VFP课程建设组,4.3.3 数据删除,DELETE语句可以删除表中的数据。其DELETE语句的语法格式为: DELETE FROM table_name | view_name WHERE conditions DELETE语句的结构与UPDATE语句有些类似,其中也包含FROM子句和WHERE子句。WHERE子句为数据删除指定条件。不使用WHERE子句时,DELETE语句将把有或视图中所有的数据删除。,http:/V/vfp,VFP课程建设组,4.3.3 数据删除,【例4-18】永久删除数据表Student学号为2008015的记录。 在“命令”窗口中可用如下语句: Delete From student Where 学号=”2008015” Pack Pack对当前表中具有删除标记的所有记录做永久的删除。,http:/V/vfp,VFP课程建设组,4.4 定义功能,SQL的定义功能是对表进行修改,包括对表结构进行创建、修改表结构以及删除表等操作。,http:/V/vfp,VFP课程建设组,4.4.1 表的定义,一般格式如下: Create Table ( 列级完整性约束条件 , 列级完整性约束条件. ,); 其中: 是所要定义的基本表的名字,最好能表达表的应用语义 是由一个或多个属性(列)组成。 建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。,http:/V/vfp,VFP课程建设组,4.4.1 表的定义,【例4-19】建立一个自由表“学生”,包括:学号、姓名、性别、出生日期、是否党员、籍贯和简历。 在“命令”窗口中可用如下语句: Create Table 学生(学号 C(8), 姓名 C(8), 性别 C(2), 出生日期 D, 是否党员 L, 籍贯 C(8), 简历 M) 【例4-20】用SQL命令建立Student表。 在“命令”窗口中可用如下语句: Open DataBase 学生成绩数据库 Create Table student(学号 C(8), 姓名 C(8), 性别 C(2), 出生日期 D, 系科 C(20), 统招否 L, 总分N(6,1), 备注 M, 照片 G),http:/V/vfp,VFP课程建设组,4.4.2 表结构的修改,一般格式为: Alter Table Alter Add 完整性约束 Drop Modify Add Prima
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热电联产系统集成方案
- 校园法制安全教育方案
- 工业园区储能与绿色供电结合技术方案
- 风电场大件设备运输方案
- 热力输送管道防腐技术方案
- 怎么加强校园安全教育
- 政治中考试题卷子及答案
- 政治近年高考试题及答案
- 校园安保安全教育内容
- 王者荣耀城市活动方案策划
- 6.1 包饺子(课件)北师大版三年级数学上册
- 鱼道运行管理办法
- 桥梁拆除施工质量保证技术措施
- 人体工程学-第五章-人体工程学与室外环境设施设计
- 2025-2030年中国象棋行业发展分析及前景趋势与投资风险研究报告
- 抖音员工合同协议书模板
- 《王戎不取道旁李》教案
- 专项安全施工方案监理
- 股东出资协议书合同
- GB/T 27060-2025合格评定良好实践指南
- DB45∕T 2789-2023 壮医药线点灸治疗护理技术操作规范
评论
0/150
提交评论