《关系数据库标准语SQL.ppt》由会员分享,可在线阅读,更多相关《关系数据库标准语SQL.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VFP课程建设组课程建设组第四章第四章关系数据库标准语关系数据库标准语SQL目录SQL语言概述语言概述 4.1查询功能查询功能 4.2操作功能操作功能 4.3定义功能定义功能 4.4本章小结本章小结4.5http:/V SQL语言概述语言概述vSQL全称是“结构化查询语言(Structured Query Language)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是Oracle,Sybase,Infor
2、mix,SQL server这些大型的数据库管理系统,还是像Visual FoxPro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。http:/V SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。2非过程化语言 SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。3面向集合的操作方式 SQL语言采用集
3、合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。http:/V SQL语言功能极强,但又十分简洁,只用9个动词即可完成对数据的操纵、数据的定义及数据的控制等功能。(1)数据操纵:SELECT、INSERT、UPDATE、DELETE(2)数据定义:CREATE、DROP、ALTER(3)数据控制:GRANT,REVOKE 4一种语法结构有两种使用方式 SQL语言既是自含式语言,又是嵌入式语言。且在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。http:/V v查询是查询是SQLSQL语言的重要组成部分,同时语言的重要组成部分,同时SQ
4、LSQL还包括数还包括数据定义、数据操纵和数据控制功能等部分。据定义、数据操纵和数据控制功能等部分。SQLSQL已经已经成为关系数据库的标准查询语言。成为关系数据库的标准查询语言。1 1数据查询功能数据查询功能 包括单表查询、多表查询、集合查询等。包括单表查询、多表查询、集合查询等。2 2数据定义功能数据定义功能 包括定义、删除、修改表等操作。包括定义、删除、修改表等操作。3 3数据操纵功能数据操纵功能 包括数据插入、数据更新、数据删除等操作。包括数据插入、数据更新、数据删除等操作。4 4数据控制功能数据控制功能 包括数据保护及事务管理等操作包括数据保护及事务管理等操作。http:/V by
5、Group by ;Having Having ;Order byOrder by排序项目排序项目ASC/DESCASC/DESC,ASC/DESCASC/DESC.;http:/V by 子句:说明对数据如何进行分组,其Having则表示分组满足的条件,与Group by一起使用。(5)Order by排序项目:指出查询结构的输出顺序,其中ASC为升序,DESC为降序。http:/V 简单查询简单查询 v简单的简单的SQLSQL查询只包括查询只包括SelectSelect子句、子句、FROMFROM子句。子句。【例例4-14-1】从从“学生成绩数据库学生成绩数据库”中的中的studentst
6、udent表查询表查询所有学生的情况。所有学生的情况。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select*From studentSelect*From student如图如图4-24-2所示所示http:/V 简单查询简单查询【例例4-24-2】从从“学生成绩数据库学生成绩数据库”中的中的studentstudent表查询表查询所有学生的学号、姓名和系科的情况。所有学生的学号、姓名和系科的情况。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Select 学号,姓名,系科学号,姓名,系科 From student From student http:/
7、V 条件查询条件查询vWHEREWHERE子句设置查询条件,过滤掉不需要的数据行。子句设置查询条件,过滤掉不需要的数据行。vWHEREWHERE子句可包括各种条件运算符:子句可包括各种条件运算符:1 1比较运算符比较运算符(大小比较大小比较):、=、=、=、!、!=10 AND age=10 AND age=30age8585)如图如图4-84-8所示所示 http:/V 计算与分组查询计算与分组查询v1 1计算查询计算查询常用计算查询的函数有常用计算查询的函数有Count(Count(计数计数);Sum();Sum(求和求和);Avg);Avg(平均值平均值);Max();Max(最大值最大
8、值);Min();Min(最小值最小值)等。它们可以等。它们可以使用在使用在SelectSelect语句中。语句中。【例例4-94-9】从从“学生成绩数据库学生成绩数据库”查询数据表查询数据表StudentStudent中中“系科系科”的个数。的个数。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Count(Distinct Select Count(Distinct 系科系科)From Student)From Student如图如图4-94-9所示所示 http:/V 计算与分组查询计算与分组查询【例例4-104-10】从从“学生成绩数据库学生成绩数据库”查询数据表
9、查询数据表StudentStudent学生总学生总分的平均值,最大值和最小值。分的平均值,最大值和最小值。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Avg(Select Avg(总分总分)AS)AS 平均值平均值,Max(,Max(总分总分)AS)AS 最大值最大值,Min,Min(总分总分)AS)AS 最小值最小值 From StudentFrom Student,如图,如图4-104-10所示。所示。v2 2分组查询分组查询根据关键字的值对数值属性的值进行汇总,使用根据关键字的值对数值属性的值进行汇总,使用Group By Group By 字字句实现。句实现。
10、【例例4-114-11】从从“学生成绩数据库学生成绩数据库”查询数据表查询数据表StudentStudent中男学中男学生和女学生总分平均值的情况。生和女学生总分平均值的情况。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Select 性别性别,Avg(,Avg(总分总分)AS)AS 平均值平均值From Student Group By From Student Group By 性别,如图性别,如图4-114-11所示。所示。http:/V 计算与分组查询计算与分组查询【例例4-124-12】从从“学生成绩数据库学生成绩数据库”中查询每位学生课程的平均中查询每位学生
11、课程的平均成绩。成绩。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Select 姓名姓名,Avg(,Avg(成绩成绩)AS)AS 课程平均值课程平均值From studentFrom student,assign Where student.assign Where student.学号学号=assign.=assign.学号学号 Group By Group By 姓名,姓名,如图如图4-124-12所示。所示。【例例4-134-13】从从“学生成绩数据库学生成绩数据库”中查询每位学生课程的平均中查询每位学生课程的平均成绩且大于成绩且大于8080分的情况。分的情况。
12、在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select Select 姓名姓名,Avg(,Avg(成绩成绩)AS)AS 课程平均值课程平均值From studentFrom student,assign Where student.assign Where student.学号学号=assign.=assign.学号,学号,Group By Group By 姓姓名名 Having Avg(Having Avg(成绩成绩)80)80,如图,如图4-134-13所示。所示。http:/V 空值查询空值查询 v空值不是空格或空值不是空格或0 0,而是表示数据值不可用,用,而是表示数据
13、值不可用,用NULLNULL值表示。值表示。SQLSQL可以使用空值,利用它进行相应查询。可以使用空值,利用它进行相应查询。【例例4-144-14】从从“学生成绩数据库学生成绩数据库”查询数据表查询数据表StudentStudent中系科为空的学生情况。中系科为空的学生情况。在在“命令命令”窗口中写下查询语句:窗口中写下查询语句:Select*From Student Where Select*From Student Where 系科系科 is nullis nullhttp:/V 数据插入数据插入 SQLSQL语言中用语言中用INSERTINSERT语句向表或视图中插入新的数据语句向表或视
14、图中插入新的数据行。行。INSERTINSERT语句的语法格式为:语句的语法格式为:INSERT INTO table_sourceINSERT INTO table_sourcecolumn_listcolumn_listVALUES(DEFAULT|constant_expression VALUES(DEFAULT|constant_expression,n),n)其中,其中,column_listcolumn_list参数为新插入数据行中一列或多参数为新插入数据行中一列或多列列名列表,它说明列列名列表,它说明INSERT INSERT 语句只为指定列插入数语句只为指定列插入数据。在给表
15、或视图中部分列插入数据时,必须使用据。在给表或视图中部分列插入数据时,必须使用列名列表方式指出这部分列名。列名列表方式指出这部分列名。http:/V 数据插入数据插入【例例4-154-15】在数据表在数据表StudentStudent中插入一个学生的记录:中插入一个学生的记录:学号学号20080212008021,姓名,姓名 郭襄,性别郭襄,性别 女,系科女,系科 计算机,计算机,出生日期出生日期 19881988年年5 5月月1 1日。日。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Insert Into student(Insert Into student(学号,姓名,性别,
16、出生日期,学号,姓名,性别,出生日期,系科系科););Values(“2008021”,”Values(“2008021”,”郭襄郭襄:,“:,“女女”,05/01/88,”,05/01/88,”计算机计算机”)http:/V 数据更新数据更新UPDATEUPDATE语句用于修改表中数据,该语句的语法格式为:语句用于修改表中数据,该语句的语法格式为:UPDATE table_nameUPDATE table_nameSET SET column_name1=variable1,column_name2=variable2column_name1=variable1,column_name2=v
17、ariable2WHERE search_conditionsWHERE search_conditions其中其中SETSET子句指出表中被修改的列或变量,以及它们子句指出表中被修改的列或变量,以及它们的新值。的新值。column_namecolumn_name为被修改的列名。为被修改的列名。http:/V 数据更新数据更新【例例4-164-16】在数据表在数据表StudentStudent中为所有学生的总分增中为所有学生的总分增加加1010分。分。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Update student Set Update student Set 总分总分=总
18、分总分+10+10【例例4-174-17】在数据表在数据表StudentStudent中为计算机系的学生其中为计算机系的学生其总分增加总分增加1010分。分。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Update student Set Update student Set 总分总分=总分总分+10 Where+10 Where 系科系科=”=”计算机计算机”http:/V 数据删除数据删除 DELETEDELETE语句可以删除表中的数据。其语句可以删除表中的数据。其DELETEDELETE语句的语语句的语法格式为:法格式为:DELETE DELETE FROM table_na
19、me|view_nameFROM table_name|view_name WHERE conditions WHERE conditionsDELETEDELETE语句的结构与语句的结构与UPDATEUPDATE语句有些类似,其中也包语句有些类似,其中也包含含FROMFROM子句和子句和WHEREWHERE子句。子句。WHEREWHERE子句为数据删除指子句为数据删除指定条件。不使用定条件。不使用WHEREWHERE子句时,子句时,DELETEDELETE语句将把有或语句将把有或视图中所有的数据删除。视图中所有的数据删除。http:/V 数据删除数据删除【例例4-184-18】永久删除数据表
20、永久删除数据表StudentStudent学号为学号为20080152008015的的记录。记录。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Delete From student Where Delete From student Where 学号学号=”2008015”=”2008015”Pack Pack Pack Pack对当前表中具有删除标记的所有记录做永久对当前表中具有删除标记的所有记录做永久的删除。的删除。http:/V vSQLSQL的定义功能是对表进行修改,包括对表结的定义功能是对表进行修改,包括对表结构进行创建、修改表结构以及删除表等操作。构进行创建、修改表结构
21、以及删除表等操作。http:/V 表的定义表的定义一般格式如下:一般格式如下:CreateCreateTableTable(列级完整性约束条列级完整性约束条件件 ,列级完整性约束条件列级完整性约束条件.,););其中:其中:是所要定义的基本表的名字,最好能表达表的应用语是所要定义的基本表的名字,最好能表达表的应用语义义 是由一个或多个属性(列)组成。是由一个或多个属性(列)组成。建表的同时通常还可以定义与该表有关的完整性约束条件,这建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表些完整性约束条件被存入系统的数据字典中,当用户操作表中数据
22、时由中数据时由DBMSDBMS自动检查该操作是否违背这些完整性约束条自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。定义在表级上,否则既可以定义在列级也可以定义在表级。http:/V 表的定义表的定义【例例4-194-19】建立一个自由表建立一个自由表“学生学生”,包括:学号、姓名、性,包括:学号、姓名、性别、出生日期、是否党员、籍贯和简历。别、出生日期、是否党员、籍贯和简历。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Create Ta
23、ble Create Table 学生学生(学号学号 C(8),C(8),姓名姓名 C(8),C(8),性别性别 C(2),C(2),出出生日期生日期 D,D,是否党员是否党员 L,L,籍贯籍贯 C(8),C(8),简历简历 M)M)【例例4-204-20】用用SQLSQL命令建立命令建立StudentStudent表。表。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Open DataBase Open DataBase 学生成绩数据库学生成绩数据库Create Table student(Create Table student(学号学号 C(8),C(8),姓名姓名 C(8),
24、C(8),性别性别 C(2),C(2),出生日期出生日期 D,D,系科系科 C C(2020),统招否统招否 L,L,总分总分N(6N(6,1),1),备备注注 M,M,照片照片 G)G)http:/V 表结构的修改表结构的修改 一般格式为:一般格式为:AlterAlterTableTable AlterAlter AddAdd 完整性约束完整性约束 DropDrop ModifyModify AddAddPrimaryPrimaryKey(Key(列名列名)AddAddPreignPreignKey(Key(列名列名)RefernecesReferneces表名(列名)表名(列名);其中其中
25、 指定需要修改的基本表,指定需要修改的基本表,AddAdd子句用于增加新列和子句用于增加新列和新的完整性约束条件,新的完整性约束条件,DropDrop子句用于删除指定的完整性约束子句用于删除指定的完整性约束条件,条件,ModifyModify子句用于修改原有的列定义。子句用于修改原有的列定义。http:/V 表结构的修改表结构的修改【例例4-214-21】为为StudentStudent表增加一个党员否字段。表增加一个党员否字段。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Alter Table student Add Alter Table student Add 党员否党员否
26、L L【例例4-224-22】修改修改StudentStudent表的姓名字段,其宽度改为表的姓名字段,其宽度改为1010。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Alter Table student Alter Alter Table student Alter 姓名姓名 C(10)C(10)【例例4-234-23】删除删除StudentStudent表的党员否字段。表的党员否字段。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Alter Table student DropAlter Table student Drop党员否党员否 http:/V 表的删除表的
27、删除v删除表时会将与表有关的所有对象一起删掉。基本删除表时会将与表有关的所有对象一起删掉。基本表定义一旦删除,表中的数据、在此表上建立的索表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删除掉,而建立在此表上的视图虽仍引都将自动被删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除操作一定要然保留,但已无法引用。因此执行删除操作一定要格外小心。格外小心。一般格式为:一般格式为:DropDropTableTable 【例例4-244-24】删除删除StudentStudent表。表。在在“命令命令”窗口中可用如下语句:窗口中可用如下语句:Open DataBase Open
28、 DataBase 学生成绩数据库学生成绩数据库Drop Table student Drop Table student http:/V 本章小结本章小结 vSQLSQL结构化查询语言结构化查询语言(Structured Query Language)(Structured Query Language)功能十分强大,其数据查询是功能十分强大,其数据查询是SQLSQL的核心。本章主要的核心。本章主要讲述了讲述了SelectSelect查询语句的基本使用方法,包括单表查询语句的基本使用方法,包括单表查询、多表查询、条件查询、分组查询等操作。查询、多表查询、条件查询、分组查询等操作。v另外,本章还讲述了另外,本章还讲述了SQLSQL语言的操作功能和定义功能。语言的操作功能和定义功能。多种方法的结合灵活操作数据库中的数据表。多种方法的结合灵活操作数据库中的数据表。http:/V