




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库SQL函数使用基础第1页内容提要关系数据库基本知识SQL语言概述SQL语句(Select)使用SQL函数使用SQL语句与数据库可用性和性能关系第2页目标了解数据库一些基本概念(表、列、索引、事务、锁)了解SQL语言历史、特点和语句分类掌握Select语句基本语法结构和使用掌握Select语句中复杂条件、排序、分组、聚集计算使用了解多表关联查询(左连接和等值连接)使用和注意事项掌握主要函数使用方法和使用注意事项结合一些例子,说明编写SQL时注意事项;记住常见易造成IQ数据库可用性(节点宕机、资源消耗大)问题和性能问题一些SQL操作/函数
第3页内容提要关系数据库基本知识SQL语言概述SQL语句(Select)使用SQL函数使用SQL语句与数据库可用性和性能关系第4页关系数据库基本知识数据库基本知识数据库概念和基本特征数据库管理系统数据模型关系数据库基础关系数据库定义表特征完整性问题表与表之间关系视图第5页关系数据库基本知识关系数据库基础索引锁事务第6页数据库和概念基本特征数据概念数据(Data)是数据库中存放基本对象数据定义
描述事物符号统计数据分类文字、图形、图像、声音数据库概念和特征数据库是按照某种数据模型组织起来长久存放在计算机内有组织、可共享数据集合第7页数据库概念和基本特征数据库概念和特征这种数据集合含有以下特点:数据按一定数据模型组织、描述和储存可为各种用户共享冗余度较小数据独立性较高易扩展含有一致性和可维护性,能够确保数据可靠性和安全性第8页数据库管理系统定义位于用户和操作系统之间一个软件(数据库管理软件)用途科学地组织和存放数据、高效地获取、管理和维护数据组成数据描述语言(DDL)及其翻译程序数据操纵语言(DML)及其翻译程序数据库运行管理程序第9页数据模型定义表示实体类型及实体类型间联络模型称为“数据模型”种类概念数据模型结构数据模型实体定义:客观存在并可相互区分事物。如:客户,产品等第10页数据模型概念数据模型它是独立于计算机系统模型,完全不包括信息在系统中表示,只是用来描述某个特定组织所关心信息结构。结构数据模型它是直接面向数据库逻辑结构,是现实世界第二层抽象,主要包含:层次模型——用树型结构表示实体间联络数据模型。网状模型——有向图结构表示实体类型及实体间联络 数据模型。关系模型——用二维表格结构表示实体集,用外键表示
实体间联络。第11页关系数据库定义关系数据库是关系(二维表)集合关系数据库使用关系(二维表)存放数据由行和列组成二维结构
存放学生信息关系表
列(字段/属性)行(一条统计)第12页表特征二维表是由行和列组成二维结构每一行称为元组(统计行),每一列含有唯一名称(字段/属性名)行和列交叉点,表示单个数据值(数据项)每张表必须含有主键,用来标识唯一元组每一列全部值必须符合相同数据格式每一列含有特定范围值,称为属性域行与列次序并不主要第13页表特征字段字段用于保留数据中某一类型属性,需要为字段定义对应类型常见类型数值、字符串、日期/时间主键能够唯一标识表中每条统计字段或者字段组合一张表中只能有一个主键第14页数据完整性数据完整性是指数据正确性、相容性和有效性完整性包含:输入类型是否正确?年纪必须是数字输入格式是否正确?
身份证号码必须是18位是否在允许范围内?性别只能是”男”或者”女”是否存在重复输入?学员信息输入了两次是否符合其它特定要求?信誉值大于5用户才能够加入会员列表……列值要求(约束)整行要求(约束)第15页数据完整性关系模型完整性规则是对关系某种约束条件完整性约束包含:实体完整性域完整性参考完整性用户定义完整性第16页实体完整性实体完整性要求表中全部行都有唯一标识实现方法有主键约束(PRIMARYKEY)惟一性约束(UNIQUE)第17页域完整性域完整性指列值域完整性如数据类型、格式、值域范围、是否允许空值等域完整性限制了一些属性中出现值,把属性限制在一个有限集合中比如,假如属性类型是整数,那么它就不能是101.5或任何非整数第18页参考完整性参考完整性是对不一样表之间属性或字段引用关系比如外键约束职员号部门编号姓名…9801980298039804980501010203张三李四王五赵六钱七部门编号部门名称…01020304经理办公室人事部公关部技术部职员表(R2)部门表(R1)主键外键第19页参考完整性注意实体完整性是对应元组或者行而言。域完整性是对应属性或者列而言。引用完整性是对不一样表之间属性或列引用关系而言。第20页用户定义完整性关系数据库系统依据应用环境不一样,往往需要一些特殊约束条件,用户定义完整性是针对某一详细应用领域,对关系数据库提出约束条件。反应了某一详细应用包括数据必须满足语义要求比如:学生年纪限制为14---35之间关系数据库提供了定义和检验这些完整性约束机制,方便用统一系统方法处理它们,而不用应用程序处理第21页表与表之间关系表与表之间关系分为三种一对一关系比如,班级与班长之间联络:一个班级只有一个正班长一对多关系班级与学生之间联络:一个班级中有若干名学生,每个学生只在一个班级中学习多对多关系课程与学生之间联络:一门课程同时有若干个学生选修一个学生能够同时选修多门课程第22页视图视图是一个虚拟表,其内容由查询定义同真实表一样,视图包含一系列字段和行数据。不过视图并不在数据库中真正存放数据。视图中数据来自于定义视图查询所引用表,而且在使用视图时动态生成。为何要使用视图简单性——看到就是需要安全性——经过视图用户只能查询和修改他们所能见到数据逻辑数据独立性——视图能够帮助用户屏蔽真实表结构改变带来影响第23页索引在关系数据库中,能够使用索引加紧访问表中数据速度在了解索引时,能够想象一本书,其中书内容就相当于表里数据,而书前面目录就相当于该表索引经过在要执行搜索表中选择一列或多列来创建索引索引是针对表中某个字段或某几个字段创建关系数据库会在一些约束上自动创建对应索引(比如:主键、唯一约束)第24页IQ数据库支持九种索引第25页事务数据库事务是指作为单个逻辑工作单元执行一组操作事务含有ACID属性原子性——是指对工作单元中修改数据操作要么全都执行,要么都不执行一致性——是指事务在完成时,必须使全部数据都保持一致状态隔离性——是指由并发事务所做修改必须与任何其它并发事务所做修改相隔离持久性——是指事务完成后,事务对数据所做修改时持久。第26页锁不一样关系数据库产品在实现事务隔离性时可能会采取不一样方法,当前主要有两类方法:一个是采取"消极"方法,这种方法主要采取锁定技术(locking)来实现不一样隔离级别(比如:SAPASE);另一类方法主要采取MVCC(即多版本并发控制,是一个"乐观"方法)技术再辅之以少许锁实现(比如:SAPIQ)第27页锁不一样关系数据库产品在实现事务隔离性时可能会采取不一样方法,当前主要有两类方法:一个是采取"消极"方法,这种方法主要采取锁定技术(locking)来实现不一样隔离级别(比如:SAPASE);另一类方法主要采取MVCC(即多版本并发控制,是一个"乐观"方法)技术再辅之以少许锁实现(比如:SAPIQ)第28页IQ数据库事务和锁特点IQ使用ANSI隔离级别3保持事务中数据一致性,这一隔离级别也叫做“SnapshotVersioning”。在一个事务进行过程中,IQ展现给每一个连接到数据库用户最近一次已提交表数据快照,直到用户重新连接到IQ或发出“commit”命令第29页IQ数据库事物和锁特点IQ执中行Insert、Update、Delete、LoadTable等语句时会加排它锁;而查询(Select)语句不会向ASE那样加上共享锁,而是经过“版本快照技术”实现事物隔离性IQ数据库中能够有多个“写用户”,写用户不会阻塞读用户,读用户不会阻塞写用户,不过对于同一个表只允许一个写用户IQ在实现SnapshotVersioning机制时,需要使用IQMainStore中空间存放版本数据。当有大量用户连接时,而且用户执行大量数据修改,会占用大量MainStore空间。第30页内容提要关系型数据库基本知识SQL语言概述SQL语句(Select)使用SQL函数使用SQL语句与数据库可用性和性能关系第31页SQL简史上世纪70年代,SQL诞生于IBM企业在加利福尼亚SanJose试验室SQL全称是结构化查询语言StructuredQueryLanguage并经常简称为sequelSQL为RDBMS(关系型数据库管理系统)开发是一个非过程语言非过程性语言意思就是指与详细过程无关举例来说SQL描述了怎样对数据进行检索插入删除但它并不说明怎样进行这么操作第32页SQL语言介绍SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早是IBM圣约瑟研究试验室为其关系数据库管理系统SYSTEMR开发一个查询语言,它前身是SQUARE语言。SQL语言结构简练,功效强大,简单易学,所以自从IBM企业1981年推出以来,SQL语言,得到了广泛应用。如今不论是像Oracle,Sybase,Informix,SQLserver这些大型数据库管理系统,还是像VisualFoxporo,PowerBuilder这些微机上惯用数据库开发系统,都支持SQL语言作为查询语言。第33页SQL语言介绍美国国家标准协会(ANSI)和国际标准化组织(ISO)已将其同意为正式关系查询语言标准。ANSISQL-86ANSISQL-89ANSISQL-92ANSISQL-99ANSISQL-ANSISQL标准实际上定义了三个级别兼容性:入门级、中级与完整级。大多数产品完全符合入门级标准,但只部分符合更高标准。第34页SQL语言特点统一语言 SQL可用于全部用户DB活动模型,包含系统管理员、数据库管理员、应用程序员、决议支持系统人员及许多其它类型终端用户。基本SQL命令只需极少时间就能学会,最高级命令在几天内便可掌握。 SQL为许多任务提供了命令,包含:查询数据在表中插入、修改和删除统计建立、修改和删除数据对象控制对数据和数据对象存取确保数据库一致性和完整性 以前数据库管理系统为上述各类操作提供单独语言,而SQL将全部任务统一在一个语言中。第35页SQL语言特点非过程化语言SQL是一个非过程化语言,因为它一次处理一个统计,对数据提供自动导航。SQL允许用户在高层数据结构上工作,而不对单个统计进行操作,可操作统计集。全部SQL语句接收集合作为输入,返回集合作为输出。SQL集合特征允许一条SQL语句结果作为另一条SQL语句输入。SQL不要求用户指定对数据存放方法。这种特征使用户更易集中精力于要得到结果。全部SQL语句使用查询优化器,它是RDBMS一部分,由它决定对指定数据存取最快速度伎俩。查询优化器知道存在什么索引,哪儿使用适当,而用户从不需要知道表是否有索引,表有什么类型索引。第36页SQL语言特点面向集合操作方式SQL语言采取集合操作方式,不但查找结果能够是元组集合,而且一次插入、删除、更新操作对象也能够是元组集合非关系数据模型采取是面向统计操作方式,任何一个操作其对象都是一条统计。比如查询全部平均成绩在80分以上学生姓名,用户必须说明完成该请求详细处理过程,即怎样用循环结构按照某条路径一条一条地把满足条件学生统计读出来。第37页SQL语言特点是所相关系数据库公共语言 因为全部主要关系数据库管理系统都支持SQL语言,用户可将使用SQL技能从一个RDBMS(关系数据库管理系统)转到另一个,全部用SQL编写程序都是能够移植。
第38页SQL语言特点以同一个语法结构提供两种使用方式 SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互使用方式,用户能够在终端键盘上直接键入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(比如C、COBOL、FORTRAN、PL/1)程序中,供程序员设计程序时使用。而在两种不一样使用方式下,SQL语言语法结构基本上是一致。这种以统一语法结构提供两种不一样使用方式作法,为用户提供了极大灵活性与方便性。第39页SQL语言特点语言简练,易学易用SQL语言功效极强,但因为设计巧妙,语言十分简练,完成数据定义、数据操纵、数据控制关键功效只用了9个动词:CREATE、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。而且SQL语言语法简单,靠近英语口语,所以轻易学习,轻易使用。第40页SQL语言分类DDL,数据定义语言DML,数据操纵语言DCL,数据控制语言第41页SQL语言分类——DDL用户创建或重新构建数据库语言 CREATETABLE ALTERTABLE DROPTABLE CREATEINDEX ALTERINDEX DROPINDEX第42页SQL语言分类——DML用于在关系数据库对象中操纵数据 INSERT UPDATE DELETE SELECT(也被单独称为DQL)第43页SQL语言分类——DCL用于创建与用户访问相关对象,也控制着用户权限分配 ALTERUSER改变数据库用户信息
GRANT为用户授予特权
REVOKE从用户处收回特权第44页事务控制命令用户管理数据库事务命令 COMMIT用于保护数据库事务 ROLLBACK用于撤消数据库事务 SAVEPOINT创建一组事务中撤消点
第45页内容提要关系数据库基本知识SQL语言概述SQL语句(Select)使用SQL函数使用SQL语句与数据库可用性和性能关系第46页SQL语句普通语法规则Select语句简单例子SELECT NAME,STARTTERM,ENDTERMFROM PRESIDENTSWHERE NAME=LINCOLN关键字(大小写不敏感)SelectFromWhere使用空格分开不一样部分第47页Select、From、Distinct语法:select<列名>
例1:selectcolname
例2:select*
例3:select10*10语法:from<表名>——第一个查询
例1:select*fromemployees;语法:DISTINCT(返回没有重复数据)例1:selectdistinctdept_idfromemployee第48页练习以下语句所返回结果是否相同SELECT*FROMCHECKSselect*fromchecks以下查询能否工作a.Selectb.Select*b.Select*fromemployeec.Selectemp_id,salaryFROMemployee第49页SQL语言元素关键字每个SQL语句都包含一个或多个关键字。SQL关键字不区分大小。比如,在下面语句中,SELECT和FROM是关键字: SELECT* FROMemployee第50页SQL语言元素保留字SQL中一些关键字也是保留字。要在SQL语句中使用保留字作为标识符,必须用双引号将它引发来。SQL语句中出现很多关键字都是保留字,但并非全部都是。比如,必须使用以下语法检索名为SELECT表内容。 SELECT* FROM"SELECT”SybaseIQ保留字详细列表,参见第51页SQL语言元素标识符标识符是数据库中对象(如用户ID、表和列)名称。标识符最大长度是128个字节。当以下任一条件成立时,标识符需要用双引号引发来或用中括号括起来:标识符包含空格。标识符首字符不是字母字符标识符包含保留字。标识符包含字母和数字以外其它字符。字母字符包含字母表中字母,以及下划线(_)、at符号(@)、井号(#)和美元符号($)。数据库归类序列指出了哪些字符被视为字母字符或数字字符。第52页表示式表示式定义非常简单:表示式能够返回一个值,表示式类型非常广泛,它以包含各种类型数据如数字、字符、逻辑类型等SELECTamountFROMchecksAmount是表示式SELECTNAME,ADDRESS,PHONEFROMADDRESSBOOKNAME、ADDRESS、PHONE、ADDRESSBOOK是表示式第53页SQL运算符算术运算符—加、减、乘、除、取模赋值运算符—=位运算符—&、|、^比较运算符—True、False、unknown;>、<、!=(<>)字符型—like(%、_)、||逻辑型—NOT、AND、ORselect*fromdepartmentwhere1=1or1=1and1=2select*fromdepartmentwherenot1=2and1=1第54页SQL运算符集合运算—union、unionall、intersect、minus隶属运算—in、between第55页搜索条件比较条件=等于>大于<小于>=大于或等于<=小于或等于!=不等于<>不等于!>小于!<大于
第56页搜索条件Between BETWEEN条件语法以下: expr[NOT]BETWEENstart-exprANDend-expr BETWEEN条件值能够是TRUE、FALSE或UNKNOWN。在没相关键字NOT情况下,假如expr介于start-expr和end-expr之间,则条件值为TRUE。NOT关键字使条件含义相反,但保留UNKNOWN不变。 BETWEEN条件相当于两个不等式组合: expr>=start-exprANDexpr<=end-expr第57页搜索条件LIKE LIKE条件语法以下: expression[NOT]LIKEpattern[ESCAPEescape-expr] LIKE条件值能够是TRUE、FALSE或UNKNOWN只能对字符串数据使用like
通配符匹配项_(下划线)任意一个字符%(百分号)包含零个或多个字符任意字符串[]指定范围或集合中任意单个字符[^]不在指定范围或集合中任意单个字符第58页搜索条件Exists EXISTS条件语法以下: EXISTS(subquery)
假如子查询结果最少包含一行,则EXISTS条件为TRUE;假如子查询结果不包含任何行,则条件为FALSE。EXISTS条件不能为UNKNOWN第59页搜索条件ISnull ISNULL条件语法以下: expressionIS[NOT]NULL
在没有NOT关键字情况下,假如表示式值为NULL,则ISNULL条件为TRUE,不然为FALSE。NOT关键字使条件含义相反。第60页练习写一个查询返回数据库中全部名字以M开头人WHEREa>=10ANDa<=30更便捷写法是什么请写出来
第61页SQL子句WhereGroupbyOrderbyHaving第62页SQL子句Where(对统计集合进行过滤) select*fromemployeewheresalary>100000 select*fromemployeewhereemp_fname='MaryAnne‘ select*fromemployeewhereemp_fnamelike'Mary%'第63页SQL子句Groupby(经惯用于分组计算) (1)selectdept_id,count(*)fromemployeegroupbydept_id(2)selectstate,city,count(*)fromEmployees
groupbystate//错误 (3)selectstate,city,count(*)fromemployees
groupbycity//错误对于分组来说,SELECT语句中出现字段只能是在GROUPBY中出现过才能够第64页SQL子句Orderby(用于对结果进行排序,asc/desc) (1)select*fromdepartment (2)select*fromdepartmentOrderbydept_name (3)selectdept_id,count(*)fromemployee groupbydept_idorderbydept_id,manager_iddesc (4)selectstate,count(*)fromemployeesgroupbystateorderbycount(*)desc第65页SQL子句Having(对分组数据进行限制) (1)selectdept_id,avg(salary)fromemployee whereavg(salary)>50000groupbydept_id ASAError-150:Invaliduseofanaggregatefunction(2)selectdept_id,avg(salary)fromemployeegroupbydept_id havingavg(salary)>50000第66页SQL子句Having(对分组数据进行限制) (3)selectdept_id,avg(salary)fromemployee groupbydept_id havingcount(*)>10//能够使用select子句没出现字段第67页SQL子句综合应用条件+排序 selectcity,sum(salary)fromemployee wherecitylike'Be%'orsalary>80000groupbycity orderbycity第68页SQL子句综合应用求和、平均、最大值、最小值 selectstate, round(sum(salary),2)sum,round(avg(salary),2)avg, round(max(salary),2)max,round(min(salary),2)min fromemployee groupbystate orderbystate第69页SQL子句综合应用全部子句都用到 selectstate,sum(salary),count(*) fromemployee wheresalary>50000 groupbystate havingsum(salary)>100000 Orderbycount(*)第70页三、多表关联查询交叉连接内部连接(等值连接、不等值连接)外部连接左连接右连接完全外连接自连接子查询第71页表连接——交叉连接交叉连接——笛卡尔积selectcount(*)fromaccmaininfo(131)selectcount(*)fromaccdetail(99)selectcount(*)fromaccmaininfom,accdetaild(12969)wherevno=vnoandm.accno=d.accno(92)
笛卡尔积会把两个表每条统计一一进行连接假如A表有n行统计,B表有m行统计,则笛卡尔积有n*m行统计!!!应用中尽可能防止出现笛卡尔积,会造成灾难性后果!第72页表连接——内部连接内部连接
完全匹配连接,相当于两个表交集 selectcount(*) fromaccmaininfominnerjoinaccdetaild onvno=vnoandm.accno=d.accno
也能够按照下面语法写: selectcount(*) fromaccmaininfom,accdetaild wherevno=vnoandm.accno=d.accno第73页表连接——内部连接正确地找到列 Select*能够选择全部列。假如需要选择特定列,怎么做? selectaccname,balance fromaccmaininfom,accdetaild wherevno=vnoandm.accno=d.accno
使用表名前缀 selectm.accname,m.balance fromaccmaininfom,accdetaild wherevno=vnoandm.accno=d.accno第74页表连接——外部连接左外部连接:Leftouterjoin(左边表全集) selectm.balance,d.balance,tranprono fromaccmaininfomleftouterjoinaccdetaild onvno=vnoandm.accno=d.accno andtranprono='30'
第75页表连接——外部连接右外部连接——Rightouterjoin(右边表全集) selectm.balance,d.balance fromaccmaininfomrightouterjoinaccdetaild onvno=vnoandm.accno=d.accno andtranprono='30‘第76页表连接——外部连接全外部连接——Fullouterjoin(两个表都是全集两个表并集)selectcity,dept_namefromemployeeefullouterjoindepartmentdone.dept_id=d.dept_idande.city=‘Acton’第77页表连接——自连接自连接——跟同一个表联合
查找薪水超出80000员工,并查出其manager名称和薪水selecta.emp_fname,a.salary,b.emp_fname,b.salaryfromemployeea,employeebwherea.emp_id=b.manager_idandb.salary>80000第78页子查询子查询是一个把查询结果作为参数返回给另一个查询一个查询。子查询能够让你将多个查询绑定在一起,到今天结束以后,你将掌握以下内容建立一个子查询在你子查询中使用EXISTANY和ALL关字建立和使用子查询关联第79页子查询建立子查询:要查询某人下全部账户数据,但不知道账户代码,只知道姓名 select*fromaccdetailwhere accnoin(SELECTaccnofromaccmaininfo whereaccname=
‘伟泽’)三个之一即可accno'016601100129425''156001100301019''49000338228'第80页子查询——使用汇总函数子查询中能够使用SUM、AVG、COUNT、MIN和MAX。比如,想查询余额在平均值以上accmaininfo:selectaccname,balancefromaccmaininfoWherebalance>(selectavg(balance)fromaccmaininfo)第81页子查询——相关子查询到现在为止,我们所写出子查询都是独立它们都没有包括到其它子查询。相关子查询能够接收外部引用。 select*fromaccdetaildwhere '伟泽'=(SELECTaccnamefromaccmaininfo whereaccno=d.accno)跟下面语句相当: select*fromaccdetaild,accmaininfom Whered.accno=m.accnoandaccname=
'伟泽'第82页子查询——inIn能够返回多个值selectcount(*)fromaccdetail whereaccno=(selectaccnofromaccmaininfo whereaccname='悠悠')可是使用in代替=selectcount(*)fromaccdetail whereaccnoin(selectaccnofromaccmaininfo whereaccname='悠悠')第83页子查询——existsExists返回true或者false select*fromaccdetaildwhere exists(SELECTaccnamefromaccmaininfo whereaccname='伟泽') Exists只是一个条件,true时候返回全部数据,false时候不返回数据第84页子查询——existsExists更为有用是使用相关子查询 select*fromaccdetaildwhere exists(SELECTaccnamefromaccmaininfom whereaccname='伟泽'andm.accno=d.accno)
这时候,只返回该客户账户细节数据第85页四、修改数据InsertUpdateDelete第86页操作数据——InsertINSERT语句允许你向数据库中输入数据,它有两种写法:INSERTVALUESINSERTSELECTINSERTVALUES该语句每次向表中输入一条统计,操作规模小,只有几条语句需要输入时它是非常有用该语句语法形式以下:INSERTINTOtable_name(col1,col2...) VALUES(value1,value2...)第87页操作数据——Insert比如: insertintobranchinfo(provno,brno,brname,remark) values('01','0101','北京分行','REMAEK1')Insert语句能够不需要列名 insertintobranchinfo values('01','0102','北京分行营业部','REMAEK2')第88页操作数据——insertselectINSERTVALUE语句在向表中插入几个数据时候非常有用,但显然这是不够。假如你想向表中插入25,000行数据时怎么办?在这种情况下INSERTSELECT语句就非常有效。它允许程序员拷贝一个或一组表信息到另外一个表中 insertintoaccmainselect*fromaccmaininfo语法 INSERTINTOtable_name(col1,col2...) SELECTcol1,col2...FROMtablenameWHEREsearch_condition第89页操作数据——delete与向数据库中加入数据相对应,你可能需要删除数据库中数据。DELETE语句语法格式以下: DELETEFROMtablenameWHEREcondition deletefrombranchwhereprovno='11‘经过DELETE语句和WHERE子句DELETE语句能够完成下边工作:删除单一行删除多个行删除全部行什么也不删除第90页操作数据——update该语句作用是将已存在统计内容改变语法格式以下: UPDATEtable_nameSETcolumnname1=value1[,columname2=value2]... WHEREsearch_conditionUPDATE语句首先要检验WHERE子句,对于符合WHERE子句条件统计将会用给定数据进行更新第91页操作数据——updateupdatebranchinfosetremark='Remark' whereprovno='11'
使用select语句验证 select*frombranchinfowhereprovno='11'第92页练习下边语句正确吗?DELETECOLLECTIONINSERTINTOCOLLECTIONSELECT*FROMTABLE_2UPDATECOLLECTION("HONUSWAGNERCARD"25000,"FOUNDIT")假如执行下边语句会有什么结果DELETE*FROMCOLLECTION第93页LoadtableLOADTABLE是IQ装载数据最快速方法结合一个例子说明--示例表 createtabletest1(idint,agetinyint,namechar(8),primarykey(id))
--数据文件test1.dat1||20||张三||2||22||李四||3||24||王五||
第94页内容提要关系数据库基本知识SQL语言概述SQL语句(Select)使用SQL函数使用SQL语句与数据库可用性和性能关系第95页SQL函数分类集合函数分析函数日期与时间函数数值函数字符串函数数据类型转换函数系统函数HTTP函数SQL和外部环境用户定义函数其它函数第96页空值(NULL)处理NULL是一个特殊类型值NULL不等于任何值,也不等于自己比如:表test2包含以下统计
idamount -----------------------1102(NULL)320selectcount(*)fromtest2whereamount=null返回0selectcount(*)fromtest2whereamount!=null返回0selectcount(*)fromtest2whereamountisnull返回1第97页空值(NULL)处理NULL是一个特殊类型值空值一些运算selectsum(amount)fromtest2返回30,去掉了amount为NULL统计
selectamount,count(*)fromtest2groupbyamount
空值作为一个分组selectamoun+10,amount*10fromtest2null运算仍为空值一些处理 select10+isnull(amount,0)fromtest2把空值变成0第98页集合函数简单集合函数(如AVG()、COUNT()、MAX()、MIN()和SUM())可对数据库一组行中数据进行汇总。这些组是使用SELECT语句GROUPBY子句组成。•采取一个参数较新统计集合函数包含STDDEV()、STDDEV_SAMP()、STDDEV_POP()、VARIANCE()、VAR_SAMP()和VAR_POP()。第99页集合函数CountSelectcount(*)fromemployeewheredept_id=100Count不统计nullSumselectsum(salary)fromemployeewheredept_id=100假如全是null,则sum结果也为null只能处理数值只能处理数值第100页集合函数AvgselectAvg(salary)fromemployeewheredept_id=100假如全是null,则avg结果也为null只能处理数值第101页集合函数MaxSelectMax(salary)fromemployeeSelectemp_fnamefromemployee wheresalary=max(salary)Msg13204,Level15,State0:ASAError-150:InvaliduseofanaggregatefunctionMinSelectMax(salary),min(salary)fromemployeeVariance—方差selectvariance(salary)fromemployeeStddev—标准差第102页集合函数用于进行时序分析ISO/ANSISQL:OLAP函数包含:CORR()、COVAR_POP()、COVAR_SAMP()、CUME_DIST()、FIRST_VALUE()、LAST_VALUE()、REGR_AVGX()、REGR_AVGY()、REGR_COUNT()、REGR_INTERCEPT()、REGR_R2()、REGR_SLOPE()、REGR_SXX()、REGR_SXY()和REGR_SYY()。在数据库行业使用非ISO/ANSISQL:OLAP集合函数扩展包含FIRST_VALUE()、MEDIAN()和LAST_VALUE()。用于计算加权移动平均值加权OLAP集合函数包含EXP_WEIGHTED_AVG()和WEIGHTED_AVG()第103页集合函数简单集合-AVG、COUNT、MAX、MIN、SUM、STDDEV和VARIANCE窗口函数:窗口化集合-AVG、COUNT、MAX、MIN和SUM。排名函数-RANK、DENSE_RANK、PERCENT_RANK、ROW_NUMBER和NTILE。统计函数-STDDEV、STDDEV_SAMP、STDDEV_POP、VARIANCE、VAR_SAMP和VAR_POP。分布函数-PERCENTILE_CONT和PERCENTILE_DISC。行间函数-LAG和LEAD。数值函数-WIDTH_BUCKET、CEIL、LN、EXP、POWER、SQRT和FLOOR第104页日期/时间函数函数参数功效DATEADD(datepart,number,date)以datepart指定方式,返回date加上number之和DATEDIFF(datepart,date1,date2)以datepart指定方式,返回date2与date1之差DATENAME(datepart,date)返回日期date中datepart指定部分所对应字符串DATEPART(datepart,date)返回日期date中datepart指定部分所对应整数值DAY(date)返回指定日期天数GETDATE()返回当前日期和时间MONTH(date)返回指定日期月份数YEAR(date)返回指定日期年份数第105页日期/时间函数date-part允许值第106页日期/时间函数date-part允许值第107页日期/时间函数例子selectdateadd(month,2,'-08-01')selectdateadd(month,2,crt_date)fromt2selectdatediff(month,'1993/05/02','1995/11/15')selectdatepart(month,'1987/05/02')第108页数值函数数值函数对数值数据类型执行数学运算或者返回数值信息ABS得到绝对值SELECTABS(-66)Ceiling得到大于等于当前数值最小整数selectceiling(13.4)//返回14.0Floor得到小于等于当前数值最大整数selectfloor(13.4)//返回13.0第109页数值函数数值函数对数值数据类型执行数学运算或者返回数值信息Round四舍五入函数selectROUND(123.234,1)//123.20selectROUND(123.256,2)//123.260Rand返回大于0小于1随机小数第110页字符函数IQ中CHAR(n)和VARCHAR(n)数据类型用于存放字符串数据二者区分CHAR类型数据会在尾部补空格,直到定义长度VARCHAR不会在尾部补空格,不过用引号括起来字符串中尾部空格保留比如:createtabletest1(idint,namechar(10),name1varchar(10))insertintotest1values(1,'aaa','bbb')commit第111页字符函数比如:selectconvert(binary,name)fromtest1whereid=1
输出为:0x61616120(10个字节)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买商铺投资合同样本
- 出租仓库商铺合同标准文本
- 出口机械加工合同范例
- 农机借用合同样本
- 健身培训协议合同范例
- 净化设备采购合同样本
- 关于车祸赔偿合同标准文本
- 京东转让合同标准文本
- 供货商合同样本
- 农副产购销合同样本
- GB/T 7554-1987电报用五单位数字保护码
- GB/T 39218-2020智慧化工园区建设指南
- GB/T 32788.5-2016预浸料性能试验方法第5部分:树脂含量的测定
- GA/T 959-2011机动车区间测速技术规范
- 污水管网工程主要项目清单与计价表参考模板范本
- 如何提高基层干部群众工作能力课件
- 《中国少先队歌》歌词带拼音
- 垃圾分类科普课件
- 工程设计费收费标准
- 环网柜基础知识培训课程完整版课件
- 海姆立克急救(生命的拥抱)课件
评论
0/150
提交评论