会计数据分析与处理:基于 SQL 课件 第6章 SQL语句_第1页
会计数据分析与处理:基于 SQL 课件 第6章 SQL语句_第2页
会计数据分析与处理:基于 SQL 课件 第6章 SQL语句_第3页
会计数据分析与处理:基于 SQL 课件 第6章 SQL语句_第4页
会计数据分析与处理:基于 SQL 课件 第6章 SQL语句_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章SQL语句

第6章SQL语句

6.1SQL简介

6.2数据库操作

6.2.1创建数据库 6.2.2修改数据库 6.2.3关闭数据库 6.2.4删除数据库

6.3表操作

6.3.1创建表 6.3.2修改表 6.3.3删除表 6.3.4索引 6.3.5约束6.3.6创建数据库表、外键案例6.4数据管理 6.4.1数据查询 6.4.2数据更新6.4.3数据初始化案例6.4.4游标 6.4.5视图 6.5SQL常用函数

6.5.1聚合函数 6.5.2日期和时间函数 6.5.3数学函数 6.5.4字符串函数 6.5.5其他函数 6.5.6数据统计分析案例 【学习目的】

掌握SQL语句。应用SQL语句实现对进销存系统、账务处理系统等案例数据库中表的创建;实现对码表、基本信息表、单据表以及账表数据增加、删除、修改、查询等基本操作,实现对基本信息表、单据表以及账表等数据的统计分析。

【教学案例】

【案例1】使用SQL语句创建进销存系统案例数据库中的表。

【案例2】使用SQL语句创建账务处理系统案例数据库中的表。

【案例3】创建进销存系统案例数据库中表的外键。

【案例4】创建账务处理系统案例数据库中表的外键。

【案例5】初始化进销存系统案例数据库中的数据。

【案例6】初始化账务处理系统案例数据库中的数据。

【案例7】创建进销存系统案例数据库中表的视图。

【案例8】创建账务处理系统案例数据库中表的视图。

【案例9】通过SQL语句实现对进销存系统案例数据库中的单据、账表数据的统计分析。

【案例10】通过SQL语句实现对账务处理系统案例数据库中的单据、账表数据的统计分析。6.1SQL简介关系数据库中的关系就是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。结构化查询语言(StructuredQueryLanguage,简称SQL)作为一种关系数据库查询和程序设计语言被广泛应用和标准化,主要用于存取数据以及查询、更新和管理关系数据库系统。6.1SQL简介SQL主要功能(1)数据定义(DataDefinition)(2)数据操纵(DataManipulation)(3)数据查询(DataQuery)(4)数据控制(DataControl)6.1SQL简介SQL功能说明动词数据定义创建、删除、修改数据库对象(表、视图、索引等)。CREATE,DROP,ALTER数据操纵实现对数据的插入、更新、删除等操作。INSERT,UPDATE,DELETE数据查询实现对数据的进行查询、统计、排序、分组、检索等操作。SELECT数据控制更改数据库用户或角色权限,用于保证数据的安全性和完整性。GRANT,REVOKE6.2数据库操作创建数据库使用CREATEDATABASE命令,可以创建一个新数据库。其简明语法格式如下:CREATEDATABASE数据库名例如:创建数据库test.db。CREATEDATABASEtest修改数据库修改数据库使用ALTERDATABASE命令,简明语法格式如下:ALTERDATABASE原数据库名MODIFYname=新数据库名例如:将数据库test更名为ais。ALTERDATABASEtestMODIFYname=ais6.2数据库操作关闭数据库关闭当前数据库使用CLOSEDATABASE命令,其语法格式如下:CLOSEDATABASE在删除数据库前,必须先使用此命令。删除数据库删除数据库可以使用DROPDATABASE语句实现,其语法格式如下:DROPDATABASE数据库名注意被删除的数据库不能是当前正在使用的数据库。数据库一旦被删除,如果没有备份,就不能再恢复。6.3表操作表的组成6.3表操作基本格式:CREATETABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]]…[,<表级完整性约束条件>]);6.3.1创建表注意事项:(1)建表的同时通常还可以定义与该表相关的完整性约束条件,用于检测用户操作是否合法(如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级)(2)一个表只有一个主键,且主键不能重复,不能为空。在创建表时就可以对列添加主键约束(PRIMARYKEY)。(3)表名以井号“#”开头的表为临时表6.3表操作一般格式:ALTERTABLE<表名>[ADD[COLUMN]<新列名><数据类型>[完整性约束]][ADD<表级完整性约束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]][DROPCONSTRAINT<完整性约束名>[RESTRICT|CASCADE]][ALTERCOLUMN<列名><数据类型>];注意事项:(1)ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件(2)DROPCOLUMN子句用于删除表中的列,如果指定了CASCADE短句,则自动删除引用了该列的其他对象,比如视图;如果指定了RESTRICT短语,则如果该列被其他对象引用,将拒绝删除该列(3)DROPCONSTRAINT子句用于删除指定的完整性约束条件(4)ALTERCOLUMN子句用于修改原有的列定义,包括修改列名和数据类型6.3.2修改表6.3表操作一般格式:DROPTABLE<表名>[RESTRICT|CASCADE];注意事项:(1)RESTRICT,则该表的删除是有限制条件的。需要删除的基本表不能被其他表的约束所使用(如CHECK,FOREIGNKEY等约束),不能有视图,不能有触发器、存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。默认是RESTRICT。(2)若选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图都将被一起删除。6.3.3删除表6.3表操作1.建立索引在SQL语言中,建立索引使用CREATEINDEX语句,其一般格式为:CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]...);其中,<表名>是要建索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认值为ASC。UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序,它确定了表中数据的物理顺序,每张表只能建一个聚簇索引。索引定义:

索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。因此合理的索引可以加速数据的检索过程。索引所在的列不允许重复,可以为空。一个表可以建立多个索引6.3.4索引6.3表操作2.修改索引对于已经建立的索引,如果需要对其重新命名,可以使用ALTERINDEX语句,其一般格式为:ALTERINDEX<旧索引名>RENAMETO<新索引名>;3.删除索引索引一经建立就由系统使用和维护,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增加、删除、修改操作过于频繁,系统会花费很多时间来维护索引,从而降低查询效率。这时可以删除一些不必要的索引。删除索引使用DROPINDEX语句,其一般格式为:DROPINDEX<索引名>;删除索引时,系统会同时从数据字典中删除有关该索引的描述。6.3表操作数据库的完整性是指数据的正确性、有效性和相容性,以防止错误的数据进入数据库。数据的正确性是指数据的合法性,例如数值型数据中只能包含数字而不能包含字母。数据的有效性是指数据是否属于所定义的有效范围。而数据的相容性是指同一事实的两个数据应相同。数据库的完整性约束可以通过定义表时进行定义,也可以通过规则、索引、触发器等进行定义。完整性约束是一种规则,不占用任何数据库空间,在执行SQL期间使用。用户可以指明约束是启用还是禁用。完整性约束有五种类型:唯一性和主键约束、检查约束、空值约束、默认值约束和外键约束,相应的五大关键词有UNIQUE和PRIMARYKEY、CHECK、NOTNULL、DEFAULT、FOREIGNKEY。6.3.5约束6.3表操作1.唯一性和主键约束常见格式:CREATETABLE<表名>(…<列名><数据类型>NOTNULLPRIMARYKEY[,…]);CREATETABLE<表名>(…<列名><数据类型>NOTNULLCONSTRAINT<约束名>PRIMARYKEY[,…]);CREATETABLE<表名>(…<列名1><数据类型>NOTNULL[,<列名2><数据类型>NOTNULL/NULL],CONSTRAINT<主键名>PRIMARYKEY(<列名1>)[,CONSTRAINT<约束名>UNIQUE(<列名2>)]…);ALTERTABLE<表名>CONSTRAINT<约束名>UNIQUE(<列名>);6.3表操作2.检查约束检查列是否满足某个条件,语法结构为:ALTERTABLE<表名>ADDCONSTRAINT<约束名>CHECK(<条件表达式>);3.空值约束限制列级别为非空,语法结构为:MODIFY<列名>NOTNULL;6.3表操作4.默认值约束约束列默认为一定的数据,语法结构为:ALTERTABLE<表名>ADDCONSTRAINT<约束名>DEFAULT<默认值>FOR<列名>;创建约束之后可以删除、禁用、启用约束和修改约束名,对应的语法结构为:ALTERTABLE<表名>DROPCONSTRAINT<约束名>;ALTERTABLE<表名>DISABLECONSTRAINT<约束名>;ALTERTABLE<表名>ENABLECONSTRAINT<约束名>;ALTERTABLE<表名>RENAMECONSTRAINT<约束名>TO<约束名1>.6.3表操作5.外键约束(1)创建外键在CREATTABLE时可以直接定义外键,其一般格式为:CREATTABLE<表名>(…[<列名1><数据类型>REFERENCES<表名1>(<列名>)][,<列名2><数据类型>[列级完整性约束条件]][,FOREIGNKEY(<列名2>)REFERENCES<表名2>(<列名>)]…);其中<表名>通过外键约束分别与<表名1>、<表名2>建立了关联。REFERENCES关键字指定与当前创建或修改的表相关联的表和列。FOREIGNKEY关键字指定当前创建的约束类型为外键约束。如果创建表的时候没有创建外键,也可以手动添加外键。其格式为:ALTERTABLE<表名>ADDCONSTRAINT<外键约束名>FOREIGNKEY(<列名>)REFERENCES<表名1>(<列名1>);其中<表名>通过外键约束与<表名1>建立关联。(2)删除外键SQL语言采用ALTERTABLE语句来删除外键,其基本格式为:ALTERTABLE<表名>DROPCONSTRAINT<外键约束名>;其中外键约束名可以在表的约束属性中找到,默认以FK_开头。6.3表操作【案例1】使用SQL语句创建进销存系统案例数据库中的表。【案例2】使用SQL语句创建账务处理系统案例数据库中的表。【案例3】创建进销存系统案例数据库中表的外键。(SQL与文档参见附件案例。)6.3.6创建数据库表、外键案例6.4数据管理一般格式:SELECT[ALL|DISTINCT][TOPn[PERCENT]]<目标列表达式>[,<目标列表达式>]…|[<目标列表达式>AS<别名>]FROM<表名或视图名>[,<表名或视图名>…][WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]];注意事项:(1)如果有GROUPBY子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中使用聚集函数。如果GROUPBY子句带HAVING短语,则只输出满足HAVING指定条件的组。(2)如果有ORDERBY子句,则结果表还要按<列名2>的值进行升序(ASC)或降序(DESC)排序。6.4.1数据查询6.4数据管理数据查询——单表查询1.单表查询(1)选择表中的若干列:选择表中的全部列或部分列。1)查询指定列在很多情況下,用户只对表中的一部分属性列感兴趣,这时可以通过在SELECT子句的<目标列表达式>中指定要査询的属性列。<目标列表达式>中各个列的先后顺序可以与表中的顺序不一致。用户可以根据应用的需要改变列的显示顺序。2)查询全部列将表中的所有属性列都选出来有两种方法,一种方法就是在SELECT关键字后列出所有列名;如果列的显示顺序与其在表中的顺序相同,也可以简单地将<目标列表达式>指定为*。3)查询经过计算的值SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式。<目标列表达式>不仅可以是算术表达式,还可以是字符串常量、函数等。用户可以通过指定别名来改变査询结果的列标题,这对于含算术表达式、常量、函数名的目标列表达式尤为有用。

4)查询结果改变显示列标题SELECT<目标列表达式>AS<别名>6.4数据管理(2)选择表中的若干元组1)取消取值重复的行两个本来并不完全相同的元组在投影到指定的某些列上后,可能变成相同的行。可以用DISTINCT取消它们。如果没有指定DISTINCT关键词,则默认为ALL,即保留结果表中取值重复的行。2)输出前几行如果从查询结果集中输出前n行,可使用TOPn。3)查询满足条件的元组査询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如下表所示。6.4数据管理

查询条件谓词比较=,<,>,>=,<=,!=,<>,!>,!<,NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑运算)AND,OR,NOT6.4数据管理(3)ORDERBY子句

用户可以用ORDERBY子句对査询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序。注意:对于空值,排序时显示的次序由具体系统实现来决定。例如按升序排,含空值的元组最后显示;按降序排,含空值的元组则最先显示。各个系统的实现可以不同,只要系统内部保持一致就行。(4)GROUPBY子句GROUPBY子句将查询结果按某一列或多列的值分组,值相等的为一组。注意:WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。6.4数据管理2.多表查询(1)等值连接(包含自然连接)与非等值连接查询一般格式:SELECT<投影的字段列表>FROM<表1>,<表2>WHERE[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>连接条件形式:WHERE子句[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>(2)内连接查询一般格式:SELECT<投影的字段列表>FROM<表1>JOIN<表2>ON<表1.列名>=<表2.列名>;数据查询——多表查询6.4数据管理(3)自身连接查询自身连接是将一个表与它自身进行连接。若要在一个表中查找具有相同列值的行,则可以使用自身连接。使用自身连接时需为表指定两个别名,且对所有列的引用均要用别名限定。一般格式:SELECT<投影的字段列表>FROM<表1别名1>,<表1别名2>WHERE<别名1.列名>=<别名2.列名>;或:SELECT<投影的字段列表>FROM<表1别名1>JOIN<表1别名2>ON<别名1.列名>=<别名2.列名>;6.4数据管理(4)外连接查询指定了OUTER关键字的为外连接,外连接的结果表不但包含满足连接条件的行,还包括相应表中的所有行。外连接包括以下三种:1)左外连接(LEFTOUTERJOIN):SELECT<投影的字段列表>FROM<表1>LEFTOUTERJOIN<表2>ON<表1.列名>=<表2.列名>;2)右外连接(RIGHTOUTERJOIN):SELECT<投影的字段列表>FROM<表1>RIGHTOUTERJOIN<表2>ON<表1.列名>=<表2.列名>;3)完全外连接(FULLOUTERJOIN):SELECT<投影的字段列表>FROM<表1>FULLOUTERJOIN<表2>ON<表1.列名>=<表2.列名>;6.4数据管理(5)交叉连接(笛卡尔积)交叉连接实际上是将两个表进行笛卡尔积运算,结果表是由第一个表的每一行与第二个表的每一行拼接后形成的表,称为“笛卡尔积表”,查询所得的结果行数是两张表行数的乘积。SELECT<投影的字段列表>FROM<表1>JOIN<表2>;(6)复合条件连接查询WHERE字句中含有多个连接条件时,称为复合条件连接查询。6.4数据管理3.嵌套查询在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的査询称为嵌套查询。一般格式:SELECTname/*外层查询或父查询*/FROMjxc_goodsWHEREcodeNOTIN(SELECTcode/*内层查询或子查询*/FROMjxc_sheet_buy);注意:子査询的SELECT语句中不能使用ORDERBY子句,ORDERBY子句只能对最终查询结果排序。数据查询——嵌套查询6.4数据管理(1)带有IN的子查询在嵌套查询中,子查询的结果往往是一个集合,所以IN是嵌套查询中经常使用。如果子查询的查询条件不依赖于父查询,则称为不相关子查询。如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。(2)带有比较运算符的子查询带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。当用户能确切知道内层查询返回的是单个值时,可以用>、<、=、>=、<=、!=或<>等比较运算符。(3)带有ANY(SOME)或ALL的子查询子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL修饰符。而使用ANY或ALL时则必须同时使用比较运算符。其语义如下表所示:6.4数据管理ANY或ALL谓词说明>ANY(等价于>MIN)大于子查询结果中的某个值>ALL(等价于>MAX)大于子查询结果中的所有值<ANY(等价于<MAX)小于子查询结果中的某个值<ALL(等价于<MIN)小于子查询结果中的所有值>=ANY(等价于>=MIN)大于等于子查询结果中的某个值>=ALL(等价于>=MAX)大于等于子查询结果中的所有值<=ANY(等价于<=MAX)小于等于子查询结果中的某个值<=ALL(等价于<=MIN)小于等于子查询结果中的所有值=ANY(等价于IN)等于子查询结果中的某个值=ALL等于子查询结果中的所有值!=(或<>)ANY不等于子查询结果中的某个值!=(或<>)ALL(等价于NOTIN)不等于子查询结果中的任何一个值6.4数据管理(4)带有EXISTS的子查询带有EXISTS的子查询不返回任何数据,只产生逻辑真值“True”或逻辑假值“False”。使用EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。与EXISTS相对应的是NOTEXISTS。使用NOTEXISTS后,若内层查询结果为空,则外层的WHERE子句返回真值,否则返回假值。6.4数据管理4.集合查询SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。一般格式:SELECT<投影的字段列表1>FROM<表1>UNION[ALL]SELECT<投影的字段列表2>FROM<表2>注意:UNION操作符默认选取不同的值。如果允许重复的值,则使用UNIONALL。UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。数据查询——集合查询6.4数据管理5.基于派生表的查询子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表成为主查询的查询对象。通过FROM子句生成派生表时,AS关键字可以省略,但必须为派生关系指定一个列名。而对于基本表,别名是可选项。数据查询——基于派生表的查询6.4数据管理1.数据插入

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是子查询结果。后者可以一次插入多个元组。(1)插入元组插入元组的INSERT语句的格式为:INSERTINTO<表名>[(<属性列1>[,<属性列2>]…)]VALUES(<常量1>[,<常量2>]…);注意:INTO子句中没有出现的属性列,新元组在这些列上将取空值。但必须注意的是,在表定义时说明了NOTNULL的属性列不能取空值,否则会出错。如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。(2)插入子查询结果子查询可以嵌套在INSERT语句中用以生成要插入的批量数据。插入子查询结果的INSERT语句结构为:INSERTINTO<表名>[(<属性列1>[,<属性列2>]…)]6.4.2数据更新6.4数据管理2.数据修改一般格式:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];注意:其中SET子句给出<表达式>的值用于取代相应的属性列值。如果省略WHERE子句,则表示要更新表中的所有元组。子查询也可以嵌套在UPDATE语句中,用以构造更新条件。3.数据删除一般格式:DELETEFROM<表名>[WHERE<条件>];注意:如果省略WHERE子句则表示删除表中全部元组,但表的定义仍在字典中。也就是说,DELETE语句删除的是表中的数据,而不是关于表的定义。子查询同样也可以嵌套在DELETE语句中,用以构造执行删除操作的条件。6.4数据管理【案例5】初始化进销存系统案例数据库中的数据。【案例6】初始化账务处理系统案例数据库中的数据。(SQL与文档参见附件案例。)6.4.3数据初始化案例6.4数据管理游标(Cursor)用于临时存储一个查询返回的多行数据(结果集,通过遍历游标逐行访问处理该结果集的数据。游标提供了一种对从表中检索出的数据进行操作的灵活手段,是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。当SELECT语句的查询结果是包含多个元组的集合时,游标提供了在结果集合中一次以一行或者多行前进或后向浏览数据的能力。五个步骤:声明→打开→读取→关闭→删除6.4.4游标6.4数据管理步骤:(1)声明游标DECLARE<游标名>CURSORFORSELECT语句(2)打开游标OPEN<游标名>(3)读取游标数据FETCH[NEXT|PRIOR|FIRST|LAST|ABSOLUTEN|RELATIVEN]FROM<游标名>INTO@name1,@name2,…WHILE(@@FETCH_STATUS=0) BEGIN

要执行的语句

FETCHNEXTFROM<游标名>INTO@name1,@name2,… END开启游标后,默认位于结果集的第一行前,因此需要FETCHNEXT,取第一个元组。利用@@FETCH_STATUS判断是否有数据,若有执行WHILE循环中BEGIN开始的语句,添加FETCHNEXT语句使游标不断移动到下一条数据。6.4数据管理读取游标数据,注意事项:NEXT返回结果集中当前行的下一行记录,如果第一次读取则返回第一行。默认读取选项为NEXT。PRIOR返回结果集中当前行的前一行记录,如果第一次读取则没有行返回,并且把游标置于第一行之前。FIRST返回结果集中的第一行,并且将其作为当前行。LAST返回结果集中的最后一行,并且将其作为当前行。ABSOLUTEN,如果N为正数,则返回从游标头开始的第N行,并且返回行变成新的当前行。如果N为负,则返回从游标末尾开始的第N行,并且返回行为新的当前行,如果N为0,则返回当前行。RELATIVEN,如果N为正数,则返回从当前行开始的第N行,如果N为负,则返回从当前行之前的第N行,如果为0,则返回当前行。6.4数据管理(4)关闭游标CLOSE<游标名>关闭后不能再对游标进行读取等操作。(5)删除游标DEALLOCATE<游标名>删除游标,不再使用。(例子略)6.4数据管理介绍:

视图是从当前数据库中一个或多个基本表(或视图)中导出的表,是虚表。创建视图的主要目的是为了数据管理,根据用户不同的权限,向其展示可以使用的数据。视图可以便于用户操作,增加数据库使用的安全性。1.创建视图视图除了可以通过图形化界面(视图设计器)创建之外,还可以直接使用CREATEVIEW语句创建,其格式为:CREATEVIEW<视图名>[WITH视图参数]AS<SELECT语句>;其中“WITH视图参数”子句是可选项,定义了视图的属性。6.4.5视图6.4数据管理2.修改视图利用ALTERVIEW语句修改视图,其格式为:ALTERVIEW<视图名>[WITH视图参数]AS<SELECT语句>;3.删除视图有相关权限的用户可以删除视图,而表和视图所基于的数据并不受影响。可以使用DROPVIEW语句删除视图,基本语法如下:DROPVIEW<视图名>;【案例7】创建进销存系统案例数据库中的视图。【案例8】创建账务处理系统案例数据库中的视图。(SQL与文档参见附件案例。)6.5SQL常用函数SQL函数通常分为聚合函数(Aggregatefunction)与标量函数(Scalarfunction)。聚合函数对一组值执行计算并返回单个值。除了COUNT以外,聚合函数都会忽略空值其与SELECT语句的GROUPBY子句一起使用,所有聚合函数都具有确定性,任何时候用一组给定的输入值调用它们时,都返回相同的值。标量函数只能对单个的数字或值进行计算,并返回基于输入值的一个单一的值,主要包括字符函数、日期/时间函数、数值函数和转换函数这四类。注意:DECLARE@<变量>变量类型SET@<变量>=<表达式>SELECT@<变量>=<表达式>常用函数6.5SQL常用函数6.5.1聚合函数函数格式功能AVGAVG([ALL|DISTINCT]EXPRESSION)返回表达式EXPRESSION的平均值COUNTCOUNT([[ALL|DISTINCT]EXPRESSION]|*)返回组中项目的数量,这里的表达式EXPRESSION可以是除TEXT,NTEXT,IMAGE以外任意类型,不允许使用聚合函数和子查询MAXMAX([ALL|DISTINCT]EXPRESSION)返回表达式EXPRESSION的最大值MINMIN([ALL|DISTINCT]EXPRESSION)返回表达式EXPRESSION的最小值SUMSUM([ALL|DISTINCT]EXPRESSION)返回表达式EXPRESSION的所有值之和,或只返回DISTINCT的值。SUM只能用于列STDEVSTDEV([ALL|DISTINCT]EXPRESSION)返回表达式EXPRESSION的所有值的统计标准差。EXPRESSION必须是一个数值表达式,不允许使用聚合函数和子查询6.5SQL常用函数函数格式功能GETDATEGETDATE()以DATETIME值的SQLServer标准内部格式返回当前系统日期和时间DATENAMEDATENAME(DATEPART,DATE)返回指定日期DATE的指定日期部分DATEPART的字符串。DATEPART说明:

见右图DATEPARTDATEPART(DATEPART,DATE)返回指定日期DATE的指定日期部分DATEPART的整数DATEADDDATEADD(DATEPART,NUMBER,DATE)返回给指定日期DATE加上NUMBER个时间段DATEPART后的新的DATETIME的值6.5.2日期和时间函数6.5SQL常用函数函数格式功能DATEDIFFDATEDIFF(DATEPART,STARTDATE,ENDDATE)返回跨两个指定日期STARTDATE和ENDDATE的日期边界数和时间边界数GETUTCDATEGETUTCDATE()返回表示当前UTC时间(通用协调时间或格林尼治标准时间)的

DATETIME值。当前的UTC时间得自当前的本地时间和运行MicrosoftSQLServer实例的计算机操作系统中的时区设置。DAYDAY(DATE)返回指定日期DATE中天数的整数MONTHMONTH(DATE)返回指定日期DATE中月份部分的整数YEARYEAR(DATE)返回指定日期DATE中年份部分的整数6.5SQL常用函数6.5.3数学函数函数格式功能ABSABS(EXPRESSION)返回与数值表达式EXPRESSION类型一致的数据CEILINGCEILING(EXPRESSION)返回大于等于所给数字表达式EXPRESSION的最小整数值FLOORFLOOR(EXPRESSION)返回小于等于所给数字表达式EXPRESSION的最大整数值EXPEXP(EXPRESSION)返回所给表达式EXPRESSION的指数值LOGLOG(EXPRESSION)返回给定表达式EXPRESSION的自然对数值LOG10LOG10(EXPRESSION)返回给定表达式EXPRESSION的以10为底的对数值PIPI()返回圆周率的常量值POWERPOWER(EXPRESSION,INDEX)返回指定表达式EXPRESSION的指定次方INDEX的值RANDRAND([SEED])返回0-1之间的随机值ROUNDROUND(EXPRESSION,LENGTH)返回数字表达式EXPRESSION,并四舍五入到指定的长度或者精度SQUARESQUARE(EXPRESSION)返回给定表达式EXPRESSION的平方SQRTSQRT(EXPRESSION)返回给定表达式EXPRESSION的平方根6.5SQL常用函数6.5.4字符串函数函数格式功能ASCIIASCII(EXPRESSION)返回字符表达式EXPRESSION最左端字符的ASCII码值CHARCHAR(EXPRESSION)将ASCII码(EXPRESSION)转换为字符。如果没有输入0-255之间的ASCII码值,返回NULLCHARINDEXCHARINDEX(CODE,EXPRESSION)返回表达式EXPRESSION中指定字符CODE的开始位置LEFTLEFT(EXPRESSION,NUMBER)返回字符表达式EXPRESSION最左侧指定数目NUMBER的字符串LENLEN(EXPRESSION)返回字符表达式EXPRESSION字符的个数,且不包含尾随空格LOWER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论