版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8SQL查询语句SQL历史1970,Codd提出关系模型1973,IBM启动SystemR项目DonaldChamberlin和RayBoyce负责操作工具1974,DML与DDL成形称为SEQUEL(StructuredEnglishQueryLanguage)1980,重命名为SQLSEQUEL已被英国飞机公司HawkerSiddeley用作商标.SQL,StructuredQueryLanguage,结构化查询语言2015-88-2Oracle数据库系统原理-第8章SQL查询语句Chamberlin(1944-)1966,BS,Engineering,HarveyMuddCollege1967,MS,EE,StanfordUniversity1971,PhD,EE,StanfordUniversity2015-88-3Oracle数据库系统原理-第8章SQL查询语句SQL语言基本类型DMLselect,Update,Insert,deleteDDLcreate,drop,alter,truncatetableDCLgrant,revoke2015-88-4Oracle数据库系统原理-第8章SQL查询语句Oracle对SQL语言的分类DDL语句DML语句事务控制语句会话控制语句系统控制语句嵌入式SQL语句2015-88-5Oracle数据库系统原理-第8章SQL查询语句select语句基本结构select…
指定要查询的列名from…指定要查询的表名where…指定查询条件
groupby…指定要分组列having…指定过滤分组的条件orderby…指定排序列2015-88-6Oracle数据库系统原理-第8章SQL查询语句查询示例2015-88-7Oracle数据库系统原理-第8章SQL查询语句三种常用数据类型数值number(p,s):p为有效数字位数,s为精度字符串日期时间date:包括年、月、日、小时、分钟、秒2015-88-8Oracle数据库系统原理-第8章SQL查询语句字符集—ASCII码即AmericanStandardCodeforInformationInterchange。由早期电报编码发展而来,使用7位编码。主要用于处理英文字母。包括33个不可打印的控制字符和95个包括空格在内的可打印字符。1963,ASCII码标准由ASA(AmericanStandardsAssociation,即后来的ANSI)发布。2015-88-9Oracle数据库系统原理-第8章SQL查询语句EBCDIC编码即ExtendedBinaryCodedDecimalInterchangeCode使用8位编码设计于1963至1964年主要用于IBM大型机System/360。2015-88-10Oracle数据库系统原理-第8章SQL查询语句不同语言的字符集不同国家和地区编制了适合存储其语言的字符集。中文一般使用ZHS16GBK字符集。unicode字符集试图把世界上使用所有字符统一到一个字符集中。2015-88-11Oracle数据库系统原理-第8章SQL查询语句unicode编码方式UTF-8字符编码单位一个字节。UTF-8编码方式中前128个字符为ASCII字符,且其编码与ASCII码相同。UTF-16字符编码单位为两个字节。2015-88-12Oracle数据库系统原理-第8章SQL查询语句Oracle支持四种unicode字符集AL32UTF8用于ASCII平台。一个字符使用1~3个字节,增补字符使用4个字节。UTF8用于ASCII平台。一个字符使用1~3个字节,增补字符使用6个字节。UTFE用于EBCDIC平台。一个字符使用1~4个字节,增补字符使用8个字节。AL16UTF16使用双字节编码,增补字符使用4个字节。2015-88-13Oracle数据库系统原理-第8章SQL查询语句数据库字符集用于存储下面数据CHAR、VARCHAR2、CLOB及LONG的列值。表名、列名以及PL/SQL程序变量的标识符。SQL语句和PL/SQL程序代码。中文简体Windows系统,默认ZHS16GBK字符集。推荐使用Unicode编码方式优先选用AL32UTF8。某些关键字只能使用单字节字符,AL16UTF16不能用作数据库字符集。2015-88-14Oracle数据库系统原理-第8章SQL查询语句国家字符集为什么要使用国家字符集数据库字符集未使用Unicode,数据库中存在不属于数据库字符集中的字符,可以用国家字符集以Unicode编码方式存储这些特殊字符。如何使用国家字符集存储字符把列的类型指定为nchar(n)或nvarchar(n)。如何设置字符集数据库和国家字符集在建库时指定。Oracle国家字符集支持的编码方式AL16UTF16(默认),UTF82015-88-15Oracle数据库系统原理-第8章SQL查询语句验证数据库字符集和国家字符集SQL>selectproperty_name,property_value2fromdatabase_properties3whereproperty_namelike'%CHARACTERSET'4/PROPERTY_NAMEPROPERTY_VALUE-------------------------------------------------------NLS_CHARACTERSETZHS16GBKNLS_NCHAR_CHARACTERSETAL16UTF162015-88-16Oracle数据库系统原理-第8章SQL查询语句字符串类型-char(n)和varchar2(n)char(n)定长,若实际长度小于n,则用空格填满n的最大值为2000单位默认为字节,也可以用char(nchar)或char(nbyte)指定单位varchar2(n)可变长度,所占空间与实际长度相同n的最大值为4000单位默认为字节,也可以使用varchar2(nchar)或varchar2(nbyte)指定单位2015-88-17Oracle数据库系统原理-第8章SQL查询语句字符串类型-nchar(n)与nvarchar2(n)nchar(n)n的最大值与国家字符集有关单位为字符占用空间不能超过2000字节nvarchar2(n)n的最大值与国家字符集有关单位为字符占用空间不超过4000字节2015-88-18Oracle数据库系统原理-第8章SQL查询语句简单查询只指定表名select*fromemp;指定列名selectename,salfromemp使用列别名selectenameasemp_namefromemp附加条件selectenamefromempwheresal>2000排序selectenamefromemporderbysal2015-88-19Oracle数据库系统原理-第8章SQL查询语句查询条件使用的关系运算符运算符功能=,<,>,<>或!=,<=,>=,between…and大小比较in,exists子查询中是否存在指定值like字符串模糊比较isnull,isnotnull空值判断and,or,not或!逻辑运算符2015-88-20Oracle数据库系统原理-第8章SQL查询语句null作为条件正确语法wherecommisnullwherecommisnotnull错误语法wherecomm=nullwherecomm!=null2015-88-21Oracle数据库系统原理-第8章SQL查询语句字符串常量和字符串条件字符串常量用单引号括住--‘abc’字符串区分大小写字符串条件whereename=‘SMITH’字符串模糊查询whereenamelike‘%A’whereenamelike‘_A%’2015-88-22Oracle数据库系统原理-第8章SQL查询语句查询条件包含特殊字符包含通配符whereenamelike‘%\%%’escape‘\’包含单引号附加单引号,如:wherednamelike'%''%'q‘[text]‘,如:wheredname=q’[Dr’s]‘,除了[]外,{}、<>、()、!!也可以作为定界符使用2015-88-23Oracle数据库系统原理-第8章SQL查询语句字符串函数||,lower/upper,lengthsubstringsubstr(job,1,5)lpad/rpadlpad(ename,10,'#'),rpad(ename,10,'#')replacereplace(job,'SALES','MARKETING')trimtrim('abc')2015-88-24Oracle数据库系统原理-第8章SQL查询语句处理日期时间数据sysdate函数获取当前日期时间。to_date函数或date关键字把字符串常量转换为日期型常量。to_char函数把日期型列值转换为指定格式的字符串。extract函数抽取日期型字段中的指定部分(年、月、日)。2015-88-25Oracle数据库系统原理-第8章SQL查询语句日期时间数据处理示例获取当前日期selectsysdatefromdual;字符串转化为日期值selectenamefromempwherehiredate=to_date(‘1981-12-21’,’yyyy-mm-dd’)日期值转化为字符串selectename,to_char(hiredate,’yyyy/mm/dd’)fromemp抽取指定部分selectenamefromempwhereextract(monthfromhiredate)=52015-88-26Oracle数据库系统原理-第8章SQL查询语句null值的处理nvlnvl函数有两个参数,若第一个参数不为空,则返回第一个参数的值,若第一个参数为null,则返回第二个参数的值。selectename,sal,comm,sal+nvl(comm,0)fromemp;nvl2包括三个参数,第一个参数为存在空值的字段名称,第二个参数为字段值不为空时所取的常量值,第三个参数为字段值为空时所取的常量值。selectename,sal,comm,sal+nvl2(comm,comm,100)fromemp;2015-88-27Oracle数据库系统原理-第8章SQL查询语句分类汇总常用汇总函数:max,min,count,sum,avgwhere子句:限定参与汇总的行groupby子句:指定分组列having子句:过滤分组结果orderby子句:指定排序列2015-88-28Oracle数据库系统原理-第8章SQL查询语句简单汇总练习查询emp表的最高工资查询emp表的最低工资查询emp表的记录个数查询emp表中部门号20中的记录个数查询emp表中不重复的部门编号查询emp表中20号部门的最高工资2015-88-29Oracle数据库系统原理-第8章SQL查询语句使用groupby执行分类汇总练习查询emp表中每个部门的sal总和。查询emp表中,每个部门工资超过2000的那些员工的工资总和。2015-88-30Oracle数据库系统原理-第8章SQL查询语句使用having子句过滤分组汇总的结果查询工资总额超过7000的部门编号及其工资总额,并以部门编号从小到大排序2015-88-31Oracle数据库系统原理-第8章SQL查询语句各子句的处理顺序执行where子句,过滤符合条件的记录。执行groupby子句,对以上结果以分组汇总。执行having子句,对分组后的查询结果进行过滤。执行orderby子句,对查询结果以指定列排序。执行select子句,显示查询结果。2015-88-32Oracle数据库系统原理-第8章SQL查询语句分组汇总的注意事项where子句置于groupby之前。不能在where子句中使用分组函数。having子句一般会使用分组函数,若不需使用分组函数,则推荐使用where子句。在语法顺序上,having子句可放置于groupby子句之前或之后,推荐放置于groupby子句之后。若未被分组函数作用,select、having和orderby子句中的列只能选用groupby子句中的列。2015-88-33Oracle数据库系统原理-第8章SQL查询语句非相关子查询查询emp表中获得最高工资的员工名称。查询emp表中获得工资比平均工资低的员工名称。2015-88-34Oracle数据库系统原理-第8章SQL查询语句相关子查询查询每个员工工资与其所在部门的平均工资之差。查询每个部门的最高工资,要求在查询结果中列出部门名称。2015-88-35Oracle数据库系统原理-第8章SQL查询语句不同位置的子查询where子句select子句from子句2015-88-36Oracle数据库系统原理-第8章SQL查询语句in与notin查询有员工的部门名称selectdnamefromdeptwheredeptnoin(selectdistinctdeptnofromemp)查询无员工的部门名称selectdnamefromdeptwheredeptnonotin(selectdistinctdeptnofromemp)2015-88-37Oracle数据库系统原理-第8章SQL查询语句若deptno存在空值时,使用notinwheredeptnonotin(selectdeptnofromemp)wheredeptnonotin(null,10,20,30)wheredeptno!=nullanddeptno!=10anddeptno!=20anddeptno!=30wherefalseanddeptno!=10anddeptno!=20anddeptno!=30wherefalse结论:查询结果为空2015-88-38Oracle数据库系统原理-第8章SQL查询语句deptno存在空值时,使用in的情形wheredeptnoin(selectdeptnofromemp)wheredeptnoin(null,10,20,30)wheredeptno=nullordeptno=10ordeptno=20ordeptno=30结论:查询结果不为空2015-88-39Oracle数据库系统原理-第8章SQL查询语句exists与notexists查询有员工的部门名称selectdnamefromdeptwhereexists(selectdeptnofromempwheredeptno=dept.deptno)查询无员工的部门名称selectdnamefromdeptwherenotexists(selectdeptnofromempwheredeptno=dept.deptno)2015-88-40Oracle数据库系统原理-第8章SQL查询语句多表连接查询当查询的数据存在于多个表时,要用到表的连接。实际工作中,会频繁使用表连接查询。表连接一般分为交叉连接内连接外连接2015-88-41Oracle数据库系统原理-第8章SQL查询语句交叉连接--即笛卡尔积SQL>selectemp.ename,emp.deptno,dept.*2fromemp,dept3/
ENAMEDEPTNODEPTNODNAMELOC---------------------------------------------------------SMITH2010ACCOUNTINGNEWYORKALLEN3010ACCOUNTINGNEWYORKWARD3010ACCOUNTINGNEWYORKJONES2010ACCOUNTINGNEWYORKMARTIN3010ACCOUNTINGNEWYORKBLAKE3010ACCOUNTINGNEWYORKCLARK1010ACCOUNTINGNEWYORK......FORD2040OPERATIONSBOSTONMILLER1040OPERATIONSBOSTON
已选择56行。2015-88-42Oracle数据库系统原理-第8章SQL查询语句交叉连接的意义表S和T分别有rS、rT行,cS、cT列交叉连接的结果为Q表Q表的列由S和T表的列合并得到,共cS+cT个列。Q表的行由S和T表的行两两拼接而成,共rS×rT行。2015-88-43Oracle数据库系统原理-第8章SQL查询语句内连接对交叉连接附加连接条件过滤出交叉连接结果中有意义的行SQL>selectemp.ename,emp.deptno,dept.*2fromemp,dept3whereemp.deptno=dept.deptno4/ENAMEDEPTNODEPTNODNAMELOC---------------------------------------------------------SMITH2020RESEARCHDALLASALLEN3030SALESCHICAGOWARD3030SALESCHICAGO……已选择14行。2015-88-44Oracle数据库系统原理-第8章SQL查询语句使用表别名SQL>selecte.ename,e.deptno,d.*2fromempe,deptd3whereemp.deptno=dept.deptno4/2015-88-45Oracle数据库系统原理-第8章SQL查询语句内连接练习查询每个员工的名称及其部门名称。查询每个员工的名称及其所在地址。查询每个员工的名称及其工资级别。查询每个员工的名称及其经理名称。查询工资超过其经理的员工的名称。2015-88-46Oracle数据库系统原理-第8章SQL查询语句两种连接标准:SQL-86与SQL-92SQL-86如前所述交叉连接--SQL-92语法形式select*fromempcrossjoindept;内连接--SQL-92语法形式selecte.ename,d.dnamefromempejoindeptdone.deptno=d.dep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度木结构工程安全风险评估与管控合同
- 二零二五版航空航天设备采购合同集2篇
- 二零二五年度跨境电商物流服务合同变更2篇
- 管理沟通培训
- 二零二五年度货车货运配送承包合同3篇
- 基于2025年度财务预算的合同成本管理与优化2篇
- 地质勘查专用设备制造考核试卷
- 二零二五版环保项目垫资合同范本2篇
- 2025年度木材加工钢材买卖居间合同附带供应链金融方案3篇
- 2025版小学校园广播系统升级合同3篇
- 《电影之创战纪》课件
- 社区医疗抗菌药物分级管理方案
- 开题报告-铸牢中华民族共同体意识的学校教育研究
- 《医院标识牌规划设计方案》
- 夜市运营投标方案(技术方案)
- 电接点 水位计工作原理及故障处理
- 国家职业大典
- 2024版房产代持协议书样本
- 公众号运营实战手册
- 教学查房及体格检查评分标准
- 西方经济学(第二版)完整整套教学课件
评论
0/150
提交评论