Oracle自学自学笔记Word格式.docx
- 文档编号:13701308
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:36
- 大小:44.07KB
Oracle自学自学笔记Word格式.docx
《Oracle自学自学笔记Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle自学自学笔记Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
说实在的Oracle的这个客户端太难看了,并且要记好多好多的命令,所以专门有一类公司专门为Oracle开发客户端。
有一个比较著名的客户端叫Toad,当然Oracle还有一个客户端PL/SQLDevelplor,这个用的也非常多。
数据库管理时常用Toad(英文蛤蟆的意思),如果有声卡的话,你启动一次它就叫一次。
对我们来说sqlplus足够使了。
以后有机会我使用一下PL/SQLDevelplor,不过这个也不好使,因为你同时必须装上Oracle,还不如isqlplus好呢。
以超级管理员身份链接数据库的方法是再命令行下敲入命令:
sqlplussys/口令assysdba。
Sys和system的区别是sys是数据库管理者,system是数据库所有者,sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户,system用户拥有dba,sysdba等角色或系统权限,system如果正常登录,它其实就是一个普通的dba用户,但是如果以assysdba登录,其结果实际上它是作为sys用户登录的,这一点类似Linux里面的sudo的感觉,从登录信息里面我们可以看出来。
sys用户必须以assysdba或assysoper形式登录。
然后输入命令alteruserscottaccountunlock;
它的意思是将Scott用户解锁,以后关于dba的用到一个学一个,没必要从头到尾的去学它。
二.
SQL语言是在数据库下进行操作的语言,它本身是一个标准语言,有国际标准。
有两套一个是SQL1992,SQL1999。
大多数数据库既支持旧的标准也支持新的,很多也是用的旧的SQL语言写程序的,对于我们来说新旧都要学,而且对大多数数据库系统来说都是通用的,只不过不同数据库有一个轻微的改变,这就是最郁闷的地方,没办法到时候查手册或google一下。
SQL全称为StructuredQueryLanguage,即机构化查询语言,它被定义为第四代语言。
为什么叫第四代语言,因为我们知道第三代语言也得有ifelsefor等这些流程控制语句,也就是你得告诉它干什么且怎么干。
第四大只用告诉它我要干什么,不用去控制它怎么干,这样的语言学起来当然十分easy。
我们共有四类语句要学:
数据操作语言语句[Datamanipulationlanguage,DML],会话控制语句[sessioncontrolstatement],数据定义语言语句[Datadefinitionlanguage,DDL]以及事务控制语句[transactioncontrolstatement]。
查询语句只有一句话就是select语句,这是最重要的一条语句。
以后只要遇到相应的select语句一律背过,企业再面试时其他语句一般不会怎么考但这条语句是必考的。
如果考你SQL语句肯定会考这条select语句不是别的。
你跟别人交流的时候,别说我写过几条dml语句,而因详细的说到底是什么语句,比如insert语句、update语句等。
选择的意思是从表里把数据拿出来,展现出来。
听起来似乎挺简单的,但你要从表里拿数据得首先知道有几张表,每张表里有些什么内容。
第一步要做的就是熟悉一下实验用的数据,这些数据Oracle都给自带了,直接用就行了。
首先第一条语句descemp,描述一下emp这张表,会分别列出所有字段(表头),empno雇员编号,ename雇员名字,job雇员工种,mgr经理人,hiredate雇员入职日期,sal薪水,comm津贴,奖金,deptno所属部门编号。
表还有一部分叫类型,也就是相对应字段的类型,这些都是Oracle已经定义好的,我们直接用。
现在先用别人建立好的表,然后再自己建表。
NUMBER指数字,VARCHAR指字符型,Oracle7以前在用,现在常用的是VARCHAR2它支持各种可变字符串,可以更好的表示各国文字,DATE指日期,NUMBER(7,2)指七位数字有两位小数。
descdept部门表,它有三个字段DEPTNO部门编号,DNAME部门名称,LOC部门所在位置。
Descsalgrade工资等级表,许多公司都实行的是工资等级制,分几级工资,GRADE工资等级,HISAL该等级最高工资,LOSAL该等级最低工资。
以上简要的介绍了三张表,如果想更详细的了解里面的数据,教大家第一个select语句:
seclect*from表名;
。
*表示把表里所有的数据都取出来,分号表示语句结束。
尽量多熟悉各张表之间的关系,以及表内部各字段之间的关系,越熟悉越好。
如果要算纯数据,可以采用dual这张表,它就一条记录,一个字段。
你如果用其他表计算的话会有好多条重复结果,记录。
字段是不能有空格的,如果非要空格可以将整个字段用双引号括起来,这样的话引号里面就可以加上各种各样的字符了。
如果没加引号的话那样做是不对的。
再没有加双引号的时候结果字段名会以大写字母显示出来,但加了双引号就保持住了原来的形式不变。
没有就是null值,即便是0也与空值大不一样。
0是有值但为0,null是没有值。
任何含有空值的表达式最后的结果都是空值。
SQL里面有一个字符串链接符||,它的作用跟Java里的+一样,所有被链接的都会转换为字符串显示出来。
如selectename||salfromemp;
它的意思是将结果sal转换为字符串后链接到ename后面。
在任何数据库的SQL语句里面都是用单引号括起来表示一个字符串序列。
如果字符串里本来就有单引号,再解析时就会出错。
可以用两个单引号来代替一个单引号,这样就可以正确显示了。
关键字distinct是指选择不重复的记录,如果修饰多个字段时表示选择该多个字段的组合不重复的显示出来。
where叫过滤条件,它会过滤掉一些记录,等值判断用=,不等值判断注意是<
>
而不是Java语句里的不等号。
字符串比较是比较字符的ASCII码,挨个比较。
做比较时还可以用关键字betweenand,注意的是包括边界值的。
and也可把两个过滤条件连接起来。
下面来讲空值的处理,你可以直接用where+字段+isnull来取出是空值的,取出不是空值的多加一个not就行。
这种处理方式非常像我们的说话习惯。
in然后跟着某个字段的取值是括号括起来各值之间用逗号隔开。
可以使用and、or,not连接起各个查询条件。
日期处理起来稍微麻烦一些,由于现在还没有学日期函数,所以采用另外一种方式—一个特殊的字符串。
你就按它的日期写法来写如‘20-2月-07’,然后系统就按照字符串来比较即可。
年份可以写全如‘20-2月-2007’,它能认出来。
以后我们可以写成任何形式的日期格式都能处理。
模糊查询是这样的,比如找出名字里含有al的,有点像正则表达式。
使用关键字like,可以通配符%,代表0个或多个字符,_代表一个字母。
如果名字里就含有一个%,则使用转义字符\%的形式,当然可以自己指定转义字符方法是select*fromempwhereenamelike'
_A$%%'
escape'
$'
;
排序用到的一个关键字是orderby,默认的是按升序排列,如果想降序排列可以采用如下形式:
select*fromdeptorderbydeptnodesc;
desc是降序的英文缩写。
升序排列可不写也可加上asc。
还可以加入where先过滤了再排序,按照几个字段进行排序时,用逗号分隔开,如下:
selectename,job,empno,sal,deptnofromemporderbydeptno,saldesc;
意思是先将表按照deptno升序排列,然后相同的deptno内部再按照sal降序排列。
三.
SQL函数,函数就是Java里的方法,有参数有返回值。
现在讲的是单行函数,第一个叫做lower,作用是转换为小写;
第二个叫upper,作用是转为大写;
第三个叫substring,取子串。
这几个函数都是对字符串进行操作的,传递进去的参数就是字段名。
如selectlower(ename)fromemp;
还有一个函数叫chr,它是把一个数字转为字符:
selectchr(86)fromdual;
将86代表的字符显示出来,与之对应的是将一个字符转为对应的ASCII码,叫ascii,如:
selectascii(‘A’)fromdual;
就是将A的码值显示出来。
round函数是四舍五入的作用,如selectround(43.535435)fromdual;
结果就为44。
还有一个重载的带两个参数的方法如selectround(43.535435,4)fromdual;
四舍五入到小数点后4位,结果位44.5354,第二个参数可以是负数表示四舍五入到小数点前多少位。
其他函数可以不用记住,但要知道有这么个函数,然后取手册中可以查到,但下面讲的一个函数最好记住它。
to_char是将字段内容显示为字符,可以对显示的形式进行格式控制,比如selectto_char(sal,'
$99,999,999.9999'
)fromemp;
就是以后面给定字符形式显示出来,小数点后的四位会强制显示,而前面的没有的位数就不显示,这就是9的含义。
$换为L表示本地货币。
0代表一位数字,如果没有该位数字也会强制显示为0,对于这种方式是为了进行格式控制。
实际上用to_char来控制数字是比较少用的,而用得最多的是对日期格式的控制,我们知道Oracle里的sysdate包含了插入记录的详细时间信息,我们可以对其进行显示的格式进行控制,比如:
selectto_char(hiredate,'
yyyy-mm-dd'
转换为年月日2006-3-23这种格式的。
实际上对日期的格式控制是利用Java来实现的,到时会有一个关于日期处理的专题。
selectename,job,hiredatefromempwherehiredate>
to_date('
1982-1-11:
30:
00'
'
yyyy-mm-ddhh:
mi:
ss'
);
意思是将特定的字符串转换为相应的日期格式。
还有to_number是将特定的字符串解析为相应的数字格式如selectename,job,salfromempwheresal<
to_number('
$1000'
'
$9999'
由于有时如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 自学 笔记