版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1SQL概述SQL的全称为StructuredQueryLanguage(结构化查询语言),是一种通用的关系数据库编程语言,专门用于存取、查询、更新和管理关系数据库中的数据,由IBM公司在20世纪70年代末开发,随着各种大型关系数据库系统的相继出现,得以广泛应用,并逐步成为通用的、综合的、功能极强的关系数据库标准语言。5.1.1SQL的特点SQL语言简单易学、风格统一,其主要特点如下。下一页返回5.1SQL概述1.一体化的特点SQL为许多任务提供了命令,包括查询数据,在表中插入、修改和删除记录,建立、修改和删除数据对象,控制对数据和数据对象的存取,保证数据库的一致性和完整性等。2.语言简洁,易学易用SQL的语法接近英语口语,利用几个简单的英语单词的组合就可以完成所有的功能,因而容易学习,容易使用。3.高度非过程化SQL完成一项功能的操作均只用一条语句完成,只要求用户提出干什么,条件范围是什么,而无须指出具体每一步怎么干,使程序设计简化且不易出错。上一页下一页返回5.1SQL概述4.所有关系型数据库的公共语言由于所有主要的RDBMS都支持SQL语言,用户可将使用SQL的技术从一个RDBMS转移到另一个RDBMS,所以,用SQL编写的程序都是可以移植的。5.嵌入式语言SQL是应用于数据库的语言,本身不是独立的程序设计语言,不能进行屏幕界面设计、控制打印格式,因此通常将SQL语言嵌入到程序设计语言(如VisualFoxPro、VisualBasic、C语言等)中使用。上一页下一页返回5.1SQL概述5.1.2SQL语句的分类SQL语句按照用途可以分为如下3类:1.数据定义语言DDL(DataDefinitionLanguage)DDL用来定义和管理数据库中的对象,如数据库、表、视图等。DDL通常包括每个对象的CREATE、ALTER、DROP命令。例如,CREATETABLE、ALTERTABLE和DROPTABLE语句分别用于创建表、修改表属性和删除表。上一页下一页返回5.1SQL概述2.数据库操纵语言DML(DataManipulationLanguage)DML用来检索和操作数据,它使用SELECT、INSERT、UPDATE、DELETE语句,从而允许用户查询数据、插入数据行、修改数据表中的数据、删除表中的数据行。3.数据控制语言DCL(DataControlLanguage)DCL用来管理对数据库和数据库对象的权限。本章主要介绍利用SQL语句完成各类查询、表定义、表结构的维护、表中记录操作等内容。上一页返回5.2SQL数据定义语句通过SQL语言的数据定义功能,可以完成表、视图、索引的创建和修改。本节只介绍创建表、修改表和删除表的数据定义语句。5.2.1表的定义SQL语言使用CREATETABLE语句定义表。其一般格式如下:CREATETABLE<表名>(<列名1><数据类型>[<列级完整性约束条件>][,<列名2><数据类型>[<列级完整性约束条件>]]…[,<表级完整性约束条件>])下一页返回5.2SQL数据定义语句5.2.2表的修改与删除1.表的修改在数据库的实际应用中,随着应用环境和需求的变化,经常要修改表的结构,包括修改属性列的类型精度、增加新的属性列或删除属性列、增加新的约束条件或删除原有的约束条件等。SQL通过ALTERTABLE命令对表进行修改。其一般格式如下:ALTERTABLE<表名>[ADD<新列名><列数据类型>][DROPCOLUMN<列名>][ALTERCOLUMN<列名><新的数据类型>]上一页下一页返回5.2SQL数据定义语句2.表的删除当数据库某个表不再使用时,可以将其删除。当一个表被删除后,该表中的所有数据连同该表建立的索引都会被删除。删除表的基本格式为.DROPTABLE<基本表名>上一页返回5.3SQL数据查询语句建立数据库的目的主要就是查询数据。SQL数据查询是SQL语言中最重要、最丰富也是最灵活的内容。SQL语言提供了SELECT语句进行数据库中数据的查询。5.3.1SELECT语句的格式SQL语言提供SELECT语句进行数据库的查询,其基本格式如下:SELECT<字段名或表达式1>,<字段名或表达式2>,…,<字段名或表达式n>FROM<表名或视图名>WHERE<条件表达式>下一页返回5.3SQL数据查询语句基本格式包括了3个字句:SELECT、FROM、WHERE,其中:(1)SELECT子句:对应关系代数中的投影运算,用于列出查询结果的各属性。(2)FROM子句:对应关系代数中的广义笛卡儿乘积,用于列出被查询的关系:基本表或视图。(3)WHERE子句:对应关系代数中的选择谓词,这些谓词涉及FROM子句中的关系的属性,用于指出连接、选择等运算要满足的查询条件。其功能是:从FROM子句指定的关系(基本表或视图)中,取出满足WHERE子句条件的记录,最后按SELECT的查询项形成结果表。上一页下一页返回5.3SQL数据查询语句另外,SQL数据查询除了上述3个子句,还可以有ORDERBY子句、GROUPBY子句,以及DISTINCT、HAVING等短语。SQL数据查询的一般格式如下:SELECT[ALL|DISTINCT]<列名或表达式1>[别名1][,<列名或表达式2>[别名2]]…FROM<表名或视图名>[表别名1][,<表名或视图名>[表别名2]]…[WHERE<条件表达式>][GROUPBY<列名1>][HAVING<条件表达式>][ORDERBY<列名2>][ASC|DESC][TOP数值表达式[PERCENT]]上一页下一页返回5.3SQL数据查询语句5.3.2简单查询简单查询是指只含有SELECT子句和FROM子句的查询,适合于记录很少的查询。它的基本格式如下:SELECT[ALL|DISTINCT]<列名或表达式>[别名][,<列名或表达式>[别名]]…FROM<表名或视图名>[表别名1][,<表名或视图名>[表别名2]]…上一页下一页返回5.3SQL数据查询语句1.查询指定列【例5.6】查询所有员工的员工编号、姓名、性别。SELECT员工编号,姓名,性别FROMemployees;查询结果集合中数据列的排列顺序与选择列表中所指定的列名排列顺序相同。2.查询全部列当所查询的列是全部列时,可以使用“*”来表示全部列。【例5.7】查询所有员工的情况。SELECT
FROMemployees查询结果集合中数据列的排列顺序只能按表中定义列的顺序显示。上一页下一页返回5.3SQL数据查询语句3.消除重复的记录当查询的结果只包含表中的部分列时,结果中可能会出现重复列,使用DISTINCT保留字可以使重复列值只保留一个。4.查询列中含有简单计算SELECT子句的目标列中可以包含带有+、-、×、/的算术运算表达式,其运算对象为常量或记录的属性。上一页下一页返回5.3SQL数据查询语句5.更改列标题使用SQL显示查询结果时,默认使用属性名作为列标题,用户通常不容易理解属性名的含义,要使这些列标题能更好地便于用户理解,可以为列标题设置别名。在选择列表中,可重新指定列标题。定义格式如下:列标题=列名或列名列标题上一页下一页返回5.3SQL数据查询语句5.3.3使用WHERE子句查询特定的记录一般情况下,数据库表中的数据量都非常大,显示表中所有的行是没有必要的,因此,在查询的时候可以使用WHERE子句给出查询条件表达式,从而根据查询条件选择特定的记录,这里的查询条件表达式可以是关系表达式、逻辑表达式或特殊表达式。1.使用关系表达式的查询使用关系运算符的条件表达式的一般形式为:<列名><关系运算符><列名>或<列名><关系运算符>常量值上一页下一页返回5.3SQL数据查询语句2.使用逻辑表达式的查询用逻辑运算符将表达式连接在一起即为逻辑表达式,使用逻辑表达式可以描述复杂的查询条件。逻辑表达式的格式为:[<关系表达式>]<逻辑运算符><关系表达式>3.使用特殊表达式的查询ANSI标准SQL允许在WHERE子句中使用一些特殊的运算符。表5-1中列出了常用特殊运算符的含义。上一页下一页返回5.3SQL数据查询语句4.字符串比较SQL提供了一种简单的模式匹配功能用于字符串比较,可以使用LIKE和NOTLIKE来实现类似'='和'<>'的比较功能,但前者还可以支持模糊查询条件。例如,不知道员工的全名,但知道员工姓王,就能查询出所有姓王的员工情况。基本格式为:<列名>LIKE|NOTLIKE<字符串常数>上一页下一页返回5.3SQL数据查询语句5.3.4带排序的查询SELECT语句的ORDERBY子句可以使输出的查询结果按照要求的顺序排列,ORDERBY子句基本格式是:ORDERBY<列名1>[ASC|DESC],<列名2>[ASC|DESC],…,[TOP数值表达式[PERCENT]]上一页下一页返回5.3SQL数据查询语句5.3.5多表连接查询前面的查询只涉及一个表,在多数情况下,用户常常需要同时从多个表中找出自己想要的数据,这就涉及多个数据表的查询。多个表的查询是通过所谓的连接查询来完成的。连接是根据各个表之间的逻辑关系从两个或多个表中查询数据,查询结果通常是含有参加连接运算的两个表或多个表中的指定列形成的表。连接可以在SELECT语句的FROM子句或WHERE子句中建立,在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来,所以在Transact-SQL中推荐使用在FROM子句中指出连接的方法。在多表查询中SELECT子句中的列名表达式要用“表名.列名”的格式指出。上一页下一页返回5.3SQL数据查询语句1.在WHERE子句中进行多表连接基本格式:WHERE[表名1.]<列名1><关系运算符>[表名2.]<列名2>WHERE子句中用来连接两个关系的条件称为连接条件。2.在FROM子句中进行多表连接FROM子句的连接语法格式为:FROM<表1><连接类型><表2>ON<连接条件>其中<表1>、<表2>指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。上一页下一页返回5.3SQL数据查询语句ON<连接条件>子句指出连接条件,它由被连接表中的列和关系运算符、逻辑运算符等构成。连接类型可分为四种:内部连接、左连接、右连接和完全连接。(1)内连接(INNERJOIN,其中INNER可省)。内连接(INNERJOIN)使用"ON<连接条件>"指定的条件进行表间某些列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。(2)左连接。左连接又称为左外连接(LEFTOUTERJOIN或LEFTJOIN),左外连接不只列出与连接条件相匹配的行,而且列出左表中所有符合搜索条件的数据行。上一页下一页返回5.3SQL数据查询语句(3)右连接。右连接又称为右外连接(RIGHTOUTERJOIN或RIGHTJOIN),右外连接不只列出与连接条件相匹配的行,而且列出右表中所有符合搜索条件的数据行。(4)完全连接。完全连接又称全外连接(FULLOUTERJOIN或FULLJOIN),连接时不只列出与连接条件相匹配的行,而且列出两个表中所有符合搜索条件的数据行。上一页下一页返回5.3SQL数据查询语句5.3.6带聚合函数的查询为了增强查询功能,SQL提供了许多聚合函数。常用的聚合函数有:COUNT(
)统计查询结果中的记录个数COUNT(<列名>)统计查询结果中一个列上值的个数MAX(<列名>)计算查询结果中一个列上的最大值MIN(<列名>)计算查询结果中一个列上的最小值SUM(<列名>)计算查询结果中一个数值列上的总和AVG(<列名>)计算查询结果中一个数值列上的平均值上一页下一页返回5.3SQL数据查询语句5.3.7分组查询带有GROUPBY的查询称为分组查询。GROUPBY子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据进行规定的操作。分组查询一般和查询列的聚合函数一起使用,当使用GROUPBY子句后所有的聚合函数都将是对每一个组进行运算,而不是对整个查询结构进行运算。上一页下一页返回5.3SQL数据查询语句5.3.8指定查询结果的输出去向在SELECT语句中可以使用INTO<目标>|TOFILE<文件名>子句指定查询结果的输出去向,格式为:INTO<目标>|TOFILE<文件名>[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN上一页返回5.4SQL数据更新语句5.4.1插入数据当表建立以后,就可以往表中插入数据了,SQL中使用INSERT语句插入数据。INSERT语句的格式为:INSERTINTO<表名>[(<字段名1>,<字段名2>,…,<字段名n>)];VALUES(<列值1>,<列值2>,…,<列值n>)其中,<表名>指定要插入记录的表;<字段名1>,<字段名2>,…,<字段名n>为要添加字段值的字段名序列;VALUES后则一一对应要添加的字段的值。若各列名省略,则新插入的记录必须按定义表时的字段顺序指定表的每个字段值。下一页返回5.4SQL数据更新语句5.4.2修改数据SQL中修改数据使用UPDATE语句,用以修改满足指定条件记录的指定列值。满足指定条件的可以是一个记录,也可以是多个记录。UPDATE语句一般格式为:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…;[WHERE<条件>]对指定表中满足条件的记录,用表达式值作为对应列的新值,其中,WHERE<条件>是可选的,如不选,则更新表中的所有记录的对应列。上一页下一页返回5.4SQL数据更新语句5.4.3删除数据DELETE语句用于删除每一个表中的一行或多行记录,要注意区分DELETE语句与DROP语句。DROP是数据定义语句,作用是删除表或索引的定义,当删除表定义时,连同表所对应的数据都被删除;DELETE是数据操纵语句,只是删除表中的某些记录,不能删除表的定义。DELETE语句的一般格式为:DELETEFROM<表名>[WHERE<条件>]其中,WHERE<条件>是可选的,如不选,则删除表中所有记录。上一页返回5.5查询与视图设计器5.5.1查询设计器SELECT语句可以在命令窗口直接执行,也可以编写在程序中,以完成相应查询任务,但是编写SELECT语句对于初学者来说比较困难。除了用SELECT-SQL命令创建查询外,在VisualFoxPro中还可以使用查询设计器创建查询,可视化地设计SELECT命令。使用查询设计器的基本步骤如下:打开查询设计器→添加创建查询所基于的数据表→定义输出内容→设置连接、筛选、排序、分组条件→选择查询结果的输出形式→保存查询文件→运行查询(DO<查询文件全名>)。下一页返回5.5查询与视图设计器1.打开查询设计器可以用如下几种方法打开查询设计器。方法1:从文件菜单或工具栏上单击“新建”→“查询”→“新建文件”→进入“查询设计器”。方法2:当所用到的数据表已在项目中时,从项目管理器窗口中单击“数据”→“查询”→“新建”→“新建查询”→进入“查询设计器”。方法3:从命令窗口中输入命令:创建新查询输入:createquery查询文件名修改已存在的查询:modifyquery查询文件名上一页下一页返回5.5查询与视图设计器2.添加创建查询所基于的数据表进入查询设计器后会出现如图5-5所示的添加表或视图窗口,要求用户添加创建查询所基于的数据表。根据需要添加相应的表或视图,完成SELECT命令中的from子句表达式的操作。打开的查询设计器,如图5-6所示,并且在系统菜单中出现“查询”菜单。上一页下一页返回5.5查询与视图设计器“查询设计器”中有如下几个选项卡:(1)字段。在“字段”选项卡中,可以设置SELECT命令中要输出的字段或表达式项。(2)连接。查询多个表时,可以在“连接”选项卡中完成JOIN..ON子句的连接操作。(3)筛选。在“筛选”选项卡中,完成的是WHERE子句表达式的操作。(4)排序依据。在“排序依据”选项卡中,完成的是ORDERBY子句表达式的操作。(5)分组依据。在“分组依据”选项卡中,完成的是GROUPBY子句表达式的操作。(6)杂项。在“杂项”选项卡中可以设置一些参数。上一页下一页返回5.5查询与视图设计器3.定义查询的输出内容单击“字段”选项卡→从“可用字段”列表框中单击所需字段(当输出的列不是直接来源于表中的字段时,单击函数和表达式框边的“”按钮,打开“表达式生成器”,构造出所需的表达式)→单击添加按钮→所需字段自动出现在“选定”字段框中。4.设置查询的筛选条件筛选条件决定将哪些记录显示出来。在筛选框中构造筛选条件表达式时,要注意在实例框中输入不同数据类型时的格式。(1)字符串可以不带引号(当与源表中的字段名相同时才用引号);上一页下一页返回5.5查询与视图设计器(2)日期型数值要用{}括起来;(3)逻辑型数据两侧要带.号,如.T.,.F.。5.设置查询结果的排序依据排序决定查询输出结果中记录显示的顺序。设置方法为:单击“排序依据”→从“选定字段框”选中字段→选择“升序或降序”→单击“添加”按钮。上一页下一页返回5.5查询与视图设计器6.设置查询结果的分组依据分组是指将一组类似的记录压缩成一个结果记录,目的是完成基于该组记录的计算,比如:求平均值AVG()、总和SUM()、统计个数COUNT()、最大值MAX()、最小值MIN()等。用于分组的字段不一定是选定输出的字段,但分组字段不能是一个计算字段。可以用“满足条件…”来对分组结果进行进一步筛选。7.对查询结果的其他设置可以排除查询结果中所有重复的行,并设置结果的记录范围。上一页下一页返回5.5查询与视图设计器8.选择查询结果的输出类型默认情况下,查询结果将输出在浏览窗口中,且其中的数据是只读的。设置其他输出类型的方法:打开“查询”菜单→选择“查询去向”→在“查询去向”对话框中(如图5-7所示)选择其中的一种。一般多选择表或报表。9.运行查询在“查询设计”器打开的状态下,单击常用工具栏上的“!”按钮或从“查询菜单”中选择运行查询。其他情况下,可从项目管理器中选中查询文件并单击“运行”按钮;或从“程序”菜单中选择“执行”命令;或从命令窗口中输入:DO<查询文件名>。上一页下一页返回5.5查询与视图设计器10.创建多表查询打开查询设计器→将所需的多个相关表添加进来→设置连接条件→按上面的步骤2~8进行。5.5.2视图与视图设计器前面介绍的查询可以很方便地从表中检索出所需的数据,但不能修改所查询的数据。如果既要查询又要修改数据可以使用视图。从用户角度来看,视图和基本表是一样的。实际上视图是从其他表(包括其他视图)中导出的表,本身并不独立存储在数据库中,因此视图是一种虚拟表,当基本表的数据发生变化时,相应的视图数据也会随之改变。视图定义后,可以和基本表一样被用户查询、更新,但通过视图来更新基本表中的数据有一定的限制。上一页下一页返回5.5查询与视图设计器1.使用SQL语句创建视图SQL语言用CREATEVIEW命令建立视图,其一般格式为:CREATEVIEW<视图名>[(<列名1>[,<列名2>]…)];AS(SELECT查询);[WITHCHECKOPTION]其中:(1)列名序列为所建视图包含列的名称序列,可省略。当列名序列省略时,直接使用SELECT查询子句里的各列名作视图列名。下列情况不能省略列名序列:①视图列名中有常数、聚合函数或表达式;上一页下一页返回5.5查询与视图设计器②视图列名中有从多个表中选出的同名列;③需要用更合适的新列名作视图列的列名。(2)子查询可以是任意复杂的SELECT语句,但不能使用DISTINCT短语和ORDERBY子句。(3)WITHCHECKOPTION是可选项,该选项表示对所建视图进行INSERT、UPDATE和DELETE操作时,让系统检查该操作的数据是否满足子查询中WHERE子句里限定的条件,若不满足,则系统拒绝执行。上一页下一页返回5.5查询与视图设计器2.用视图设计器创建视图在VisualFoxPro中使用设计器创建视图步骤如下:从项目管理器中选择一个数据库→选择本地视图→单击新建按钮→选择新建视图→添加所需的数据表→在视图设计器中按照与创建查询相同的步骤3~7建立视图→设置更新条件→保存视图→给出视图名称→运行视图→关闭视图设计器。在VisualFoxPro中使用设计器创建视图和创建查询类似,只是视图增
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 词汇注释语言与词汇量水平:英语专业学生阅读中词汇附带习得的多维度探究
- 2026年度烟台市市级机关公开遴选公务员笔试模拟试题及答案详解
- 2026年福建省长汀县公开招聘中学紧缺学科教师笔试模拟试题及答案详解
- 2026重庆国际投资咨询集团有限公司招聘4人考试参考题库及答案详解
- 2026年黑龙江省农垦牡丹江管理局中心医院医护人员招聘笔试备考题库及答案详解
- 2026黑龙江黑河市口腔医院招聘5人考试模拟试题及答案详解
- 2026湖南郴州市新天世纪控股集团有限公司高层次人才招聘(引进)6人考试模拟试题及答案详解
- 2025年镇雄县中医院医护人员招聘考试试题及答案详解
- 2026云南昆明晋宁区宝峰中心卫生院就业见习人员招聘6人笔试模拟试题及答案详解
- 2026山东淄博包钢灵芝稀土高科技股份有限公司招聘9人考试参考题库及答案详解
- 国际学校学生综合素质评估方法
- 港口行业智能化港口物流方案
- 家庭的觉醒读书分享
- 韩国风俗文化
- 食品营养学(暨南大学)智慧树知到期末考试答案章节答案2024年暨南大学
- 子宫内膜病变的诊治课件
- MOOC 教学设计原理与方法-华南师范大学 中国大学慕课答案
- 基层医疗机构药事管理
- 《大数据技术原理与应用(第3版)》期末复习题库(含答案)
- 造纸车间安全风险分级管控清单
- 2023年陕西省初中学业水平考试地理中考试卷真题(答案详解)
评论
0/150
提交评论