中科院西安分院oracle培训课件1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

幻灯片1Copyright©OracleCorporation,2001.Allrightsreserved.编写基本的SQLSELECT语句进度表:时间主题40分钟讲演25分钟练习65分钟总共幻灯片21-2Copyright©OracleCorporation,2001.Allrightsreserved.目标完成本课后,您应当能够:•列出SQLSELECT语句的功能•执行基本的SELECT语句•区分SQL语句和iSQL*Plus命令课程目标为了从数据库中摘录数据,你需要使用结构化查询语言(StructuredQueryLanguageSQL)的SELECT语句,你还可能需要限制所显示的行和列。本课程描述了用于执行这个任务所需要的所有SQL语句。你也能够创建可以多次使用的SELECT语句。本课中还包括用来执行SQL语句的iSQL*Plus环境的使用介绍。注:iSQL*Plus是在Oracle9i产品中新增的,并在Oracle10g中得到增强,它是一个执行SQL命令的浏览器环境。Oracle以前发布的SQL*Plus是执行SQL命令的默认的环境。SQL*Plus现在任然可用,并且在附录C中讲述。幻灯片31-3Copyright©OracleCorporation,2001.Allrightsreserved.SQLSELECT语句的功能行选择列选择表1表2表1表1连接SQLSELECT语句的功能SELECT语句从数据库中返回信息。使用一个SELECT语句,你可以做下面的事:列选择:你能够使用SELECT语句的列选择功能选择表中的列,这些列是你想要用查询返回的。当你查询时,你能够选择你查询的表中指定的列。行选择:你能够使用SELECT语句的行选择功能选择表中的行,这些行是你想要用查询返回的。你能够使用不同的标准限制你看见的行。连接:你能够使用SELECT语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连接。在后面的课程中你将学到更多关于连接的内容。教师注释告诉学生行选择和列选择通常被认为是水平和垂直分割。幻灯片41-4Copyright©OracleCorporation,2001.Allrightsreserved.基本SELECT语句SELECT*|{[DISTINCT]column|expression[alias],...}FROMtable;SELECT*|{[DISTINCT]column|expression[alias],...}FROMtable;•SELECT确定哪些列•FROM确定哪张表基本SELECT语句在最简单的形式中,SELECT语句必须包含下面的内容:一个SELECT子句,指定被显示的列一个FROM子句,指定表,该表包含SELECT子句中的字段列表在语法中:SELECT是一个或多个字段的列表*选择所有的列DISTINCT禁止重复column|expression选择指定的字段或表达式alias给所选择的列不同的标题FROMtable指定包含列的表注:在本课程中,单词keyword(关键字),clause(子句)和statement(语句)被如下使用:keyword引用一个单个的SQL元素。例如,SELECT和FROM是关键字。clause是SQL语句的一个部分。例如,SELECTemployee_id,last_name,...是一个子句。statemen是两个或多个子句的组合。例如,SELECT*FROMemployees是一个SQL语句。幻灯片51-5Copyright©OracleCorporation,2001.Allrightsreserved.SELECT*FROMdepartments;选择所有列选择所有行的所有列用跟在SELECT关键字后面的星号(*),你能够显示表中数据的所有列。在幻灯片上的例子中,department表包含4个列:DEPARTMENT_ID、DEPARTMENT_NAM、MANAGER_ID和LOCATION_ID。该表包含8行,每个部门一行。在SELECT关键字后面列出所有列,你也能够显示所有的列。例如,跟着SQL语句,像幻灯片中的例子,显示DEPARTMENTS表的所有列和所有行:SELECTdepartment_id,department_name,manager_id,location_idFROMdepartments;教师注释让学生知道在附录B中给出的所有表的细节。幻灯片61-6Copyright©OracleCorporation,2001.Allrightsreserved.选择指定的列SELECTdepartment_id,location_idFROMdepartments;选择所有列中指定列你能够用SELECT语句来显示表的指定列,指定列名之间用逗号分隔。幻灯片中例子显示DEPARTMENTS表中所有的部门号和位置号。在SELECT子句中,指定你想要的列,其顺序是你想要在输出中呈现的。例如,为了从左到右在部门号之前显示位置号,你可以用下面的语句:SELECTlocation_id,department_idFROMdepartments;教师注释你也能够从伪列中选择。一个伪列的行为像表中的列一样,但不是真的存储在表中。你不能插入或删除伪列的值。一些可用的为列是CURRVAL、NEXTVAL、LEVEL、ROWID和ROWNUM。幻灯片71-7Copyright©OracleCorporation,2001.Allrightsreserved.写SQL语句•SQL语句对大小写不敏感•SQL语句可以写成一行或多行•关键字不能简写或分开折行•子句通常放在不同的行•缩进用于增强可读性写SQL语句用下面的简单规则和原则,你能够构造正确的语句,它们即容易阅读也容易编辑:SQL语句对大小写不敏感,除非指出。SQL语句可以写成一行或多行。关键字不能简写或分开折行。为了易于阅读和编辑,子句通常放在不同的行。应该使用缩进,以使代码更易阅读。关键字一般用大写输入;所有其它的名字和列,用小写输入。执行SQL语句使用iSQL*Plus,单击执行按钮来运行编辑窗口中的命令。教师注释尽管在iSQL*Plus中,在子句的最后,分号(;)不是必须的,但还是推荐使用。在其它环境中,例如,PL/SQL程序,需要在每条语句的结尾加一个分号。幻灯片81-8Copyright©OracleCorporation,2001.Allrightsreserved.列标题默认属性•iSQL*Plus:–默认列标题位置:居中–默认列标题显示:大写•SQL*Plus:–字符和日期列标题位置居左–数字列标题居右–默认列标题显示:大写列标题默认属性在iSQL*Plus中,列标题用大写字母居中显示。SELECTlast_name,hire_date,salaryFROMemployees;你能够用别名覆盖列标题显示,列别名在本课稍后讲述。幻灯片91-9Copyright©OracleCorporation,2001.Allrightsreserved.算术表达式用算术运算符创建数字和日期数据的表达式操作+-*/说明加减乘除算术表达式你可能需要修改数据显示方式,如执行计算,或者作假定推测,这些都可能用到算术表达式。一个算术表达式可以包含列名、固定的数字值和算术运算符。算术运算符(ArithmeticOperators)幻灯片中列出了SQL提供的算术运算符。除了FROM子句,你可以在任何一个SQL语句的子句中使用使用算术运算符。教师注释你只能对DATE和TIMESTAMP数据类型使用加和减操作。幻灯片101-10Copyright©OracleCorporation,2001.Allrightsreserved.使用算术运算符SELECTlast_name,salary,salary+300FROMemployees;…使用算术运算符幻灯片中的例子用加法运算计算所有雇员的薪水增加$300元,并且在输出中显示一个新的列。注意,合成的计算列SALARY+300不是EMPLOYEES表中的一个新列;显示的新列来自产生它的计算,在这里是salary+300。注:Oracle9i/10g服务器忽略算术运算前后的空白。幻灯片111-11Copyright©OracleCorporation,2001.Allrightsreserved.运算符的优先级•乘法和除法比加法和减法的优先级高•相同优先级的运算符从左到右计算•圆括号用于强制优先计算,并且使语句更清晰***///+++___运算符优先级如果算术表达式包含有一个以上的运算,乘法和除法先计算。如果在一个表达式中的运算符优先级相同,计算从左到右进行。你可以用圆括号强制其中的表达式先计算。幻灯片121-12Copyright©OracleCorporation,2001.Allrightsreserved.运算符的优先级SELECTlast_name,salary,12*salary+100FROMemployees;…运算符的优先级(续)幻灯片中的例子显示名字、薪水和雇员的年薪。年薪的计算是12乘以月工资,再加一次性的100元奖金。注意乘法比加法先执行。注:使用圆括号可以增强标准顺序,并且改善可读性。例如,幻灯片中的表达式可以写成(12*salary)+100而不会改变结果。教师注释示范:1_prec1.sql,1_prec2.sql目的:举例说明无圆括号的查询,再用圆括号覆盖优先级规则。幻灯片131-13Copyright©OracleCorporation,2001.Allrightsreserved.使用圆括号SELECTlast_name,salary,12*(salary+100)FROMemployees;…使用圆括号你可以用圆括号覆盖优先级规则来指定运算符执行的顺序。幻灯片中的例子显示名字、薪水和雇员的年薪。年薪的计算是以月工资加每月的100元奖金,再乘以12。因为有圆括号,加法的优先级就高于乘法。幻灯片141-14Copyright©OracleCorporation,2001.Allrightsreserved.定义空值•null是一个未分配的、未知的,或不适用的值•null不是0,也不是空格SELECTlast_name,job_id,salary,commission_pctFROMemployees;……空值如果一行中的某个列缺少数据值,该值被置为null,或者说包含一个空。空是一个难以获得的、未分配的、未知的,或不适用的值。空和0或者空格不相同。0是一个数字,而空格是一个字符。任何数据类型的列都可以包含空。可是,某些约束,如,NOTNULL和PRIMARYKEY,防止在列中使用空。在EMPLOYEES表的COMMISSION_PCT列中,我们注意到只有销售经理或销售代表才有佣金,其他的雇员没有佣金,空表示了这个事实。教师注释示范:1_null.sql目的:举例说明带空值的计算。幻灯片151-15Copyright©OracleCorporation,2001.Allrightsreserved.SELECTlast_name,12*salary*commission_pctFROMemployees;算术表达式中的空值包含空值的算术表达式计算结果为空……空值(续)如果在一个算术表达式中的列值为空,例如,用零做除数,会出错。可是如果除数为空,计算结果也为空或未知。在幻灯片的例子中,雇员King没有佣金,因为在算术表达式中的COMMISSION_PCT列为空,结果也为空。更多的信息,见Oracle9iSQLReference,“SQL的基本原理”。幻灯片161-16Copyright©OracleCorporation,2001.Allrightsreserved.定义列别名列别名:•改变列标题的名字•可用于计算结果•紧跟在列名后面–在列名和别名之间可以有选项AS关键字•如果别名中包含有空格、或者特殊字符、

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功