oracle笔记入门Word文档下载推荐.docx

上传人:b****5 文档编号:19831361 上传时间:2023-01-10 格式:DOCX 页数:58 大小:117.30KB
下载 相关 举报
oracle笔记入门Word文档下载推荐.docx_第1页
第1页 / 共58页
oracle笔记入门Word文档下载推荐.docx_第2页
第2页 / 共58页
oracle笔记入门Word文档下载推荐.docx_第3页
第3页 / 共58页
oracle笔记入门Word文档下载推荐.docx_第4页
第4页 / 共58页
oracle笔记入门Word文档下载推荐.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

oracle笔记入门Word文档下载推荐.docx

《oracle笔记入门Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《oracle笔记入门Word文档下载推荐.docx(58页珍藏版)》请在冰豆网上搜索。

oracle笔记入门Word文档下载推荐.docx

DML语句包含Insert,Update,Delete等常用语句

3.DDL语句

DDL语句包含Create,Alter,Drop等常用语句

4.事务控制语句

包含Commit,Rollback等常用语句

还有一大类语句:

叫DCL语句(DataControlLanguage),grant、revock主要用于权限的分配与回收,由于与开发关系不是十分密切,不做重点讲解

最重要的就是select语句,任何select语句全部要背过,select语句必考,不会考其它的

Select语句就是从表里把数据选出来

首先熟悉试验中的数据

Selecttable_namefromuser_tables;

Setpagesize100;

Setlinesize500;

Run/r执行上一条命令

Edit/ed调出缓存数据方便修改sqlplus不支持光标移动

第一条语句:

descemp;

desc表名;

列出表头==字段==列

Varchar2(50)可变字符串支持国际化

NUMBER(7,2)7位的数字,2位的小数

每行显示的宽度setlinesize200;

显示的条数setpagesize30;

 

emp雇员信息表

EMPNO雇员编号NOTNULLNUMBER(4)

ENAME雇员姓名VARCHAR2(10)

JOB工作岗位VARCHAR2(9)

MGR该雇员经理人的编号NUMBER(4)

HIREDATE入职时间DATE

SAL薪水NUMBER(7,2)

COMM津贴NUMBER(7,2)

DEPTNO雇员所在部门编号NUMBER

(2)

表内容:

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

-----------------------------------------------------------------------------------------

7369SMITHCLERK790217-12月-8080020

7499ALLENSALESMAN769820-2月-81160030030

7521WARDSALESMAN769822-2月-81125050030

7566JONESMANAGER783902-4月-81297520

7654MARTINSALESMAN769828-9月-811250140030

7698BLAKEMANAGER783901-5月-81285030

7782CLARKMANAGER783909-6月-81245010

7788SCOTTANALYST756619-4月-87300020

7839KINGPRESIDENT17-11月-81500010

7844TURNERSALESMAN769808-9月-811500030

7876ADAMSCLERK778823-5月-87110020

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

7900JAMESCLERK769803-12月-8195030

7902FORDANALYST756603-12月-81300020

7934MILLERCLERK778223-1月-82130010

dept部门信息表

DEPTNO部门编号NOTNULLNUMBER

(2)

DNAME部门名字VARCHAR2(14)

LOC部门所在地VARCHAR2(13)

内容:

DEPTNODNAMELOC

------------------------------------------

10ACCOUNTINGNEWYORK

20RESEARCHDALLAS

30SALESCHICAGO

40OPERATIONSBOSTON

salgrade薪水等级表

GRADE薪水等级NUMBER

LOSAL该等级的最低薪水值NUMBER

HISAL该等级的最高薪水值NUMBER

GRADELOSALHISAL

-------------------------

17001200

212011400

314012000

420013000

530019999

熟悉表里面的数据:

第一个select语句:

select*from表名;

Select*fromemp;

1.简单select语句:

例子1:

取出一张表中所有的数据

Select*fromemp;

例子2:

取出某些字段的值

Selectempno,ename,deptnofromemp;

1.包含算术表达式的sql语句

取出emp中所有人的年薪及名字

Selectename,sal*12fromemp;

在emp表中取出2*3的结果

Select2*3fromemp;

例子3:

取出2*3的一条记录

Select2*3fromdual;

--当我们需要显示一个结果的时候就用系统提供的dual虚表

例子4:

取出当前系统时间

Selectsysdatefromdual;

--sysdate在Oracle中表示当前系统时间

3.含有别名的sql语句

selectename,sal*12asannual_salfromempast

但是注意:

所有的别名全都都会自动变成大写

如果想让别名强制大小写混合可以使用双引号

Selectename,sal*12“Annual_sal”fromemp;

举例:

selectyearfrom(

、selectename,sal*12as"

YeaR"

fromemp)

注意可以这样select"

YeaR"

from(selectename,sal*12as"

如果想让别名中有空格也使用双引号

Selectename,sal*12“Annualsal”fromemp;

5.处理含有空值的字符串

算某人一年的年薪含有任何null值的数学表达式最后的结果都为空值

Selectename,sal*12+commfromempnvl

含有任何null值的字符串表达式中,null被当作空字符串处理

selectempno,ename||'

andhismanagernumberis'

||mgrfromemp;

selectename||'

andhis'

'

smgris'

||mgrfromemp

字符串连接符:

||

Select语句中用单引号表示字符串

6.在select中使用单引号

用两个单引号表示一个单引号

selectempno,ename||'

'

smanageris'

||mgrfromemp;

7.、

例子1:

selectdistinctdeptnofromemp;

--用distinct消除结果集中的重复信息

用distinct修饰多个字段的时候,指的是消除后面所有字段的组合重复结果

Selectdistinctjob,deptnofromemp;

--指job和deptno都相同的删除

使用where对数据库设定条件限制,where过滤条件,过滤相关的数据

1.等值判断

显示部门编号为10的所有员工的详细信息

select*fromempwheredeptno=10;

显示名字为KING的员工的详细信息

判断字符串是否相等时,字符串要用单引号引起来,单引号中字符串内容是要区分大小写的

Select*fromempwhereename=‘KING’;

2.非等值判断(>

<

>

=<

>

取出薪水大于2000的所有员工的名字和薪水

Selectename,salfromempwheresal>

2000;

字符串大小比较:

是比较字符串ASCII码值的比较,先比较第一字母,依次……

Selectename,salfromempwhereename>

‘DBA’;

取出所有部门号不是10的雇员的名字和薪水

Selectename,salfromempwheredeptno<

10;

取出薪水位于800和1500之间的雇员名字和薪水

Selectename,salfromempwheresal>

=800andsal<

=1500;

Selectename,salfromempwheresalbetween800and1500;

注意:

使用betweenand的时候,包含了最大值和最小值

3.空值的处理

取出津贴值为空的所有雇员的名字

Selectenamefromempwherecommisnull;

取出津贴不为空的所有雇员的名字

Selectenamefromempwherecommisnotnull;

4.In语句:

用于刷选某一个值

把薪水是800,1250,1500,2000的雇员信息取出来

Selectename,salfromempwheresalin(800,1250,1500,2000);

Selectename,salfromempwheresalnotin(800,1250,1500,2000);

也可以用于字符串操作

把名字为SMITH,ALLEN,KING的雇员取出来

Selectename,salfromempwhereenamein(‘SMITH’,‘ALLEN’,‘KING’);

注意名字要大写与数据库数据一致否则查不到

5.日期处理

Oracle默认的日期格式为:

DD-MON-RR

查询在81年2月20号以后入职的员工

Selectename,hiredatefromempwherehiredate>

’20-2月-81’;

’20-2月-1981’;

如果想用自己定义的日期格式,可以使用to_charorto_date函数,

6.AND,OR,NOT

查询部门标号为10并且薪水>

1000的员工

Selectename,deptno,salfromempwheredeptno=10andsal>

1000;

查询部门编号为10或者工作岗位为CLERK的员工

Selectename,deptno,jobfromempwheredeptno=10orjob=‘CLEARK’;

查询薪水没有位于800,1500,2000之中的员工

Selectename,salfromempwheresalnotin(800,1500,2000);

7.模糊查询

使用like关键字,和通配符%表示0个或多个字符,_表示1个字符

查询名字中含有ALL的人员

Selectenamefromempwhereenamelike‘%ALL%’;

查询第二字母中含有A的雇员

Selectenamefromempwhereenamelike‘_A%’;

查询名字中含有%等通配符的数据时,使用转义字符\

Escape自定义转移字符,系统默认的转义字符是‘\’

Selectenamefromempwhereenamelike‘%\%%’escape‘\’;

Selectenamefromempwhereenamelike‘%¥%%’escape‘¥’;

使用它orderby对数据进行排序

按照名字的升序进行排序

Selectename,salfromemporderbyename;

Selectename,salfromemporderbyenameasc;

用asc关键字指出按升序排列

按照雇员编号的升序排序

Selectename,deptnofromemporderbydeptno;

Selectename,deptnofromemporderbydeptnoasc;

按照名字降序排列

Selectename,deptnofromemporderbyenamedesc;

按照部门编号降序排列

Selectename,deptnofromemporderbydeptnodesc,enameasc;

常用SQL函数

1.Lower()函数将字符串全部转换成小写

将雇员中名字还有’A’或’a’的人员全部显示出来

Selectenamefromempwhereenamelike‘%A%’orenamelike‘%a%’;

Selectenamefromempwherelower(ename)like‘%a%’;

2.Upper()函数讲字符串全部转换为大写

TcltcltcLTcL

Selectenamefromemp

Whereupper(ename)like‘%TCL%’

Wherelower(ename)like‘%tcl%’

Selectenamefromempwhereupper(ename)like‘%A%’;

3.substr()函数

Stringsubstring(1,6);

从第一子串开始共截3个子串

Selectsubstr(‘Hello’,1,3)fromdual;

Hel

Substr可以省略第三个参数

从第二个字符开始,截取到整个字符串结束

Selectsubstr(ename,2)fromemp;

4.Chr()函数

求一个与某个ASCII码值对应的字符

Selectchr(65)fromdual;

5.Ascii()函数

例子:

求一个字符的ASCII码值

Selectascii(‘A’)fromdual;

6.round()函数对参数值进行四舍五入的操作

对23.652进行四舍五入操作

Selectround(23.652)fromdual;

24

可以指定四舍五入到小数点后几位

对23.652四舍五入到小数点后2位

Selectround(23.655,2)fromdual;

23.65

可以用负数指定小数点前面几位

对23.652四舍五入到小数点前1位

Selectround(23.652,-1)fromdual;

20

*7.to_char()

用于将数字或日期转换成特定的字符串,

To_char()有两个参数:

第一个参数:

需要进行转换的日期或数字

第二个参数:

特定的转换格式,对于数字有一下几个格式可以指定:

9代表数字,若果该位没有数字则不进行显示,但对于小数点后面的部分仍会强制显示

0代表一位数字,如果该位没有数字则强制显示0

$显示美元符号

L显示本地货币符号

.显示小数点

显示千分位符号

selectto_char(sal,‘$99,999.9999’)salaryfromempwhereename=‘ALLEN’;

$1,600.0000

selectto_char(sal,‘$00,000.0000’)salaryfromempwhereename=‘ALLEN’;

$01,600.0000

对于日期:

to_char()可以指定为下面的常用格式:

格式控制符含义

YYYY、YY-----------------------------代表4位,2位数字的年份

MM-----------------------------用数字表示的月份

MON-----------------------------月份的缩写对中文月份来说就是全称

DD-----------------------------数字表示的日

DY-----------------------------星期的缩写,对中文的星期来说就是全称

HH24、HH12---------------------------12小时或者24小时进制下的时间

MI-----------------------------分钟数

SS-----------------------------秒数

有了这些格式,就可以把日期自定义为任何格式

selectto_char(sysdate,‘YYYY年MM月DD日HH24:

MI:

SS’)fromdual;

2008-04-04

selectto_char(sysdate,'

YYYY"

年"

-MM"

月"

-DD"

日"

HH24:

SS'

)fromdual;

*8.to_date()函数

将特定的字符串转换成日期格式,这个函数有两个参数

第一参数:

自定义的日子字符串

第二参数:

指定这个字符串的格式

将1981年3月2日中午以后入职的雇员信息取出:

Select*fromempwherehiredate>

to_date(‘1981-03-0212:

00:

00’,‘YYYY-MM-DDHH12:

SS’);

*9.to_number()函数

将指定的字符串转换成数字格式,这个函数有两个参数

自定义的数字字符串

求薪水大于1200的员工信息

*10.nvl()函数

用来处理空值,这个函数有两个参数:

字段名或表达式,如果这个参数值为null,就返回第二参数值,否则返回第一参数值

求每个员工每年的年收入(12个月的薪水+津贴)

因为comm的值为null,想要得到正确的结果,必须讲null值转换为0

Selectename,sal*12+nvl(comm,0)fromemp;

*11.组函数包括5个函数:

(1).avg(字段名):

求平均值

(2).max(字段名):

求最大值

(3).min():

求最小值

(4).sum():

求总和

(5).count():

求记录的数量selectcount(ename)fromemp;

求薪水的总和、平均值、最大值和最小值

Selectsum(sal),avg(sal),max(sal),min(sal)fromemp;

求emp表中记录的数量

Selectcount(*)fromemp;

Count()可以对单独字段使用,得到的是所有非空记录的数量

求comm字段中所有非空记录的数量

Selectcount(comm)fromemp;

Count()可以和distinct一起使用,得到所有唯一值记录的数量

求emp表中deptno唯一的数量

Selectcount(distinctdeptno)fromemp;

函数名不是在所有数据库中通用

对表中的数据进行分组

计算每个部门的平均工资

首先将现有数据按照部门进行分组,然后再计算每个组员工的平均薪水。

Selectdeptno,avg(sal)fromempgroupbydeptno;

计算每个部门的最大工资

Selectdeptno,max(sal)fromempgroupbydeptno;

按照部门,和职位的最大薪水进行分组

Selectdeptno,job,max(sal)fromempgroupbydeptno,job;

使用groupby的规律:

出现在select列表中的字段,如果没有出现在组函数中,则必须出现在groupby子句中

典型错

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

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1