第4章结构化查询语言SQL

上传人:gu****n 文档编号:243120525 上传时间:2024-09-16 格式:PPT 页数:74 大小:172KB
返回 下载 相关 举报
第4章结构化查询语言SQL_第1页
第1页 / 共74页
第4章结构化查询语言SQL_第2页
第2页 / 共74页
第4章结构化查询语言SQL_第3页
第3页 / 共74页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,Institute of Computer Science & Technology, HeiLongJiang College of Technology , KongLei,*,第,4,章,结构化查询语言,SQL,主要内容,:,主要介绍,关系数据库的标准语言,结构化查询语言,SQL,的数据定义功能、数据查询功能、数据操纵功能、数据控制功能,重点:,SQL,语句的查询功能是本章的重点,难点;多表查询是难点,9/16/2024,2,4.1,概述,4.2,数据定义语句,4.3,数据操纵语句,4.4,数据控制语句,4.5,嵌入式,SQL,4.6 Transact-SQL,语言,4.7,本章小结,9/16/2024,3,4.1,概述,1. SQL,的产生和发展,结构化查询语言,SQL(Structure,Query Language),是数据库的标准主流语言。,1986,年美国国家标准局(,ANSI,)首先颁布了,SQL,语言的美国标准,,1987,年国际标准组织(,ISO,)也把这个标准纳入国际标准,经修订后,,1989,年,4,月颁布了增强完整性特征的,SQL89,版本,,1992,年再次修订后颁布了,SQL92,版本。,目前,所有主要的关系数据库管理系统支持某些形式的,SQL,语言,,SQL,成为国际标准后,大部分数据库遵守,ANSI SQL89,标准。对数据库以外的领域也产生很大影响,不少软件产品将,SQL,语言的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序结合起来。,9/16/2024,4,2. SQL,的特点,综合统一。,高度非过程化。,以同一种语法结构提供两种使用的方法。,语言简洁,易学易用。,如表,4-1,所给出的动词,可以完成数据库的核心功能。,SQL,功,能,动,词,数据定义,CREATE,,,DROP,,,ALTER,数据查询,SELECT,数据操纵,INSERT,,,UPDATE,,,DELETE,数据控制,GRANT,,,REVOKE,表,4-1 SQL,语言的动词,9/16/2024,5,4.2,数据定义语句,SQL,的数据定义功能包括定义基本表、定义视图和定义索引。在这里先讲述表和索引的定义,后面专门讲述视图的定义。表,4-2,中给出了数据库对象及在其上各种操作方式。,操作对象,对象类型,操作权限,属性列,TABLE,SELECT, INSERT, UPDATE, DELETE,ALL PRIVILEGES,视图,VIEW,SELECT, INSERT, UPDATE, DELETE,ALL PRIVILEGES,基本表,TABLE,SELECT, INSERT, UPDATE, DELETE, ALTER,INDEX, ALL PRIVILEGES,数据库,DATABASE,CREATE TAB,表空间,TABLESPACE,USE,系统,CREATEDBC,表,4-2,数据库对象的操作及权限,9/16/2024,6,4.2.1,定义、修改与删除基本表,1,、定义表,SQL,语言使用,CREATE TABLE,语句定义表,其一般格式如下:,CREATE TABLE ,(, ,,, ,,, ,);,:所要定义的基本表的名字,:组成该表的各个属性(列),:涉及相应属性列的完整性约束条件,:涉及一个或多个属性列的完整性约束条件,9/16/2024,7,其中,表名是所要定义的表的名字,它可以由一个或多个属性(列)组成。建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时,由,DBMS,自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。,9/16/2024,8,2,、修改表,随着应用环境和应用需求的变化,有时需要修改已建立好的表,对表的修改包括增加新列、增加新的完整性约束条件、修改原有的列定义或删除已有的完整性约束条件等。,SQL,语言用,ALTER TABLE,语句修改基本表,其一般格式为:,ALTER TABLE,表名,ADD,新列名 数据类型,完整性约束条件,DROP,完整性约束名,MODIFY,列名 数据类型,;,其中,表名指定需要修改的表,,ADD,子句用于增加新列和新的完整性约束条件,,DROP,子句用于删除指定的完整性约束条件,,MODIFY,子句用于修改原有列的数据类型。,9/16/2024,9,3,、删除表,当某个基本表不再需要时,可以使用,SQL,语句,DROP TABLE,将表删除。其一般格式为:,DROP TABLE,表名;,一旦删除基本表定义,表中的数据和在此表上建立的索引都将被自动删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除操作一定要注意。,9/16/2024,10,例题,4.1,学号(,Sno,),姓名(,Sname,),性别(,Ssex,),年龄(,Sage,),系(,Sdept,),20060201,李海,男,30,计算机系,20060202,孔红,女,27,计算机系,学生表,课程表,课程号(,Cno,),课程名(,Cname,),先修课号(,Cpno,),老师(,Teacher,),04020104,数据库原理,04020101,王丽,04030103,软件工程,04030102,李东,学号(,Sno,),课程号(,Cno,),先修课号(,Cpno,),老师(,Teacher,),20060201,04020104,04020101,王丽,20060202,04030103,04030102,李东,图,4-1,学生选课数据库结构示例,学生选课表,9/16/2024,11,CREATE TABLE Student (,Sno,CHAR(10) NOT NULL UNIQUE,Sname,CHAR(20),Ssex,CHAR(2),Sage INT,Sdept,CHAR(15);,【,例,4-1】,: 建立一个“学生”表,Student,,它由学号,Sno,、姓名,Sname,、 性别,Ssex,、年龄,Sage,、所在系,Sdept,五个属性组成,其中学号属性不能为空,并且其值是唯一的。,9/16/2024,12,4.2.2,建立与删除索引,1,、建立索引,DBA,或表的属主(即建立表的人)根据需要建立,有些,DBMS,自动建立以下列上的索引。,PRIMARY KEY UNIQUE,2,、维护索引,DBMS,自动完成。,9/16/2024,13,3,、使用索引,DBMS,自动选择是否使用索引以及使用哪些索引。语句格式,CREATE UNIQUE CLUSTER INDEX ON (, ),;,其中,用,指定要建索引的基本表名字,索引可以建立在该表的一列或多列上,各列名之间用逗号分隔,用,指定索引值的排列次序,其中升序用,ASC,,而降序用,DESC,。缺省值为,ASC,,,UNIQUE,表明此索引的每一个索引值对应唯一的数据记录,,CLUSTER,表示要建立的索引是聚簇索引。,9/16/2024,14,索引包括唯一值索引和聚簇索引,唯一值索引指对于已含重复值的属性列不能建,UNIQUE,索引,聚簇索引指建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。,4,、删除索引,DROP INDEX ,;,删除索引时,系统会从数据字典中删去有关该索引的描述。,9/16/2024,15,4.3,数据操纵语句,语句格式:,SELECT ALL|DISTINCT,(指定要显示的属性列), ,,, ,FROM ,(指定查询对象基本表或视图),,, , WHERE , GROUP BY , ,(对查询结果按指定列的值分组), HAVING ,(筛选出满足指定条件的组), ORDER BY , ASC|DESC ,;(对查询结果表按指定列值的升序或降序排序 ),4.3.1,数据查询语句,9/16/2024,16,4.3.2,数据更新语句,1,、修改数据语句,语句格式,:,UPDATE,表名,SET,列名,1=,表达式,1,列名,2=,表达式,2,WHERE,条件,;,对满足条件的元组中的指定列用相应的表达式的值修改。,9/16/2024,17,(,1,)修改一个元组的值,【,例,4-2】,将学生“,1013600101”,的年龄改为,22,岁。,UPDATE Student,SET Sage=22 WHERE,Sno,=1013600101;,(,2,)修改多个元组的值,【,例,4-3】,将所有学生的年龄都加,1,岁。,UPDATE Student SET Sage=Sage+1;,例题:,9/16/2024,18,(,3,)带子查询的修改,【,例,4-4】,将“测绘系”全体学生的成绩清零。,UPDATE SC,SET Grade=0 WHERE ,测绘系,=,(SELECT,Dname,FROM Student,WHERE,Student.Sno,=,SC.Sno,);,9/16/2024,19,2,、插入数据,(,1,)插入单个元组格式:,INSERT INTO,表名,(,列名,1,列名,2,,,),VALUES (,常量,1,常量,2,,,),;,(,2,)插入子查询结果:,INSERT,INTO,表名,列名,1,列名,2,,,),子查询;,9/16/2024,20,【,例,4-6】,建立一个学生平均成绩表,SG,,其中有学号,Sno,平均成绩,Gavg,。,CREATE TABLE,SG(Sno,CHAR(10) Not null UNIQUE,Gavg,SMALLINT);,INSERT INTO,SG(Sno,Gavg,),SELECT,Student.Sno,AVG(Grade,),FROM,Student,SC,WHERE,Student.Sno,=,SC.Sno,GROUP BY Student.,Sno,;,9/16/2024,21,3,、删除数据,格式:,DELETE FROM,表名,WHERE,条件,;,删除满足条件的元组。,(,1,)删除一个元组,【,例,4-7】,删除“,1013600102”,的学生记录。,DELETE FROM Student,WHERE,Sno,=1013600102;,9/16/2024,22,(,2,)删除多个元组,【,例,4-8】,删除所有学生的选课记录。,DELETE FROM SC,;,(,3,)删除子查询的结果,【,例,4-9】,删除“测绘系”学生的全部选课记录。,DELETE FROM SC,WHERE ,测绘系,=,(SELECT,Dname,FROM Student,WHERE,Student.Sno,=,SC.Sno,);,9/16/2024,23,4,、更新操作注意保持数据的一致性,一个学生的各种数据可能存放在多个表中,但一个删除语句只能对一个表进行删除,这样可能会引起数据不一致问题。,为了保证数据的完整性和一致性,许多系统的,DBMS,都提供了相应的处理机制。当主表的记录被删除后,其参照关系的相关记录自动删除。,9/16/2024,24,4.3.3,视图更新操作,对视图更新时,,DBMS,将转换为对基本表的更新,但并不是所有视图都能转换成对基本表的更新。 对视图更新的一般规定包括:,两个以上基本表导出的视图不允许更新,视图的字段来自字段表达式或常数,不能进行插入和修改操作,但可进行删除操作;,若视图的字段来自库函数,视图不允许更新;,9/16/2024,25,视图定义中有,GROUP BY,子句,视图不允许更新;,视图定义中有,DISTINCT,短语,视图不允许更新;,视图定义中有嵌套查询,并且其内层查询的,FROM,子句中涉及的表也是导出该视图的基本表,视图不允许更新;,由一个不允许更新的视导出来的视图是不允许更新的。,9/16/2024,26,4.3.4,建立与删除视图,1,、建立视图,语句格式:,CREATE VIEW ( ,,,),AS ,WITH CHECK OPTION,;,DBMS,执行,CREATE VIEW,语句时只是把视图的定义存入数据字典,并不执行其中的,SELECT,语句。在对视图查询时,按视图的定义从基本表中将数据查出。,9/16/2024,27,组成视图的属性列名可以全部省略或全部指定省略;也可以由子查询中,SELECT,目标列中的诸字段组成。有的情况需要明确指定视图的所有列名,这些情况包括,:,(1),某个目标列是集函数或列表达式;,(2),目标列为,SELECT *,;,(3),多表连接时选出了几个同名列作为视图的字段;,(4),需要在视图中为某个列启用新的更合适的名字;,常见的视图形式有行列子集视图,,WITH CHECK OPTION,的视图,基于多个基表的视图,基于视图的视图,带表达式的视图和分组视图。,9/16/2024,28,2,、删除视图,删除一个视图使用,DROP VIEW,语句。,DROP VIEW ,;,该语句从数据字典中删除指定的视图定义,但是,由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须对其进行显式删除。值得注意的是,删除基表时,由该基表导出的所有视图定义都必须显式删除。,9/16/2024,29,4.4,数据控制语句,4.4.1,授权语句,授权语句格式:,GRANT,权限,1,权限,2ON,对象类型 对象名,TO,用户,1 ,用户,2 ,WITH GRANT OPTION,;,对指定操作对象的指定操作权限授予指定的用户。 其中:,9/16/2024,30,1,)对属性列和视图的操作权限有:查询,插入,修改,删除四种权限,四种权限可以同时具备一种或几种;,2,)对基本表的操作权限有:查询,插入,修改,删除,修改表定义,建立索引,六种权限可以同时具备一种或几种;,3,)对数据库操作的权限有,:,建立表;,4,)对表空间的操作:使用基本表;,9/16/2024,31,5,)对系统的操作权限:建立数据库;,6,)用户,:,可以是某一特定用户,也可以是全体用户,Public,。,建立表的权限归,DBA,所有,DBA,可以将权限授予其他用户,被授权的用户可以自己创建表。创建表的用户是表的主人,dbo,,拥有对表的所有权限。,WITH GRANK OPTION,子句:获得某种权力的用户可以将其权限转授其他用户,9/16/2024,32,DBA,或其他授权者可以使用收权语句将其他用户的权限收回。权限的收回用,REVOKE,语句,,格式如下:,REVOKE,权限,1,权限,2ON,对象类型 对象名,FROM,用户,1,用户,2,;,4.4.2,权限的收回,9/16/2024,33,4.5,嵌入式,SQL,4.5.1,嵌入式,SQL,简介,前面介绍的,SQL,语言是作为独立的数据库操作语言在交互方式下使用,是非过程性的语言,它本身并不是一个完整的程序设计语言,无法根据应用程序的要求来实现一些过程性的应用。为了解决这个问题,,SQL,语言提供了另一种使用方式,即将,SQL,语言嵌入到某种高级语言中,利用高级语言的过程结构来弥补,SQL,语言实现复杂应用的不足。这种使用方式下的,SQL,语言称为嵌入式,SQL,,被嵌入的高级语言称为主语言或宿主语言。,9/16/2024,34,1,、嵌入式,SQL,语句与主语言之间的通信,2,、不用游标的,SQL,语句,数据库的连接与断开,使用,CONNECT,语句建立与数据库的连接,语法格式为:,CONNECT USING,TransactionObject,;,DISCONNECT,语句断开与数据库的连接,语法格式为:,DISCONNECT USING,TransactionObject,;,其中,TransactionObject,是事务对象名。,9/16/2024,35,提交与回滚事务,使用,COMMIT,语句提交事务,完成数据库的物理修改,语法格式为:,COMMIT USING,TransactionObject, ;,使用,ROLLBACK,语句放弃自上一个语句以来的有数,据库操作,关闭所有的游标和过程,并开始一个新,的事务。,9/16/2024,36,其语法格式为:,ROLLBACK USING,TransactionObject, ;,其中,Transactionobject,是事务对象名,默认时使用事务对象,SQLCA,。,非,CURRENT,形式的,UPDATE,、,DELETE,语句和,INSERT,语句,ROLLBACK USING,TransactionObject, ;,查询结果为单记录的,SELECT,语句,9/16/2024,37,3,、使用游标的,SQL,语句,游标的建立和操作,:,游标在使用之前必须先声明,可用,DECLARE CURSOR,语句声明游标。语法如下:,DECLARE,游标名称,CURSOR FOR Select,查询,USING,TransactionObject, ; /,默认值为,SQLCA,9/16/2024,38,用,OPEN,语句打开游标,用 “,OPEN,游标名称 ” 打开游标。打开游标实际上就是执行相应的,SELECT,查询语句,将查询结果放到缓冲区中。这时游标处于活动状态,游标指针指向第一条记录。,用,FETCH,语句提取游标中的记录,FETCH,是将当前游标的当前记录提取到主变量中,并使指针指向游标的下一条记录。语法如下:,FETCH,游标名,INTO,主变量列表 ;,9/16/2024,39,用,CLOSE CURSOR,语句关闭游标。,游标执行结束后,要关闭游标。语法为:,CLOSE,游标名 ;,CURRENT,形式的,UPDATE,语句,这种形式的,UPDATE,语句是根据游标的当前记录修改数据库表中的记录。,UPDATE,表名称,Set,表达式,WHERE CURRENT OF,游标名称,;,9/16/2024,40,4.5.2,动态嵌入式,SQL,语句允许在程序运行过程中临时“组装”,SQL,语句。其主要可对待以下三种情况:,(1),语句可变,(2),条件可变,(3),数据库对象、查询条件均可变,9/16/2024,41,CURRENT,形式的,DELETE,语句,这种形式的,DELETE,语句是根据游标的当前记录删除数据库表中的记录。,DELETE FROM,表名称,WHERE CURRENT OF,游标名称,;,由于,UPDATE,、,DELETE,语句都是面向集合的操作,一次性修改或删除满足条件的所有记录。如果用户只想修改其中的一些记录,则必须借助于游标,用,CURRENT,形式的,DELETE,、,UPDATE,语句来完成。,9/16/2024,42,为了实现上述三种可变形式,,SQL,提供了相应的动态嵌入式,SQL,语句:,1,动态,SQL,预备语句,EXEC SQL PREPARE FROM ,说明:“共享变量或字符串”的值是一个完整的,SQL,语句,可以在程序运行时由用户输入的数据组合而成。,9/16/2024,43,2.,动态,SQL,执行语句,(1),基本动态,SQL,执行语句,EXEC SQL EXECUTE ,(2),当预备语句中组合而成的,SQL,语句只需要执行一次时,可以把预备语句,和执行语句合并为如下一个语句,EXEC SQL EXECUTE IMMEDIATE ,(3),当预备语句中组合而成的,SQL,语句的条件值尚缺时,可以在执行语句中加上“,USING”,短语补上,EXEC SQL EXECUTE USING ,9/16/2024,44,4.6 Transact-SQL,语言,Transact-SQL,是,SQL Server2005,功能的核心。标准,SQL,语言是作为查询和执行语言出现的,并非是功能全面的编程语言。,SQL Server,提供的,Transact-SQL,不仅可以完成数据的查询,而且具有数据库管理的功能。,SQL Server,所提供的企业管理器所能完成的大多数功能,也都可以通过利用,Transact SQL,语言编写代码来实现。,9/16/2024,45,1,、注释,注释是程序代码中不执行的文本字符串(也称为注解)。,在,SQL Server,中,可以使用两种类型的注释字符:一种是,ANSI,标准的注释符“,-”,,它用于单行注释;另一种是与,C,语言相同的程序注释符号,即“,/* */”,。“,/*”,用于注释文字的开头,“*,/”,用于注释文字的结尾,利用它们可以在程序中标识多行文字为注释。,4.6.1 Transact-SQL,基本的语言要素,9/16/2024,46,局部变量是一个能够拥有特定数据类型的对象,它的 作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志“”,而且必须先用,DECLARE,命令定义后才可以使用。,定义局部变量的语法形式如下:,DECLAER ,local_variable,data_type, n,其中,参数,local_variable,用于指定局部变量的名称,变量,名须以符号,开头,并且局部变量名必须符合,SQL Server,的命名规则。参数,data_type,用于设置局部变量的数据类型,及其大小。,data_type,可以是任何由系统提供的或用户定义,的数据类型。但是,局部变量不能是,text,,,ntext,或,image,数据类型。,2,、变量,(,1,)局部变量,9/16/2024,47,(,2,)全局变量,全局变量是,SQL Server,系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。,在使用全局变量时应该注意以下几点:,1,)全局变量不是由用户的程序定义的,它们是在服务器级定义的。,2,)用户只能使用预先定义的全局变量。,3,)引用全局变量时,必须以标记符“,”,开头。,4,)局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。,9/16/2024,48,3,、运算符,(,1,),算术运算符,算术运算符可以在两个表达式上执行数学运算,这两个表达式以是,字数据类型分类的任何数据类型。算术运算符包括(,+,)、减,()、乘(*)、除(,/,)和取模(,%,)。,(,2,),赋值运算符,Transact-SQL,中只有一个赋值运算符,即(,=,)。赋值运算符够将,据值指派给特定的对象。另外,还可以使用赋值运算符列标题和为,定义值的表达式之间建立关系。,9/16/2024,49,(,3,)位运算符,位运算符能够在整型数据或者二进制数据(,image,数据类型外)之行位操作。此外,在位运算符左右两侧的操作数不同时是二进制数据。,(,4,)比较运算符,比较运算符亦称为关系运算符,用于比较两个表达式的大小或,是,否相同,其比较的结果是布尔值,即,TRUE,(表示表达式的结果为真)、,FALSE,(表示表达式的结果为假)以及,UNKNOWN,。,9/16/2024,50,(,5,),逻辑运算符,逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括,AND,、,OR,和,NOT,等运算符。逻辑运算符和比较运算符一样,返回带有,TRUE,或,FALSE,值的布尔数据类型。,(,6,),字符串串联运算符,逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括,AND,、,OR,和,NOT,等运算符。逻辑运算符和比较运算符一样,返回带有,TRUE,或,FALSE,值的布尔数据类型,9/16/2024,51,4,、函数,在,Transact-SQL,语言中,函数被用来执行一些特殊的运算以支持,SQL Server,的标准命令。,SQL Server,包含多种不同的函数用以完成各种工作,每一个函数都有一个名称,在名称之后有一对小括号,如:,gettime,( ),。大部分的函数在小括号中需要一个或者多个参数。,行集函数,:,行集函数可以在,Transact-SQL,语句中当作表引用。,聚合函数,:,聚合函数用于对一组值进行计算并返回一个单一的值。,除,COUNT,函数之外,聚合函数忽略空值。聚合函数经常与,SELECT,语句的,GROUP BY,子句一同使用。仅在下列项中聚合函数允许作为表达式使用:,SELECT,语句的选择列表(子查询或外部查询);,COMPUTE,或,COMPUTE BY,子句;,HAVING,子句。,9/16/2024,52,Ranking,函数,Ranking,函数为查询结果数据集分区中的每一行,并返回一个序列值。,Transact-SQL,提供以下一些,Ranking,函数:,RANK,;,DENSE_RANK,;,NTILE,;,ROW_NUMBER,。,标量函数,标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。标量函数可以应用在任何一个有效的表达式中。,其中标量函数可以分为:字符串函数、日期和时间函数、数学函数、系统函数。,9/16/2024,53,5,、流程控制语句,流程控制语句是指那些用来控制程序执行和流程分支的语句。,(,1,),IFELSE,语句,IFELSE,语句的语法形式为:,IF,Boolean_expres,sql_statement,|,statement_block, ELSE,sql_statement,|,statement_block, ,(,2,),BEGINEND,语句,BEGINEND,语句的语法形式为:,BEGIN ,sql_statement,|,statement_block,END,9/16/2024,54,CASE,语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。可以分为简单,CASE,语句和搜索,CASE,语句。,它们的语法形式分别为:,CASE,input_expression,WHEN,when_expression,THEN,result_expression, .n , ELSE,else_result_expression,ENDCASE,WHEN,Boolean_expression,THEN,result_expression, .n ELSE,else_result_expression,END,(,3,),GO,语句 :是批地结束语句,(,4,),CASE,语句,9/16/2024,55,(,5,),WHILECONTINUEBREAK,语句,用于设置重复执行,SQL,语句或语句块的条件。只要指定的条件为真,就重复执行语句。其语法形式为:,WHILE,Boolean_expressio,sql_statement,|,statement_block, BREAK ,sql_statement,|,statement_block, CONTINUE ,(,6,),GOTO,语句,GOTO,语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于,GOTO,语句和标识符之间的程序将不会被执行。在,GOTO,语句行,标识符后面不用跟“,: ”,。,GOTO,语句的语法形式为:,GOTO label,label:,9/16/2024,56,(,7,),WAITFOR,语句,WAITFOR,语句用于暂时停止执行,SQL,语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。,WAITFOR,语句的语法形式为:,WAITFOR DELAY time | TIME time ,其中,,DELAY,用于指定时间间隔,,TIME,用于指定某一时刻,其数据类型为,datetime,,格式为,hh:mm:ss,。,(,8,),RETURN,语句,RETURN,语句用于无条件地终止一个查询、存储过程或者批处理,此时位于,RETURN,语句之后的程序将不会被执行。,RETURN,语句的语法形式为:,RETURN ,integer_expression,其中,参数,integer_expression,为返回的整型值。存储过程可以给调用过程或应用程序返回整型值。,9/16/2024,57,4.6.2,数据定义语言,DDL,数据定义语言(,DDL,)是指用来定义和管理数据库以及数据库中各种对象的语句,这些语句包括,CREATE,、,ALTER,和,DROP,等。在,SQL Server 2005,中,数据库对象包括表、视图、触发器、存储过程、规则、默认、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用,CREATE,,,ALTER,,,DROP,等语句来完成。,9/16/2024,58,4.6.3,数据操纵语言,DML,数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括,SELECT,、,INSERT,、,UPDATE,、,DELETE,等。,9/16/2024,59,1,SELECT,语句,SELECT,语句的语法形式:,SELECT ALL | DISTINCT ,TOP expression PERCENT WITH TIES , INTO,new_table, FROM ,.n , WHERE , GROUP BY ALL ,group_by_expression, ,.n , WITH CUBE | ROLLUP , HAVING ,ORDER BY,order_expression,ASC|DESC, COMPUTE AVG|COUNT|MAX|MIN|SUM (expression) ,.n , BY expression ,.n ,9/16/2024,60,(,1,)投影查询,最基本的,SELECT,语句仅有两个部分:要返回的列,和这些列源于的表。也就是说查询均为不使用,WHERE,子句的无条件查询,也称作投影查询。,(,2,)条件查询,当要在表中找出满足某些条件的行时,则需使用,WHERE,子句指定查询条件。,WHERE,子句中,条件通常通过三部分来描述:列名;比较运算符;列名、常数。,条件查询又可分为以下几方面内容:比较大小和确定范围;部分匹配查询;空值查询;查询的排序。,9/16/2024,61, 比较大小和确定范围,当,WHERE,子句需要指定一个以上的查询条件时,则,需要使用逻辑运算符,AND,、,OR,和,NOT,将其连结成复合的,逻辑表达式。其优先级由高到低为:,NOT,、,AND,、,OR,,,用户可以使用括号改变优先级。,部分匹配查询,当不知道完全精确的値时,用户还可以使用,LIKE,或,NOT LIKE,进行分匹配查询(也称模糊查询)。,LIKE,运算可以使用通配符来执行基本的模式匹配。 使用,LIKE,运算符的一般格式为:, LIKE ,字符串常量的字符可以包含字符串操作时所用的通配符。,9/16/2024,62, 空值查询,某个字段没有值称之为具有空值(,NULL,)。通常没有为一个列输入值时,该列的值就是空值。空值不同于零和空格,它不占任何存储空间。,查询的排序,当需要对查询结果排序时,应该在,SELECT,语句中使用,ORDER BY,子句。,ORDER BY,子句包括了一个或多个用于指定排序顺序的列名,排序方式可以指定,,DESC,为降序,,ASC,为升序,缺省时升序。,ORDER BY,子句必须出现在其他子句之后。,9/16/2024,63,(,3,)连接查询,数据表之间的联系是通过表的字段值来体现的,这种字段称为连接字段。,等值连接与非等值连接,连接条件的一般格式为:,. . ,其中,比较运算符主要有:、,、!。,比较运算符为“”时,称为等值连接,其他情况为非等,值连接。,9/16/2024,64,自身连接,当一个表与其自已进行连接操作时,称为表的自身连接。要查询内容均在同一表中,可以将表分别取两个别名,一个是,X,,一个是,Y,。将,X,,,Y,中满足查询条件的行连接起来。这实际上是同一表的自身连接。,9/16/2024,65,(,4,)子查询,在,WHERE,子句中包含一个形如,SELECT-FROM-WHERE,的查询块,此查询块称为子查询或嵌套查询,包含子查询的语句称为父查询或外部查询。,2,、,INSERT,语句,INSERT,语句用于向数据库表或者视图中加入一行数据。,INSERT,语句的语法形式如下:,INSERT INTO,table_or_view,(,column_list,),VALUES(data_values,),其中,,table_or_view,是指要插入新记录的表或视图;,column_list,是可选项,指定待添加数据的列;,VALUES,子句指定待添加数据的具体值。,9/16/2024,66,在进行数据插入操作时须注意以下几点:,(,1,)必须用逗号将各个数据分开,字符型数据要用单引号括起来。,(,2,),INTO,子句中没有指定列名,则新插入的记录必须在每个属性列上均有值,且,VALUES,子句中值的排列顺序要和表中各属性列的排列顺序一致。,(,3,)将,VALUES,子句中的值按照,INTO,子句中指定列名的顺序插入到表中。,(,4,)对于,INTO,子句中没有出现的列,则新插入的记录在这些列上将取空值,如上例的,SCORE,即赋空值。但在表定义时有,NOT NULL,约束的属性列不能取空值。,9/16/2024,67,3,、,UPDATE,语句,UPDATE,语句用于修改数据库表或视图中特定记录或者字段的数据,其语法形式如下:,UPDATE,table_or_view,SET =,=,WHERE ,其中:,table_or_view,是指要修改的表或视图;,SET,子句给出要修改的列及其修改后的值,,其中,column,为要修改的列名,,expression,为其修改后的值;,WHERE,子句指定待修改的记录应当满足的条件,,WHERE,子句省略时,则修改表中的所有记录。,9/16/2024,68,使用,DELETE,语句可以删除表中的一行或多行记录,其语法格式为:,DELETE FROM,table_or_view,WHERE ,其中:,table_or_view,是指要删除数据的表或视图;,WHERE,子句指定待删除的记录应当满足的条件,,WHERE,子句省略时,则删除表中的所有记录。,4,DELETE,语句,9/16/2024,69,数据控制语言(,DCL,)是用来设置或更改数据库用户或角色权限的语句,包括,GRANT,,,DENY,,,REVOKE,等语句。在默认状态下,只有,sysadmin,,,dbcreator,,,db_owner,或,db_securityadmin,等人员才有权力执行数据控制语言。,1.GRANT,语句,数据库管理员拥有系统权限,而作为数据库的普通用户,只对自己创建的基本表、视图等数据库对象拥有对象权限。如果要共享其他的数据库对象,则必须授予他一定的对象权限。,4.6.4,数据控制语言,DCL,9/16/2024,70,2.REVOKE,语句,此语句是用来收回用户的权限的。,9/16/2024,71,3. DENY,语句,DENY,语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。,否定语句权限的语法形式为:,DENY ALL| ,|,TO |PUBLIC,|,否定对象权限的语法形式为:,DENY ALL|(,列名,列名,),ON ,TO |PUBLIC,|,9/16/2024,72,系统存储过程是,SQL Server,系统创建的存储过程,它的目的在于能,够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理,任务或其他的系统管理任务。,系统存储过程的部分示例如下:,1),sp_addtype,:用于定义一个用户定义数据类型;,2),sp_configure,:用于管理服务器配置选项设置;,3),sp_sendmail,:用于发送电子邮件或寻呼信息;,4),sp_stored_procedures,:用于返回当前数据库中的存储过程的清单;,5),sp_help,:用于显示参数清单和其数据类型;,6),sp_depends,:用于显示存储过程依据的对象或者依据存储过程的对象;,7),sp_helptext,:用于显示存储过程的定义文本;,8),sp_rename,:用于修改当前数据库中用户对象的名称。,4.6.5,系统存储过程,9/16/2024,73,4.7,本章小结,本章对关系数据库的标准语言,结构化查询语言,SQL,进行了全面的介绍,数据定义语句、数据操纵语句、数据控制语句、嵌入式,SQL,,并且对,SQL server2005,数据库管理系统中的,Transact-SQL,语言进行了全面的介绍,在介绍的过程中给出了一些例子。,9/16/2024,74,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!