【精品】SQL常识精品ppt课件.ppt
《【精品】SQL常识精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】SQL常识精品ppt课件.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL常识什么是什么是 SQL?nSQL 是用于访问和处理数据库的标准的计算是用于访问和处理数据库的标准的计算机语言。机语言。nSQL指结构化查询语言nSQL使我们有能力访问数据库nSQL是一种ANSI的标准计算机语言n注:注:ANSI,美国国家标准化组织nSQL 是一种标准是一种标准-但是但是.nSQL是一门ANSI的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MSAccess、DB2、Informix、MSSQLServer、Oracle、Sybase以及其他数据库系统。n不幸地是,存在着很多不同版本的SQL语言,但是
2、为了与ANSI标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE等等)。n除了SQL标准之外,大部分SQL数据库程序都拥有它们自己的私有扩展!SQL发展历史发展历史n1970:E.J.Codd发表了关系数据库理论(relationaldatabasetheory);n1974-79:IBM以Codd的理论为基础开发了“Sequel”,并重命名为SQL;n1979:Oracle发布了商业版SQLn1981-84:出现了其他商业版本,分别来自IBM(DB2),DataGeneral(DG/SQL),Relationa
3、lTechnology(INGRES);nSQL/86:ANSI跟ISO的第一个标准;nSQL/89:增加了引用完整性(referentialintegrity);nSQL/92(akaSQL2):被数据库管理系统(DBMS)生产商广发接受;n1997+:成为动态网站(Dynamicwebcontent)的后台支持;nSQL/99:Corelevel跟其他8种相应的level,包括递归查询,程序跟流程控制,基本的对象(object)支持包括oids;nSQL/2003:包含了XML相关内容,自动生成列值(columnvalues);n2005-09-30:“Dataisthenextgener
4、ationinside.SQListhenewHTML”!TimOeilly提出了Web2.0理念,称数据将是核心,SQL将成为“新的HTML;nSQL/2006:定义了SQL与XML(包含XQuery)的关联应用;n2006:Sun公司将以SQL基础的数据库管理系统嵌入JavaV6n2007:SQLServer2008(Katmi)在过去的SQL2005基础上增强了它的安全性,主要在:简单的数据加密,外键管理,增强了审查,改进了数据库镜像,加强了可支持性。数据库发展大事记n1951:Univac系统使用磁带和穿孔卡片作为数据存储。1956:IBM公司在其Model305RAMAC中第一次引入
5、了磁盘驱动器1961:通用电气(GE)公司的CharlesBachman开发了第一个数据库管理系统IDS1969:E.F.Codd发明了关系数据库。1973:由JohnJ.Cullinane领导Cullinane公司开发了IDMS一个针对IBM主机的基于网络模型的数据库。1976:Honeywell公司推出了MulticsRelationalDataStore第一个商用关系数据库产品。1979:Oracle公司引入了第一个商用SQL关系数据库管理系统。1983:IBM推出了DB2数据库产品。1985:为Procter&Gamble系统设计的第一个商务智能系统产生。1991:W.H.“Bill”
6、Inmon发表了”构建数据仓库”。SQL DML 和和 DDLn可以把SQL分为两个部分:数据操作语言(DML)和数据定义语言(DDL)。nSQL(结构化查询语言)是用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。SQL 的 DMLn查询和更新指令构成了SQL的DML部分:nSELECT-从数据库表中获取数据nUPDATE-更新数据库表中的数据nDELETE-从数据库表中删除数据nINSERT-向数据库表中插入数据SQL 的 DDL nSQL的数据定义语言(DDL)部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。nSQL中
7、最重要的DDL语句:nCREATE DATABASE-创建新数据库nALTER DATABASE-修改数据库nCREATE TABLE-创建新表nALTER TABLE-变更(改变)数据库表nDROP TABLE-删除表nCREATE INDEX-创建索引(搜索键)nDROP INDEX-删除索引SQL-DCLnDCL,即DataControlLanguage,数据控制语言。nDCL用于控制对数据库对象操作的权限,它使用GRANT和REVOKE语句对用户或用户组授予或回收数据库对象的权限。INFORMIX 数据库介绍Informix动态服务器-IDSnInformix-IDS区别于inform
8、ix早期的数据库系统informix-SE。早期的ISE系统与其它许多数据库管理系统一样,是在操作系统的文件系统里建立一个单独目录,所有相关数据表存储于此,对数据库数据的管理通过操作系统的文件管理系统完成。IDS后,数据库开始使用原始设备(RAW)存储数据库相关数据,对数据库的管理基本抛开了操作系统的文件管理系统。建立数据库n语法nCREATEDATABASEdatabase INdbspace WITHBUFFEREDLOGnINdbspace虽是可选项,但建立数据库时一定要选,指定建立在那个数据空间上。nWITHBUFFEREDLOG指定数据库是否带日志及日志类型,大多数情况,选择WITH
9、BUFFEREDLOG。数据库的系统表nIDS安装时自动建立sysmaster系统数据库,其中存放了以sys开头一系列系统表。n在数据建立系统自动建立一系列以sys开头系统表。nSystablenSyscolumnsnSELECTb.tabnameFROMsyscolumnsa,systablesbnWHEREcolname=proposalnonANDa.tabid=b.tabidnORDERby1环境变量n系统用户中常用环境变量nexportINFORMIXDIR=/usr/informixnexportDBDATE=Y4MD/nexportINFORMIXSERVER=hp3440_5n
10、exportONCONFIG=onconfig.hp3440_5nexportTERMCAP=/usr/informix/etc/termcapnexportPATH=.:$PATH:$INFORMIXDIR/bin:/bin:/usr/bin:/usr/sbinnexportLD_LIBRARY_PATH=/usr/informix/lib:/usr/informix/lib/esqlINFORMIX SQL 初步SELECT语句nSELECT语句由允许您查看关系数据库中的数据的子句构成。这些子句允许您从一个或多个表或视图中选择列和行、指定一个或多个条件、对数据进行排序和总结以及将选择的数据
11、放置在临时表中。n1.SELECT子句n2.FROM子句n3.WHERE子句n4.ORDERBY子句n5INTOTEMP子句n6.GROUPBY字句n7.HAVING字句SELECT语句n只有SELECT和FROM子句是必需的。这两个子句构成每个数据库查询的基础,原因是它们指定要检索的表和列。使用以下列表中的一个或多个其它子句:n添加WHERE子句以选择特定行或创建连接条件。n添加ORDERBY子句以更改生成数据的顺序。n添加INTOTEMP子句以将结果保存为表以供进一步查询。nGROUPBY和HAVING字句与聚集函数配合使用,对检索结果进行特定分类SELECT子句nSELECT字句中的字句
12、中的*,及及FIRST,DISTINCT,UNIQUE关键关键字字nSELECT*FROMprpdkindnSELECTriskcode,kindcode,kindcnameFROMprpdkindnSELECTFIRST10riskcode,kindcode,kindcnameFROMprpdkindnSELECTFIRST10DISTINCTriskcode,kindcode,kindcnameFROMprpdkindnSELECTFIRST10UNIQUEriskcode,kindcode,kindcnameFROMprpdkindn-E01.shSELECT字句nSELECT字句中的表
13、达式字句中的表达式n数值型字段可以使用数值型字段可以使用+、-、*、/n字符型字段取子字段字符型字段取子字段 n1,n2n字符型字段并置即字符型字段连接字符型字段并置即字符型字段连接|nCASE表达式表达式SELECT字句SELECTFIRST10policyno,sumpremium+sumdiscountbzbfFROMprpcmainWHEREstartdate=2012/03/20;SELECTFIRST10policyno9,17FROMprpcmainWHEREstartdate=2012/03/20;SELECTFIRST10policyno|的保费=|sumpremiumFRO
14、MprpcmainWHEREstartdate=2012/03/20;SELECTcurrentfromprpdkind;SELECT“13010000”comcode,kindcodeFROMprpdkind;SELECT字句SELECTpolicyno,startdate,enddate,sumpremium,CASEWHENstartdate2012/05/01ANDenddate=2012/05/31THENsumpremium*(enddate-date(2012/05/01)+1)/(enddate-startdate+1)WHENstartdate2012/05/31THENsu
15、mpremium*31/(enddate-startdate+1)WHENstartdate=2012/05/01ANDenddate=2012/05/01ANDenddate2012/05/31THENsumpremium*(date(2012/05/31)-startdate+1)/(enddate-startdate+1)ENDyzbfFROMprpcmainWHEREmakecom=13010300ANDpolicynoISNOTNULLANDstartdate=2012/05/01INTOTEMPtmp_yzbfWITHNOLOG;UNLOADTOyzbf.unlSELECT*FRO
16、Mtmp_yzbfORDERBYstartdate;n-e02.shSELECT字句nSELECTb.policyno,b.sumpremium,a.clausetype,nCASEa.clausetypenWHENF41THEN非营业用汽车产品nWHENF42THEN家庭自用汽车产品nWHENF43THEN营业用汽车产品nWHENF44THEN摩托车产品nWHENF45THEN拖拉机产品nELSE其它nENDnFROMprpcitem_cara,prpcmainbnWHEREa.proposalno=b.proposalnonANDb.startdate=2012/04/01SELECT字句
17、n选择项中的子查询选择项中的子查询nSELECTFIRST10a.proposalno,sumpremium,n(SELECTSUM(premium)FROMprpcitemkindbnWHEREa.proposalno=b.proposalno)ASspremiumnFROMprpcmainanWHEREstartdate=today-1优化查询伪指令n前导符n-+n+n/*+*/n相同点,起注释作用n不同点:第一个只在本行起作用,后两个可以跨行。优化查询伪指令n几个常用伪指令FROM字句使用其它实例或数据库的表n在informix中一次只能打开一个数据库,使用其中的表直接引用表名即可n使用
18、其它数据库的表需要在表名前加数据库名和冒号,即databasename:tablenamen使用其它实例即SERVER的数据库中的表的写法是databasenameservername:tablenamen为了简化sql的书写,使用别名是必要的WHERE字句n关系运算符n=n!=n=n=nBETWEEN条件,相当于=的组合nIN条件相当于OR连用underwriteflagIN(1,3)nISNULL条件NULL是一个特殊值,”,”“,都不是空,ISNULL与!=“”不是一码事。nNOT条件可以与IN组成NOTIN,与ISNULL组成ISNOTNULLnLIKE条件比较字符是否匹配,可以使用下
19、列通配符%与零个或多个字符匹配-与单个字符匹配转义,将紧跟其后的特殊字符当普通字符处理nMATCHES条件与LIKE相似,匹配字符串,但使用的通配符不同,MATCHES使用通配符如下:子查询nIN子查询WHEREcomcodeIN(SELECTcomcodeFROMcompanyWHERE-)如果子查询返回的结果比较多时,需要考虑其它方法EXISTS子查询当子查询返回一行时,条件为真nALL和ANY/SOMEALL与子查询返回的所有结果进行比较ANY与返回值比较,只要有一条符合即可条件连接符nAND必须同时满足才为真。OR其中之一满足即为真INTO TEMP 语句nINTOTEMPtmp_ta
20、ble_namenINTOTEMPtmp_tableWITHNOLOGn区别:第一种形式执行时使用日志,第二种形式不使用日志,可以提高运行效率;n使用此字句,在SELECT选择的字段必须命名,且命名不得重复。nSelectcomcode,sum(sumpremium)fromnSelectcomcode,mkcomcomcodefromGROUP BY子句n使用GROUPBY子句可为每一组生成单独一行的结果。组是行的集合,其中的行的所有列出的列均具有相同的值。n如果在选择列表中使用聚集函数和一列或多列,则必须将所有未用作聚合或时间表达式的一部分的列名放入GROUPBY子句。n可以用代表位置的数
21、字替换字段名GROUP BY子句nSelectcomcodefromprpcmainwherestartdate=today-1groupby1selectcomcode,startdate,sum(sumpremium)bffromprpcmainwherestartdatebetween“2012/03/01”and“2012/03/31”groupby1,2GROUP BY子句nGROUPBY子句中的NULL值在列于GROUPBY子句的列中,每一包含null值的行属于一个单独的组。也就是,所有null值分在同一组中。HAVING子句n使用HAVING子句可将一个或多个限定条件应用到组。n
22、HAVING将一个已计算的组的属性与另一个已计算的组的属性或者常量进行比较。n1)返回所有多于两项商品的订单中,每项商品的平均总价。nSELECTorder_num,AVG(total_price)FROMitemsnGROUPBYorder_numHAVINGCOUNT(*)2n2)列出在同一个月中进行的呼叫次数不少于两次的客户,及其n呼叫月份。nSELECTcustomer_num,EXTEND(call_dtime,MONTHTOMONTH)nFROMcust_callsGROUPBYl,2HAVINGCOUNT(*)1HAVING子句n3)使用HAVING子句对GROUPBY列的值以及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 SQL 常识 ppt 课件
限制150内