没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
黄刚创意工作室 技术部
一.
验证 已经安装完成了,首先得确认程序里有这些个选项,有四个选项:
、集成管理工具、配置和移植工具(管理员用得比较多)、应用程序开
发。 也可以形成一种层次性的链接(),对于我们来说用得最多是
,而 OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件
(COM),他是微软提出的,在用 VB 开发时可能要用,对于我们来说不须管。
当启动 sqlplus 时会提示输入用户名和口令,所谓的 sqlplus 是 Oracle 的一个客户端。
Oracle 大多数命令都用命令来实现,所以比较难使,就如同 unix 比 windows 难使。口令
你输入 tiger,建议就用它,因为以后去企业里 Oracle 9i 就是用的这个口令。当你看到
SQL>命令符时说明已经进入到了 Oracle 的命令行了。
图形版的 sqlplus,命令行的 sqlplus,还有一个就是通过网页访问 Oracle 的服务,启
动 sqlplus,端口号是 5560,URL 是 http://127.0.0.1:5560/isqlplus 。 isqlplus
非常有用,比
如说你的机器上没有装上 Oracle,就可以通过键入别人的 IP,然后登陆到他的机器上来做
实验,当然也可以安装特定的客户端软件实现。
说实在的 Oracle 的这个客户端太难看了,并且要记好多好多的命令,所以专门有一类
公司专门为 Oracle 开发客户端。有一个比较著名的客户端叫 Toad,当然 Oracle 还有一个
客户端 PL/SQL Develplor,这个用的也非常多。数据库管理时常用 Toad(英文蛤蟆的意
思),如果有声卡的话,你启动一次它就叫一次。对我们来说 sqlplus 足够使了。以后有机
会我使用一下 PL/SQL Develplor,不过这个也不好使,因为你同时必须装上 Oracle,还不
如 isqlplus 好呢。
以超级管理员身份链接数据库的方法是再命令行下敲入命令: sqlplus sys/口令 as
sysdba。Sys 和 system 的区别是 sys 是数据库管理者,system 是数据库所有者,sys 用户
拥有 dba,sysdba,sysoper 等角色或权限,是 oracle 权限最高的用户,system 用户拥有
dba,sysdba 等角色或系统权限,system 如果正常登录,它其实就是一个普通的 dba 用户,
但是如果以 as sysdba 登录,其结果实际上它是作为 sys 用户登录的,这一点类似 Linux 里
面的 sudo 的感觉,从登录信息里面我们可以看出来。sys 用户必须以 as sysdba 或 as sysoper
形式登录。然后输入命令 alter user scott account unlock;它的意思是将 Scott 用户解锁,
以后关于 dba 的用到一个学一个,没必要从头到尾的去学它。
二.
SQL 语言是在数据库下进行操作的语言,它本身是一个标准语言,有国际标准。有两
套一个是 SQL1992,SQL1999。大多数数据库既支持旧的标准也支持新的,很多也是用的
旧的 SQL 语言写程序的,对于我们来说新旧都要学,而且对大多数数据库系统来说都是通
用的,只不过不同数据库有一个轻微的改变,这就是最郁闷的地方,没办法到时候查手册
或 google 一下。SQL 全称为 Structured Query Language,即机构化查询语言,它被定义
为第四代语言。为什么叫第四代语言,因为我们知道第三代语言也得有 if else for 等这些流
程控制语句,也就是你得告诉它干什么且怎么干。第四大只用告诉它我要干什么,不用去
控制它怎么干,这样的语言学起来当然十分 easy。
我们共有四类语句要学:数据操作语言语句[Data manipulation language,DML],会
话 控 制 语 句 [session control statement] , 数 据 定 义 语 言 语 句 [Data definition
language,DDL]以及事务控制语句[transaction control statement]。
查询语句只有一句话就是 select 语句,这是最重要的一条语句。以后只要遇到相应的
select 语句一律背过,企业再面试时其他语句一般不会怎么考但这条语句是必考的。如果
考你 SQL 语句肯定会考这条 select 语句不是别的。你跟别人交流的时候,别说我写过几条
黄刚创意工作室 技术部
dml 语句,而因详细的说到底是什么语句,比如 insert 语句、update 语句等。选择的意思
是从表里把数据拿出来,展现出来。听起来似乎挺简单的,但你要从表里拿数据得首先知
道有几张表,每张表里有些什么内容。
第一步要做的就是熟悉一下实验用的数据,这些数据 Oracle 都给自带了,直接用就行
了。首先第一条语句 desc emp,描述一下 emp 这张表,会分别列出所有字段(表头),
empno 雇员编号,ename 雇员名字,job 雇员工种,mgr 经理人,hiredate 雇员入职日期,
sal 薪水,comm 津贴,奖金,deptno 所属部门编号。表还有一部分叫类型,也就是相对
应字段的类型,这些都是 Oracle 已经定义好的,我们直接用。现在先用别人建立好的表,
然后再自己建表。NUMBER 指数字,VARCHAR 指字符型,Oracle7 以前在用,现在常用
的是 VARCHAR2 它支持各种可变字符串,可以更好的表示各国文字, DATE 指日期,
NUMBER(7,2)指七位数字有两位小数。
desc dept 部门表,它有三个字段 DEPTNO 部门编号,DNAME 部门名称,LOC 部门
所在位置。 工资等级表,许多公司都实行的是工资等级制,分几级工资 ,
工资等级, ! 该等级最高工资"! ! 该等级最低工资。
以上简要的介绍了三张表,如果想更详细的了解里面的数据,教大家第一个 语
句:
#$%表名;。#表示把表里所有的数据都取出来,分号表示语句结束。尽量多熟
悉各张表之间的关系,以及表内部各字段之间的关系,越熟悉越好。
如果要算纯数据,可以采用 这张表,它就一条记录,一个字段。你如果用其他表
计算的话会有好多条重复结果,记录。
字段是不能有空格的,如果非要空格可以将整个字段用双引号括起来,这样的话引号
里面就可以加上各种各样的字符了。如果没加引号的话那样做是不对的。再没有加双引号
的时候结果字段名会以大写字母显示出来,但加了双引号就保持住了原来的形式不变。没
有就是 值,即便是 & 也与空值大不一样。& 是有值但为 &, 是没有值。任何含有空
值的表达式最后的结果都是空值。
'! 里面有一个字符串链接符((,它的作用跟 )* 里的+一样,所有被链接的都会转换
为字符串显示出来。如 %(($%%,它的意思是将结果 转换为字符串后
链接到 % 后面。在任何数据库的 '! 语句里面都是用单引号括起来表示一个字符串序
列。如果字符串里本来就有单引号,再解析时就会出错。可以用两个单引号来代替一个单
引号,这样就可以正确显示了。
关键字 是指选择不重复的记录,如果修饰多个字段时表示选择该多个字段的组
合不重复的显示出来。-. 叫过滤条件,它会过滤掉一些记录,等值判断用/,不等值判
断注意是01而不是 )* 语句里的不等号。字符串比较是比较字符的 2 码,挨个比较。
做比较时还可以用关键字 3-,注意的是包括边界值的。 也可把两个过滤条件
连接起来。
下面来讲空值的处理,你可以直接用 -.+字段+ 来取出是空值的,取出不是空
值的多加一个 就行。这种处理方式非常像我们的说话习惯。 然后跟着某个字段的取
值是括号括起来各值之间用逗号隔开。可以使用 、, 连接起各个查询条件。
日期处理起来稍微麻烦一些,由于现在还没有学日期函数,所以采用另外一种方式—
一个特殊的字符串。你就按它的日期写法来写如‘4&54 月5&67,然后系统就按照字符串来比
较即可。年份可以写全如‘4&54 月54&&67,它能认出来。以后我们可以写成任何形式的日期
格式都能处理。
模糊查询是这样的,比如找出名字里含有 的,有点像正则表达式。使用关键字
8,可以通配符9,代表 & 个或多个字符,:代表一个字母。如果名字里就含有一个9,则
4
黄刚创意工作室 技术部
使用转义字符;9的形式,当然可以自己指定转义字符方法是 #$%%-.%
8<:=99<<=<,。
排序用到的一个关键字是 3,默认的是按升序排列,如果想降序排列可以采用
如下形式:#$%3, 是降序的英文缩写。升序排列可不
写也可加上 。还可以加入 -. 先过滤了再排序,按照几个字段进行排序时,用逗号分
隔开,如下:%">3"%""$%%3",意思是
先将表按照 升序排列,然后相同的 内部再按照 降序排列。
三.
'! 函数,函数就是 )* 里的方法,有参数有返回值。现在讲的是单行函数,第一个
叫做 -,作用是转换为小写;第二个叫 ,作用是转为大写;第三个叫 3,
取子串。这几个函数都是对字符串进行操作的,传递进去的参数就是字段名。如
-?%@$%%,还有一个函数叫 .,它是把一个数字转为字符:.?AB@$%
,将 AB 代表的字符显示出来,与之对应的是将一个字符转为对应的 2 码,叫 ,
如:?C7@$%,就是将 的码值显示出来。
函数是四舍五入的作用,如 ?DEFGEGDEG@$%,结果就为 DD。还有
一个重载的带两个参数的方法如 ?DEFGEGDEG"D@$%,四舍五入到小数点后 D
位,结果位 DDFGEGD,第二个参数可以是负数表示四舍五入到小数点前多少位。
其他函数可以不用记住,但要知道有这么个函数,然后取手册中可以查到,但下面讲
的一个函数最好记住它。:. 是将字段内容显示为字符,可以对显示的形式进行格式控
制,比如 :.?"<=HH"HHH"HHHFHHHH<@$%%,就是以后面给定字符形式显示出来,
小数点后的四位会强制显示,而前面的没有的位数就不显示,这就是 H 的含义。=换为 ! 表
示本地货币。& 代表一位数字,如果没有该位数字也会强制显示为 &,对于这种方式是为了
进行格式控制。
实际上用 :. 来控制数字是比较少用的,而用得最多的是对日期格式的控制,我们
知道 里的 包含了插入记录的详细时间信息,我们可以对其进行显示的格式进
行控制,比如::.?."<5%%5<@$%%,转换为年月日 4&&B5E54E 这
种格式的。实际上对日期的格式控制是利用 )* 来实现的,到时会有一个关于日期处理的
专题。
%">3". $%% -. . 1:?<HA455 IE&I&&<" <5
%%5..I%I<@,意思是将特定的字符串转换为相应的日期格式。还有 :%3 是将特定
的 字 符 串 解 析 为 相 应 的 数 字 格 式 如 % ">3 " $% % -.
0:%3?<=&&&<"<=HHHH<@,。
由于有时如果计算式中含有空值会导致计算出来的结果不正确,为了处理这种有空值
的 字 段 采 用 一 个 函 数 来 做 %">3"#4+*?%%"&@ % $%
%,*(%%,&)作用是将 %% 字段的值通过 * 来处理,如果 %% 为 则返回
&,否则返回 %% 实际代表的值。
组函数是函数的输入有好几条,但输出就那么一条,这很重要,用起来很简单虽然说
起来很麻烦。有这 几 个方法 %J , % , * ,% ,还有一 个 组 函数很重要:
?#@$%%,它的作用是求出 % 表格的记录总数,你要 某一个字段就会记下
不为空的记录总数。组函数一个都不能忘,很重要。?@$%%,
找出各个单独的部门一共有多少个, 可以修饰字段。
当要将各个组中的记录分别取出然后再计算比如平均值等要采用 3+字段。比
如:"*?@$%%3,将平均值按分开部门来算。3 可
E
黄刚创意工作室 技术部
以后加多个字段的组合,相同的组合看做一组。使用 3的时候有一个规则:出现在
列表中的字段要么出现再 3里要么出现在组函数里面,否则语法出错,主要
由于可能不唯一匹配导致。
使用 .* 对分组进行限制,这也是来自一个实际中的需求,比方说按部门编号进行
分组,分组之后每个部门的平均薪水,要你把平均薪水大于 4&&& 的组给取出来。-. 语
句是对单条记录进行过滤,这个地方无法用,实际在执行的时候首先执行 -. 语句。
"*?@$%%3.**?@14&&&,首先按 求出每个
的平均 ,然后对这些分组利用 .*语句进行过滤。
到现在为止已经学完了所有的单条 语句,执行顺序按照 +字段或内容
+$%+表名+-.K+3K+.*K+3K这个顺序进行执行,首先取出记录,然
后对单个记录进行过滤,过滤完了分组,分组好了对组过滤,剩下的分组再按顺序显示出
来。单条 语句一定要非常熟悉,如果这都要查书的话对企业就没法交代了,哈哈!
之前已经讲过一个子查询的例子:%"$%%-./?%J?@
$%%@,看谁的工资最高,之所以叫子查询因为再一个 语句里套了另外一个
语句。理解子查询的关键是把它当成一张表,可以对它做表连接最后就可以求出想要的结
果来。单独的 语句相当简单,但是有了 子句和表连接之后语句就稍微复杂了点。
%"$%%>?%J?@%J:"$%%3@
?%F/F%J:F/%F@,这个语句的作用是求出每个部门薪水最高的员
工记录。
F%"4F%$%%"%4-.F%/4F%,对于在同一张表
中进行查询时需要进行自连接,为表取别名便于写出条件和比较。这条语句的意思是找出
每个员工的经理人。为同一张表起不同的别名然后当成两张表来用。
在 '!HH 里面链接条件和过滤条件是分开的,即链接条件不能出现在 -. 语句里面,
利用 )+表名++链接条件进行。比如:%">3"%$%%>
?%F/F@, 等 值 链 接 的 时 候 有 一 个 简 便 的 写 法 ?@ 代 替
?%F/F@但不推荐使用,因它的限制条件很多,可能报出来的错误很难找
并且看起来也不是很清楚。
连接有各种各样的形式,下面我们讲外连接,其实用起来特别方便。它会把左边那张
表不能和右边链接的数据也拿出来。F%"4F%%"F$%%
L>%4?F%/4F%@; 可以省略掉效果一样。如果想把右边多余
的拿出来 ) 前加上 . 即可;如果两边多余的都想拿出来 ) 前加上 $ 叫全外连接。
讲一道面试题,不准用组函数求出薪水的最高值。方法是用自连接,连接条件采用非
等值连接0"这样表中的最大值就会连接不上,然后再从 % 表中找出未连接上的最大值,
如 下 : $% % -. ? F $% % > % 4
?F04F@
@,。
求出平均薪水最高的部门名称和编号,用到子查询和表连接当语句比较复杂的时候最
好注意一下缩进和格式,否则自己都会搞混:
%"F"*:$%
>?"*?@*:$%%3@
?F/F@
-.*:/?%J?*?@@$%%3@,这里还用到了组函数的嵌套使
得程序简洁了,但要注意最多只能两层嵌套,第一层可能有多个输出(分组时),第二层
一定只能有一个输出,接下来就不能再嵌套了,一个输入不能作为组函数的参数。
D
黄刚创意工作室 技术部
求平均薪水等级最低的部门的部门名称,编号,平均薪水:
%"""*:$%
>
?
%"F"*:$%
>?"*?@*:$%%3@
?F/F@
@
?*:3-FF.@
-./?%?@$%
?$%>
?"*?@*:$%%3@
?*:3-FF.@
@
@
,
如果想要 M 用户具有创建视图或表的权限,需要以 用户以 3 的身份登录然
后键入命令 3"*-M,然后以 M 登录就可以了。创建视图时,
名字要以 *=开头,视图可以看做一个子查询或一张表,实际上是张虚表,取记录还是从表
中取。创建视图的一个好处就是便于取数据,写起来方便。删除视图的方法是 *-+
视图名。
求比普通员工最高薪水值还要高的经理人名称,主要是先求出普通员工的最高薪水,
方法是员工的编号不在 % 字段,同时要主要去掉 % 为空值的:
%"%$%%
-.1?%J?@$%%-.%?%$%%-.
%@@%?%$%%-.%@
,
再讲一道面试题:比较这两个语句的执行效率
#$%%-./&%8C997,
#$%%-.%8C997/&,
理论上说应该是第一个,就如同NN和N的区别一样它会过滤掉很多条件,后面的字符串就
不用再取去比较了,但实际中不好说因为有可能 在执行的时候做了优化,自动将数
字比较放前面了。
四.
现在已经讲完了 语句,接下来讲 % 语句,常见的有三条,他们和 语句合
称为数据库的四大语句(OOO)。增删改查!
接下来简单介绍一下 的逻辑结构。安装的时候创建了一个全局数据库,同时为
这个数据库建立了一系列管理它的进程 。一个大数据库里面又区分为不同的表空间,说
白了就是装表的地儿。我们现在的表是放在不同的表空间里面,比方说 表空间,在里
面放着某个用户所有的表,当该用户登录进去后其实是去访问自己的表空间里的相对应的
表。可以将某个表空间里的内容全部 出去创建一个新的 ,然后该 就操作专属
于自己的表空间里的表了,所以说 是支持多用户的。
G
剩余33页未读,继续阅读
资源评论
cailibin
- 粉丝: 4
- 资源: 7018
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功