Oracle数据库培训-SQL基础篇.ppt
《Oracle数据库培训-SQL基础篇.ppt》由会员分享,可在线阅读,更多相关《Oracle数据库培训-SQL基础篇.ppt(203页珍藏版)》请在咨信网上搜索。
1、SQL语言基础,主要内容,基本的SELECT语句约束和排序数据单行函数多表显示数据、组函数合计数据创建和管理表子查询SELECT确定哪些列FROM确定哪张表,选择所有列与指定列,SELECT*FROMdepartments;用跟在SELECT关键字后面的星号(*),你能够显示表中数据的所有列。SELECTdepartment_id,location_idFROMdepartments;你能够用SELECT语句来显示表的指定列,指定列名之间用逗号分隔。,写SQL语句,SQL语句对大小写不敏感SQL语句可以写成一行或多行关键字不能简写或分开折行子句通常放在不同的行缩进用于增强可读性,算术表达式,用
2、算术运算符创建数字和日期数据的表达式操作说明+加-减*乘/除,使用算术运算符,SELECTlast_name,salary,salary+300FROMemployees;优先级:乘法和除法比加法和减法的优先级高相同优先级的运算符从左到右计算圆括号用于强制优先计算,并且使语句更清晰SELECTlast_name,salary,12*salary+100FROMemployees;,空值,null是一个未分配的、未知的,或不适用的值null不是0,也不是空格包含空值的算术表达式计算结果为空SELECTlast_name,job_id,salary,commission_pctFROMemploy
3、ees;,定义列别名,列别名:改变列标题的名字可用于计算结果紧跟在列名后面在列名和别名之间可以有选项AS关键字如果别名中包含有空格、或者特殊字符、或者大小写敏感,要求用双引号SELECTlast_nameASname,commission_pctcommFROMemployees;,连字运算符,连字运算符:连接列或者字符串到其它的列用两个竖线表示(|)构造一个字符表达式的合成列SELECTfirst_name|last_nameASEmployeesFROMemployees;,文字字符串,文字字符串是包含在SELECT列表中的一个字符串,一个数字或者一个日期日期和字符的文字字符串值必须用单引
4、号括起来每个文字字符串在每行输出一次SELECTlast_name|isa|job_idASEmployeeDetails”FROMemployees;,约束和排序数据,目标,完成本课后,您应当能够执行下列操作:用一个查询限制返回的行用一个查询分类返回的行,限制选择的行,用WHERE子句限制返回的行SELECT*|DISTINCTcolumn|expressionalias,.FROMtableWHEREcondition(s);WHERE子句跟着FROM子句WHERE限制查询满足条件的行condition由列名、表达式、常数和比较操作组成WHERE子句能够比较列值、文字值、算术表达式或者函数
5、,WHERE子句由三个元素组成:列名,比较条件,列名、常量或值列表。,使用WHERE子句,SELECTemployee_id,last_name,job_id,department_idFROMemployeesWHEREdepartment_id=90;,字符串和日期,字符串和日期的值放在单引号中字符值区分大小写,日期值是格式敏感的日期的默认格式是DD-MON-RR.SELECTlast_name,job_id,department_idFROMemployeesWHERElast_name=Whalen;,比较条件,运算含义=等于大于=大于等于不等于比较条件被用于一个表达式与一个值或与另一
6、个表达式的比较。.WHEREhire_date=01-JAN-95.WHEREsalary=6000.WHERElast_name=Smith,其它比较条件,操作含义BETWEEN.AND.在两个值之间(包含)IN(set)匹配一个任意值列表LIKE匹配一个字符模板ISNULL是一个空值使用BETWEEN条件:SELECTlast_name,salaryFROMemployeesWHEREsalaryBETWEEN2500AND3500;使用IN条件SELECTemployee_id,last_name,salary,manager_idFROMemployeesWHEREmanager_id
7、IN(100,101,201);,其它比较条件,使用LIKE条件使用LIKE条件执行有效搜索串值的通配符搜索搜索条件既可以包含文字也可以包含数字:%表示任意顺序的零个或多个字符_表示一个字符SELECTfirst_nameFROMemployeesWHEREfirst_nameLIKES%;使用NULL条件用ISNULL操作来测试空值SELECTlast_name,manager_idFROMemployeesWHEREmanager_idISNULL;NULL条件,包括ISNULL条件和ISNOTNULL条件。,逻辑条件,运算含义AND如果两个组成部分的条件都为真,返回TRUEOR如果两个组
8、成部分中的任一个条件为真,返回TRUENOT如果跟随的条件为假,返回TRUE可以在WHERE子句中用AND和OR运算符使用多个条件。使用AND操作:AND要求两个条件同时为真SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary=10000ANDjob_idLIKE%MAN%;,逻辑条件,使用OR操作:OR操作要求两者之一为真即可SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary=10000ORjob_idLIKE%MAN%;使用NOT操作
9、SELECTlast_name,job_idFROMemployeesWHEREjob_idNOTIN(IT_PROG,ST_CLERK,SA_REP);注:NOT运算符也可以用于另一个SQL运算符,例如,BETWEEN、LIKE、和NULL。,优先规则,求值顺序1算术运算2连字操作3比较操作4ISNOTNULL,LIKE,NOTIN5NOTBETWEEN6NOT逻辑条件7AND逻辑条件8OR逻辑条件使用圆括号改变优先规则,ORDERBY子句,用ORDERBY子句排序行ASC:升序排序,默认DESC:降序排序ORDERBY子句在SELECT语句的最后SELECTlast_name,job_da
10、teFROMemployeesORDERBYhire_date;语法:SELECTexprFROMtableWHEREcondition(s)ORDERBYcolumn,exprASC|DESC;,单行函数,目标,完成本课后,您应当能够执行下列操作:描述在SQL中可用的函数的变量类型在SELECT语句中使用字符,数字和日期函数描述转换函数的使用,SQL函数,函数是SQL的一个非常强有力的特性,函数能够用于下面的目的:执行数据计算修改单个数据项操纵输出进行行分组格式化显示的日期和数字转换列数据类型SQL函数有输入参数,并且总有一个返回值。注:在本课中讲述的大多数函数是针对SQL的Oracle版的
11、。,SQL函数(续),有两种截然不同的函数:单行函数多行函数单行函数这些函数仅对单个行进行运算,并且每行返回一个结果。有不同类型的单行函数,本课下面的函数类型:字符数字日期转换多行函数这些函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数。多行函数在后面的课程中介绍。,单行函数,单行函数:操纵数据项接受多个参数并返回一个值作用于每一个返回行每行返回一个结果可以修改数据类型可以嵌套接受多个参数,参数可以是一个列或者一个表达式,单行函数(续),单行函数的特性包括:作用于查询中返回的每一行每行返回一个结果可能返回一个与参数不同类型的数据值可能需要一个或多个参数能够用在SELECT、W
12、HERE和ORDERBY子句中,可以嵌套。function_name(arg1,arg2,.)function_name是函数的名字。arg1,arg2是由函数使用的任意参数,可以由一个列名或者一个表达式提供。,单行函数(续),本课包括下面的单行函数:字符函数:接受字符输入,可以返回字符或者数字值数字函数:接受数字输入,返回数字值日期函数:对DATE数据类型的值进行运算(除了MONTHS_BETWEEN函数返回一个数字,所有日期函数都返回一个DATE数据类型的值。)转换函数:从一个数据类型到另一个数据类型转换一个值通用函数:NVL、NVL2、NULLIF、COALSECE、CASE、DECOD
13、E,字符函数,单行字符函数接受字符数据作为输入,既可以返回字符值也可以返回数字值。字符函数可以被分为下面两种:大小写处理函数字符处理函数大小写处理函数如下:LOWER(column|expression)转换字符值为小写UPPER(column|expression)转换字符值为大写INITCAP(column|expression)转换每个单词的首字母值为大写,所有其它值为小写字符处理函数如下:CONCAT(column1|expression1,column2|expression2)连接第一个字符值到第二个字符值;等价于连接运算符(|)SUBSTR(column|expression,m
14、,n)从字符值中返回指定的字符,开始位置在m,n字符长度(如果m是负数,计数从字符值末尾开始;如果n被忽略,返回到串结束的所有字符)。,LENGTH(column|expression)返回表达式中的字符数INSTR(column|expression,string,m,n)返回一个命名串的数字位置。随意地,你可以提供一个位置m作为查找的开始,在字符串中第n次发现的位置。m和n的默认值是1,意味着在起始开始查找,并且报告第一个发现的位置。LPAD(column|expression,n,string)RPAD(column|expression,n,string)填充字符值左、右调节到n字符位
15、置的总宽度TRIM(leading|trailing|both,trim_characterFROMtrim_source)使你能够从一个字符串修整头或尾字符(或两者)。如果trim_character或trim_source是字符文字,你必须放在单引号中。REPLACE(text,search_string,replacement_string)从字符串查找一个文本表达式,如果找到,用指定的值串代替它,字符函数(续),大小写处理函数,这些函数转换字符串的大小写函数结果LOWER(SQLCourse)sqlcourseUPPER(SQLCourse)SQLCOURSEINITCAP(SQLCo
16、urse)SqlCourseLOWER:转换大小写混合的字符串为小写字符串UPPER:转换大小写混合的字符串为大写字符串INITCAP:将每个单词的首字母转换为大写,其他字母为小写SELECTThejobidfor|UPPER(last_name)|is|LOWER(job_id)ASEMPLOYEEDETAILSFROMemployees;,字符处理函数,函数结果CONCAT(Hello,World)HelloWorldSUBSTR(HelloWorld,1,5)HelloLENGTH(HelloWorld)10INSTR(HelloWorld,W)6LPAD(salary,10,*)*24
17、000RPAD(salary,10,*)24000*TRIM(HFROMHelloWorld)elloWorld,数字函数,ROUND:四舍五入指定小数的值ROUND(45.926,2)45.93TRUNC(45.926,2)45.92MOD(1600,300)100ROUND(column|expression,n)四舍五入列、表达式或值为n位小数位,或者,如果n被忽略,无小数位。(如果n是负值,小数点左边的数被四舍五入)TRUNC(column|expression,n)截断列、表达式或值到n位小数,或者,如果n被忽略,那么n默认为0MOD(m,n)返回m除以n的余数,使用ROUND函数S
18、ELECTROUND(45.923,2),ROUND(45.923,0),ROUND(45.923,-1)FROMDUAL;使用TRUNC函数SELECTTRUNC(45.923,2),TRUNC(45.923),TRUNC(45.923,-2)FROMDUAL;使用MOD函数SELECTlast_name,salary,MOD(salary,5000)FROMemployeesWHEREjob_id=SA_REP;注:MOD函数经常用于确定一个值是奇数还是偶数,日期的使用,Oracle数据库用内部数字格式存储日期:世纪,年,月,日,小时,分钟和秒默认日期显示格式是DD-MON-RR.SELE
19、CTlast_name,hire_dateFROMemployeesWHERElast_namelikeG%;SYSDATE函数返回:DateTimeSYSDATE是一个日期函数,它返回当前数据库服务器的日期和时间。SELECTSYSDATEFROMDUAL;,用日期计算,从日期加或者减一个数,结果是一个日期值两个日期相减,得到两个日期之间的天数用小时数除以24,可以加小时到日期上既然数据库以数字方式存储日期,你就可以用算术运算符进行计算,例如,加或减。你可以加或减数字常数以及日期。你可以进行下面的运算:运算结果说明date+number日期加一个天数到一个日期上date-number日期从一
20、个日期上减一个天数date-date天数用一个日期减另一个日期date+number/24日期加一个小时数到一个日期上,日期函数,函数说明MONTHS_BETWEEN两个日期之间的月数ADD_MONTHS加日历月到日期NEXT_DAY下个星期几是几号LAST_DAY指定月的最后一天ROUND四舍五入日期TRUNC截断日期,日期函数(续),MONTHS_BETWEEN(date1,date2):计算date1和date2之间的月数,其结果可以是正的也可以是负的。如果date1大于date2,结果是正的,反之,结果是负的。结果的小数部分表示月的一部分。ADD_MONTHS(date,n):添加n个
21、日历月到date。n的值必须是整数,但可以是负的。NEXT_DAY(date,char):计算在date之后的下一个周(char)指定天的日期。char的值可能是一个表示一天的数或者是一个字符串。LAST_DAY(date):计算包含date的月的最后一天的日期ROUND(date,fmt):返回用格式化模式fmt四舍五入到指定单位的date,如果格式模式fmt被忽略,date被四舍五入到最近的天。TRUNC(date,fmt):返回用格式化模式fmt截断到指定单位的带天的时间部分的date,如果格式模式fmt被忽略,date被截断到最近的天。,使用日期函数,MONTHS_BETWEEN(01
22、-SEP-95,11-JAN-94)19.6774194ADD_MONTHS(11-JAN-94,6)11-JUL-94NEXT_DAY(01-SEP-95,2)下个星期五是几号08-SEP-95LAST_DAY(01-FEB-95)28-FEB-95,使用日期函数(续),假定SYSDATE=25-JUL-95:ROUND(SYSDATE,MONTH)01-AUG-95ROUND(SYSDATE,YEAR)01-JAN-96TRUNC(SYSDATE,MONTH)01-JUL-95TRUNC(SYSDATE,YEAR)01-JAN-95TRUNC(TO_DATE(25-JUL-95),YEAR
23、)01-JAN-95,转换函数,数据类型转换隐式数据类型转换显式数据类型转换对于直接赋值,Oracle服务器能够自动地进行下面的转换:从到VARCHAR2orCHARNUMBERVARCHAR2orCHARDATENUMBERVARCHAR2DATEVARCHAR2对于表达式赋值,Oracle服务器能自动地进行下面的转换:从VARCHAR2orCHAR到DATE从VARCHAR2orCHAR到NUMBER,转换函数(续),显式数据类型转换SQL提供三种函数来从一种数据类型转换值到另一种:TO_CHAR(number|date,fmt,nlsparams)转换一个数字或日期值为一个VARCHAR
24、2字符串,带格式化样式fmt。数字转换:nlsparams参数指定下面的字符,它由数字格式化元素返回:小数字符99999.99前导009999本地货币符号L9999国际货币符号$9999如果忽略nlsparams或其它参数,该函数在会话中使用默认参数值。,TO_CHAR(number|date,fmt,nlsparams)指定返回的月和日名字及其缩写的语言。如果忽略该参数,该函数在会话中使用默认日期语言。TO_NUMBER(char,fmt,nlsparams)用由可选格式化样式fmt指定的格式转换包含数字的字符串为一个数字。Nlsparams参数在该函数中的目的与TO_CHAR函数用于数字转
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 培训 SQL 基础
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【z****6】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【z****6】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。