OracleAlpha.docx

上传人:b****0 文档编号:17800987 上传时间:2023-08-04 格式:DOCX 页数:65 大小:1.84MB
下载 相关 举报
OracleAlpha.docx_第1页
第1页 / 共65页
OracleAlpha.docx_第2页
第2页 / 共65页
OracleAlpha.docx_第3页
第3页 / 共65页
OracleAlpha.docx_第4页
第4页 / 共65页
OracleAlpha.docx_第5页
第5页 / 共65页
OracleAlpha.docx_第6页
第6页 / 共65页
OracleAlpha.docx_第7页
第7页 / 共65页
OracleAlpha.docx_第8页
第8页 / 共65页
OracleAlpha.docx_第9页
第9页 / 共65页
OracleAlpha.docx_第10页
第10页 / 共65页
OracleAlpha.docx_第11页
第11页 / 共65页
OracleAlpha.docx_第12页
第12页 / 共65页
OracleAlpha.docx_第13页
第13页 / 共65页
OracleAlpha.docx_第14页
第14页 / 共65页
OracleAlpha.docx_第15页
第15页 / 共65页
OracleAlpha.docx_第16页
第16页 / 共65页
OracleAlpha.docx_第17页
第17页 / 共65页
OracleAlpha.docx_第18页
第18页 / 共65页
OracleAlpha.docx_第19页
第19页 / 共65页
OracleAlpha.docx_第20页
第20页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

OracleAlpha.docx

《OracleAlpha.docx》由会员分享,可在线阅读,更多相关《OracleAlpha.docx(65页珍藏版)》请在冰点文库上搜索。

OracleAlpha.docx

OracleAlpha

Oracle第一天

上午课程时间与内容安排表

*第一时间段:

课程引言

 

ORCLE-F-001

Oracle引言

1.Oracle数据库简介

2.两种常用的数据存储形式介绍—file和table。

3.什么是SQL语句?

SQL语句的分类。

4.Table表、DB数据库和RDBMS数据库管理系统的关系。

5.ORACLE_SID介绍。

6.通过sqlplus和数据库连接。

7.本次教学过程学员练习所涉及到的表结构的介绍。

一、Oracle数据库简介

·Oracle厂商介绍、国际地位

·Oracle与Sun的关系

·Oracle版本介绍(i与g的区别)

·Oracle数据库分为两部分(服务器端、客户端)

·Oracle的基本用户、管理员介绍(SCOTT/SYS)

 

二、两种常用的数据存储形式介绍—file和table。

三、什么是SQL语句?

SQL语句的分类。

1、什么是SQL语句?

·英文全称:

StructuredQueryLanguage(结构化查询语言)

·SQL是一种专门用来与数据库通信的语言。

2、SQL的分类(按创建操作控制的顺序):

·数据存到数据是以表的形式需要使用DDL语言。

·操作数据库中的表需要使用到DML语言。

·将数据存到数据库中需要使用TCL语言。

·从数据库中取得数据需要使用DQL语言。

(1)DDL(createtable建表\altertable修改\droptable)数据定义语言

·建表需要知道列名、列名类型、列名长度。

(2)DML(insert插入\update更新\delete删除)数据操作语言

(3)TCL(commit提交、rollback回滚)事务控制语言

(4)DQL(select)数据查询语言

说明:

首先讲解数据库的作用,和使用数据库所需要掌握的语言。

四、表、DB和RDBMS的关系。

(1)表:

二维表格(行代表一条记录、列代表一个字段)

(2)DB:

是依照某种数据模型组织起来并存放二级存储器

中的数据集合.

(3)RDBMS:

它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据。

 

五、ORACLE_SID介绍

1、ORACLE_SID数据库对应的实例的名字

·Linux终端下查看实例名称:

echo$ORACLE_SID

2、创建一个数据库的同时Oracle为我们创建的三个文件

·DataFile数据文件、LogFile日志文件、ControlFile控制文件

 

六、Windows下Oracle登陆的方式

·sqlplus用户名/密码(命令行)

·sqlplusw用户名/密码(图形界面方式登录)

七、讲解我们练习表的结构

(1)S_EMP(员工信息表)

字段说明 :

title职位名称

(2)S_DEPT(部门信息表)

(3)S_REGION(区域表)

*第二时间段:

编写第一条SELECT语句

ORCLE-F-002

SELECT语句

1、SELECT语句的功能是什么?

2、SELECT语句的基本语法?

3、SELECT语句在sqlplus中如何执行、如何修改?

4、SELECT语句的执行原理

一、SELECT语句的功能

1、功能:

从一个或多个表中检索一个或多个数据列。

2、select的操作方式:

投影操作、选择操作、连接操作

·投影操作是对列的操作(用select列名实现)

·选择操作是对行的操作。

·连接操作是对2张表的操作。

二、SELECT语句的基本语法

1、语法格式 :

2、组成部分

》在最简单的SELECT语句中必须包含以下内容

·一个SELECT子句,指定被显示的列

·一个FROM子句,指定从那张表查询数据

3、SELECT子句后面可以跟哪些内容?

·*要查询表的所有列名

·distinct字段名去除该字段的重复值

·column/expor指定的字段名或者表达式

·columnalias列名该列名的别名

 

4、[演示]找出每个员工的姓名和工资

selectfirst_name,salary

froms_emp;

[要求学员练习]列出每个员工的名字和职位?

selectfirst_name,title

froms_emp;

四、SELECT语句的处理过程:

数据库用户写完一条sql语句通过用户进程sqlplus将sql送往服务进程Serverprocess创建会话Session,然后按以下流程:

处理一条SELECT语句的过程(以下依次执行):

》分析语句:

(1)搜索是否有相同的语句

·从哪搜索:

从SGA中的共享池中找.

(2)检查语法、表名、权限

(3)在分析过程中给对象加锁

(4)生成执行计划

》绑定变量—给变量赋值

》执行语句

》获取数据—将数据返回给用户进程

*第三时间段:

SELECT子句的功能

 

ORCLE-F-003

SELECT功能

1、SELECT子句实现投影功能。

2、数值类型表达式(加减乘除)

3、别名的引入及双引号的用法

4、SELECT语句后面跟数值表达式的处理流程

5、算术表达式中null值的处理。

6、字符串拼接、单引号的用法

7、distinct的用法

一、在number类型上使用算术表达式(加减乘除)

[演示]列出每个员工的名字和年薪

selectfirst_name,salary*12

froms_emp;

二、字段(列)别名

1、别名

》含义:

给列起别名能够改变一个列、表达式的标识

》适合用于做计算字段:

比如:

selectfirst_name,salary*12年薪froms_emp;

》在原名和别名之间可以使用as关键字(一般都不写)

2、双引号

》含义:

别名中包含空格、特殊字符、或希望大小写敏感,则用双引号将其括起来:

》比如:

selectfirst_name,salary*12"annsal"froms_emp;(空格)

selectfirst_name,salary*12"Ann@sal"froms_emp;(特殊字符)

三、算术表达式中null值的处理

[演示]计算所有人的总收入:

selectfirst_name,salary*12*(1+commission_pct/100)tol_salfroms_emp;

引入以下知识点:

1)什么是空值(NULL)

空值在输入数据时,该字段没有指定值,并且也没有缺省值:

》空值不等于0

》空值不等于空格

》算术表达式包含空值将导致结果为空

》在算术表达式中包含空值需要用空值转换函数coalesce处理

2)讲解空值转换函数:

》什么是函数?

·语法格式:

函数名(参数)

·作用:

按函数的功能返回处理后的结果。

》空值处理之一nvl(p1,p2)的含义解释:

·如果p1是空值,则返回p2,反之返回p1本身。

[演示]以上讲解完毕,演示:

selectfirst_name,salary*12*(1+nvl(commission_pct,0)/100)tol_salfroms_emp;

》空值处理之二coalesce(p1,p2)的含义解释:

·如果p1是空值,则返回p2,反之返回p1本身。

[演示]以上讲解完毕,演示:

selectfirst_name,salary*12*(1+coalesce(commission_pct,0)/100)tol_salfroms_emp;

3)总结:

nvl()与coalesce()的区别?

nvl()是Oracle数据库特有的、coalesce()是更多数据库特有的。

四、字符串拼接、单引号的用法

[演示]请列出所有员工的全名(即first_name+last_name)

》执行selectfirst_namelast_namefroms_emp;

》执行完毕后给学员讲解这条语句并没有得到我们想要的结果,而是把last_name当成了列别名,那么我们该如何处理了?

》引出教师要讲解的以下知识点:

·||字段拼接

·使用单引号表示字符串

知识点讲解后演示正确写法:

selectfirst_name||last_name全名froms_emp;

 

五、distinct关键字的用法

1、[演示]列出所有部门名称?

[教学批注]这条语句给我们的结果包含部门相同的名称,故引出去除重复值的知识点:

[知识点]开始讲解distinct关键字的作用和使用

selectdistinctnamefroms_dept;

注意:

》多个字段的时候distinct是如何工作的?

·是做联合去重,只有所有字段值都唯一时候才有去重效果。

》如果select后面跟distinct关键字则distinct前面不能在跟任何东西。

》DISTINCT必须使用列名,不能使用计算或者表达式。

》select语句后可以包含文字值,字符、表达式、数字

字符文字值必须使用单引号括起来。

 

&OracleDay01下午时间授课计划与内容:

*第一时间段:

WHERE子句的功能

 

ORCLE-F-004

WHERE功能

1.where子句的基本结构:

条件表达式,实现选择操作

2.增加where子句后select语句的执行过程

3.数值类型在where子句中的用法

4.条件表达式中包含算术表达式的执行效率,where子句中是否可以用别名.

5.字符类型在where子句中的用法

6.sql比较运算符——betweenand等价于大于等于并且小于等于以及notbetweenand

7.sql比较运算符——in等价于=any或=or=及其否定形式notin等价于<>all或<>and<>

8.sql比较运算符——like,通配符%、_的含义以及转义的概念及其否定形式notlike

9.sql比较运算符——isnull及其否定形式isnotnull,判断是否为空值

一、WHERE子句功能、位置、后面可以跟的合法内容

》功能:

用WHERE子句对表里记录进行过滤

》位置:

WHERE子句紧跟在FROM子句之后

》合法内容:

WHERE子句后可以跟

·条件表达式

·列名、表达式、常量

·比较运算符

·文字值

》注意:

WHERE子句后不能跟别名

[演示]列出部门编号为42的员工姓名、部门ID、月薪

二、增加where子句后select语句的执行过程

[教学批注]通过以下练习题讲解加Where子句执行顺序:

[练习以下题目得出结论]

·找出年薪大于12000的员工姓名、年薪

写法1:

写法2:

结论:

where子句优先于select语句执行。

where子句后能不跟表达式的就不要跟表达式。

三、where子句中是否可以用别名.

·不能跟别名的原因----where优先于select被执行

·说明:

授课的时候可以写一个where中带别名的sql进行验证。

四、字符类型在where子句中的用法

·where后的字符值要用单引号括起来。

·字符类型的大小写是敏感的。

[练习以下题目得出结论]

·找出Carmen的员工姓名和年薪:

写法1:

报错原因:

where后的字符值没用单引号括起来

写法2:

未出结果的原因:

题目要求查的是Carmen

 

写法3:

正确的写法

由此得出结论:

(1)where子句中的列为字符类型

(2)字符串要使用单引号括起来、列名的大小写是敏感的

 

五、WHERE+比较运算符的用法

1、算术表达式比较运算符

·作用:

比较条件运算符用于一个表达式和一个值或者另一个表

达式的比较。

·举例:

...WHEREhire_date='01-JAN-95'

...WHEREsalary>=6000

...WHERElast_name='Smith'

2、BETWEEN…AND与NOTBETWEENAND(区间)

》你可以用BETWEEN范围条件显示基于一个值范围的行。

你指定的范围包含一个下限和一个上限。

》上例中的SELECT语句从EMPLOYEES表中返回薪水在$2,500和$3,500之间的那些雇员。

》BETWEEN条件包括指定的上下限值,必须先指定下限。

3、IN表示或的用法(集合中筛选)

[演示]找出31、41、43部门员工名字和工资

·使用or的写法(老式):

·使用in()的写法

》结论:

in() 比or写法方便简单。

》如果IN条件中的成员是字符或日期,它们必须放在单引号中。

例如:

WHERElast_nameIN('Hartstein','Vargas');

4、LIKE运算符

(一)

》功能:

在字符串比较中,可用LIKE和通配符进行查找

》通配符的种类

%表示0或者多个字符

_表示任意个字符

[演示]当有符号和通配符一样的情况要进行转义操作:

案例:

找出用户表中以S_开头的表:

很容易误写的写法:

正确的写法:

selecttable_name

fromuser_tables

wheretable_namelike'S\_%'ESCAPE'\'

5、ISNULL是空

》判断一个字符是否为空使用isnull来判断。

》NULL不能用等于和不等于跟任何值比较,包括它自身,所有不能使用=、<>来测试一列是否为空。

6、运算符的否定形式

》逻辑比较运算符

<>!

=^=

》SQL比较运算符

NOTBETWEENAND表示不在某个区间

NETIN表示不在某个范围

ISNOTNULL表示不为空

结论:

如果结果集中包含null值,使用notin一定不会出结果。

举例:

找出不包含31、42、43部门的员工信息

7、AND的用法

[教学批注]通过以下题目引入where后面跟and的用法

[SQL]找出31、32部门工资大于1000的员工信息

 

8、Where后面跟多个条件

>比较两条SELECT语句的哪个结果集大?

*第二时间段:

WHERE子句的功能

 

ORCLE-F-005

ORDERBY

ORDERBY子句的功能

1.orderby子句的基本结构及排序操作

2.增加orderby子句后select语句的执行过程

3.orderby子句可以表达的各种形式:

一个或多个字段、表达式、别名

4.排序时如何处理null值

一、用OREDERBY子句对查询出来的结果集进行排序

》ASC---升序、缺省

》DESC---降序

》ORDERBY是SELECT语句后最后一个子句。

[SQL>]按员工部门编号从小到大排列输出:

[学员练习]:

·列出员工姓名、工资,按工资从高到低排序输出

二、增加orderby子句后select语句的执行顺序。

》先from表名where过滤条件select查询orderby排序

》验证方式:

orderby+别名(OK)

三、Orderby后面可以跟什么?

·列名、表达式、别名、位置。

四、按多列进行排序:

关键点:

多列排序以逗号为分隔符,来区别排序分类

上面语句说明:

先按dept_id升序,再按salary降序排序

五、orderby后面的列可以不出现在select后面。

今日作业:

Oracle_经典案例1-11题。

Oracle第二天

【Oracle-F-006】单行函数的使用

一、什么是单行函数、多行函数,以及它们的区别?

1、关于dual表:

专门用于函数测试和运算的虚表。

2、单行函数:

对单个行进行计算,并且每一行返回一个结果。

[教学批注]:

可以分别将selectlower('ABC')froms_emp;语句放在s_emp表和dual表中去执行,看看返回的记录数,利用返回的记录数告知学员,单行函数与行记录是一一对应的关系。

3、多行函数:

这类函数能操作成组的行,以行组为单位返回一个结果.

区别:

相同的都是处理数据库中的数据,单行函数的结果是一对一的关系,多行函数的结果是多对一的关系。

二、单行函数的使用

1、出现的位置:

select、where、orderby(与记录相关的地方)

2、[面试题:

]为什么where后面只能跟单行函数:

因为where子句过滤的是记录,而单行函数跟记录是有关系的。

3、字符型单行函数分类:

·

学员练习:

求每个员工的最后2个字符

·LPAD用给定的字符左填充字符串到给定的长度。

(要处理的字符串,要返回的长度,用什么替换补起的位置)

·to_number('数值字符串'),将数值类型的字符串转换成数字。

显示数据类型转换:

·演示这条语句并解释报错原因:

selectto_name('ab')fromdual;

·隐式类型转换:

字符转数字

三、where子句中使用单行函数的效率

四、字符型单行函数:

concat、substr、length、lpad、rpad

五、数值型单行函数:

round、trunc

六、数值和字符类型的隐式和显式转换

转换函数:

to_char、to_number

【Oracle-F-007】多表查询

[课程引入]带领学生做如下查询,引出笛卡尔积的问题,然后讲解笛卡尔积产生的原因以及如何避免:

SQL>first_name,nameroms_emp,s_dept;

一、笛卡尔积

1、笛卡尔积产生的原因:

•一个连接条件被遗漏时

•一个连接条件不正确时

•在第一个表中的所有行被连接到第二个表的所有行时

 

2、如何避免笛卡尔积的产生:

为了避免笛卡尔乘积的形成,在WHERE子句中应当总是

包含正确的连接条件.

三、内连接joinon

内连接原理(非常重要)

T1表和T2表做内连接,连接条件为ont1.c1=t2.c2,

假设T1表做驱动表,T2表做匹配表,记录的匹配过程如下:

1、从T1表中读取。

•使用内连接做2张表的查询,仅返回匹配行的记录。

selectd.id,d.name,r.namer_name

froms_deptdjoins_regionr

ond.region=r.region

•内连接的核心:

任何一张表在另一张表中一定要有相等的条件,这也叫精确查找。

练习:

亚洲地区有哪些员工?

Carmen在那个区上班?

》等值连接

·两张表有描述共同属性的列。

·常见形式为父表的主键和子表的外键相等。

》非等值连接

1、可以用betweenand这样的非等值运算符将2张表中的列写成一个表达式。

2、所谓表之间的关系,实际是指表中的行(记录)之间的关系,该关系通过将表中的列写成表达式来体现。

》自连接

同一张表的列之间有关系实际反映的同一张表的行(记录)之间有关系。

外连接:

1、什么情况下使用外连接?

分为左外连接、右外连接

规则:

左连显示匹配记录不匹配用null代替

右连结果集为匹配左边的记录,不匹配的用null代替

2、外连接原理?

t1表和t2表做外连接,连接条件为:

fromt1leftjoint2

ont1.c1=t2.c2

t1要必须做驱动表、t2做匹配表

(1)外连接结果集=内连接的结果集+t1表中匹配不上的记录和一条null记录的组合。

(2)外连接的核心可以将匹配不上的记录找回来,即一个都不能少。

3、如何判断谁是驱动表?

·left的左边是驱动表

·right的右边是驱动表

·要将数据全部

4、外连接往往与isnull一起用?

外连接+isnull用来解决否定问题。

练习:

哪些人是员工?

selectm.first_name

froms_empeRIGHTjoins_empm

one.manager_id=m.id

wheree.idisnull

练习:

哪个部门没有Smith这个员工。

selectd.dname

fromemperightjoindeptd

one.deptno=d.deptno

ande.ename=‘Smith’

wheree.empnoisnull

结论:

and在外连接之前、where在外连接之后执行。

 

Oracle第三天

【Oracle-F-008】组函数

一、什么是组函数?

二、组函数的分类

三、使用组函数规则

1、DISTINCT使得函数只考虑不重复的值,ALL使的函数考虑每一个值,包含NULL值,组函数默认是ALL。

2、用于函数的参数类型可以是…..

【Oracle-F-009】groupby及having子句的使用

一、groupby子句的基本结构,功能介绍。

selectmax(d.name),max(r.name),avg(e.salary)

froms_empejoins_deptd

one.dept_id=d.id

joins_regionr

ond.region_id=r.id

groupbye.dept_id

【SQL>】求亚洲地区各部门平均工资

 

【SQL>】求各部门不同职位的平均工资

selectdept_id,title,avg(salary)

froms_emp

groupbydept_id,title

二、有having子句的Select语句的执行过程

1.行被分组

2.将having子句的条件应用到每个分组上

3.只有符合having条件的组被保留,再应用select后面的组函数对每组的数据可进行处理。

思考1:

having子句后面是否可以跟别名?

答:

不能,因为having在select之前被执行。

思考2:

having子句后面可以跟那些条件表达式

答:

组函数、需要group的字段

【SQL>】求各部门平均工资大于1500

selectdept_id,title,avg(salary)

froms_emp

groupbydept_id

havingavg(salary)>1500

【SQL>】求除32、42部门的外所有部门的平均工资

写法1:

selectdept_id,avg(salary)

froms_emp

wheredept_idnotin(32,42)

groupbydept_id

写法2:

selectdept_id,avg(salary)

froms_emp

groupbydept_id

havingdept_idnotin(32,42)

总结:

写法2优于写法1

三、where子句和having子

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2