oracle笔记入门.docx
- 文档编号:6809897
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:58
- 大小:117.30KB
oracle笔记入门.docx
《oracle笔记入门.docx》由会员分享,可在线阅读,更多相关《oracle笔记入门.docx(58页珍藏版)》请在冰豆网上搜索。
oracle笔记入门
三种不同的命令行的客户端sid:
oracle90用户名:
muguobin
Oracle9iinternetb/s
Oracle需要了解的第一个:
sqlplus,当启动sqlplus需要让你输入,用户名口令字符串
Sqlplus是Oracle的一个客户端,Oracle大多数的东西都是在命令行执行,
输入用户名:
scott口令:
tiger,进入oracle命令行
Syschange_on_install
Systemmanager
3个界面:
图形版界面,命令行界面,
网页界面(isqlplus):
在浏览器地址栏输入:
http:
//127.0.0.1:
1521/isqlplus/输入用户名:
scott口令:
tiger进入
:
http:
//127.0.0.1/isqlplus/
有一个著名的oracle客户端叫toad
Oracle还有一个客户端plsqldevelement
使用超级管理员登录到数据库上:
sqlplussys/change_on_installassysdba当成DBA登录到服务器上sys/change_on_installsystem/manager
连上之后
更改user:
alteruserscottaccountunlock;更改用户解除锁定
第二章SQL语言structedquarylanguage
Sql语言是在数据库地下进行操作的专门的语言,sql语言本身是一种标准语言,它是一个国际标准,它定义了套标准SQL1992,SQL1999,SQL在大多数数据上通用,或许有轻微的改变
Oraclepl/sql方言
Server2000t-sql方言
包含四大语句:
1.查询语句DQL
查询语句只有一种就是select语句
2.DML语句
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语句
例子1:
取出emp中所有人的年薪及名字
Selectename,sal*12fromemp;
例子2:
在emp表中取出2*3的结果
Select2*3fromemp;
例子3:
取出2*3的一条记录
Select2*3fromdual;--当我们需要显示一个结果的时候就用系统提供的dual虚表
例子4:
取出当前系统时间
Selectsysdatefromdual;--sysdate在Oracle中表示当前系统时间
3.含有别名的sql语句
例子1:
selectename,sal*12asannual_salfromempast
但是注意:
所有的别名全都都会自动变成大写
例子2:
如果想让别名强制大小写混合可以使用双引号
Selectename,sal*12“Annual_sal”fromemp;
举例:
selectyearfrom(
、selectename,sal*12as"YeaR"fromemp)
注意可以这样select"YeaR"from(selectename,sal*12as"YeaR"fromemp)
例子3:
如果想让别名中有空格也使用双引号
Selectename,sal*12“Annualsal”fromemp;
5.处理含有空值的字符串
例子1:
算某人一年的年薪含有任何null值的数学表达式最后的结果都为空值
Selectename,sal*12+commfromempnvl
例子2:
含有任何null值的字符串表达式中,null被当作空字符串处理
selectempno,ename||'andhismanagernumberis'||mgrfromemp;
selectename||'andhis''smgris'||mgrfromemp
字符串连接符:
||
Select语句中用单引号表示字符串
6.在select中使用单引号
例子1:
用两个单引号表示一个单引号
selectempno,ename||'''smanageris'||mgrfromemp;
7.、
例子1:
selectdistinctdeptnofromemp;--用distinct消除结果集中的重复信息
例子2:
用distinct修饰多个字段的时候,指的是消除后面所有字段的组合重复结果
Selectdistinctjob,deptnofromemp;--指job和deptno都相同的删除
使用where对数据库设定条件限制,where过滤条件,过滤相关的数据
1.等值判断
例子1:
显示部门编号为10的所有员工的详细信息
select*fromempwheredeptno=10;
例子2:
显示名字为KING的员工的详细信息
判断字符串是否相等时,字符串要用单引号引起来,单引号中字符串内容是要区分大小写的
Select*fromempwhereename=‘KING’;
2.非等值判断(><>=<=<>)
例子1:
取出薪水大于2000的所有员工的名字和薪水
Selectename,salfromempwheresal>2000;
例子2:
字符串大小比较:
是比较字符串ASCII码值的比较,先比较第一字母,依次……
Selectename,salfromempwhereename>‘DBA’;
例子3:
取出所有部门号不是10的雇员的名字和薪水
Selectename,salfromempwheredeptno<>10;
例子4:
取出薪水位于800和1500之间的雇员名字和薪水
Selectename,salfromempwheresal>=800andsal<=1500;
Selectename,salfromempwheresalbetween800and1500;
注意:
使用betweenand的时候,包含了最大值和最小值
3.空值的处理
例子1:
取出津贴值为空的所有雇员的名字
Selectenamefromempwherecommisnull;
例子2:
取出津贴不为空的所有雇员的名字
Selectenamefromempwherecommisnotnull;
4.In语句:
用于刷选某一个值
例子1:
把薪水是800,1250,1500,2000的雇员信息取出来
Selectename,salfromempwheresalin(800,1250,1500,2000);
Selectename,salfromempwheresalnotin(800,1250,1500,2000);
也可以用于字符串操作
例子2:
把名字为SMITH,ALLEN,KING的雇员取出来
Selectename,salfromempwhereenamein(‘SMITH’,‘ALLEN’,‘KING’);
注意名字要大写与数据库数据一致否则查不到
5.日期处理
Oracle默认的日期格式为:
DD-MON-RR
例子1:
查询在81年2月20号以后入职的员工
Selectename,hiredatefromempwherehiredate>’20-2月-81’;
Selectename,hiredatefromempwherehiredate>’20-2月-1981’;
如果想用自己定义的日期格式,可以使用to_charorto_date函数,
6.AND,OR,NOT
例子1:
查询部门标号为10并且薪水>1000的员工
Selectename,deptno,salfromempwheredeptno=10andsal>1000;
例子2:
查询部门编号为10或者工作岗位为CLERK的员工
Selectename,deptno,jobfromempwheredeptno=10orjob=‘CLEARK’;
例子3:
查询薪水没有位于800,1500,2000之中的员工
Selectename,salfromempwheresalnotin(800,1500,2000);
7.模糊查询
使用like关键字,和通配符%表示0个或多个字符,_表示1个字符
例子1:
查询名字中含有ALL的人员
Selectenamefromempwhereenamelike‘%ALL%’;
例子2:
查询第二字母中含有A的雇员
Selectenamefromempwhereenamelike‘_A%’;
例子3:
查询名字中含有%等通配符的数据时,使用转义字符\
Escape自定义转移字符,系统默认的转义字符是‘\’
Selectenamefromempwhereenamelike‘%\%%’escape‘\’;
Selectenamefromempwhereenamelike‘%¥%%’escape‘¥’;
使用它orderby对数据进行排序
例子1:
按照名字的升序进行排序
Selectename,salfromemporderbyename;
Selectename,salfromemporderbyenameasc;用asc关键字指出按升序排列
例子2:
按照雇员编号的升序排序
Selectename,deptnofromemporderbydeptno;
Selectename,deptnofromemporderbydeptnoasc;
例子3:
按照名字降序排列
Selectename,deptnofromemporderbyenamedesc;
例子4:
按照部门编号降序排列
Selectename,deptnofromemporderbydeptnodesc,enameasc;
常用SQL函数
1.Lower()函数将字符串全部转换成小写
例子1:
将雇员中名字还有’A’或’a’的人员全部显示出来
Selectenamefromempwhereenamelike‘%A%’orenamelike‘%a%’;
Selectenamefromempwherelower(ename)like‘%a%’;
2.Upper()函数讲字符串全部转换为大写
TcltcltcLTcL
Selectenamefromemp
Whereupper(ename)like‘%TCL%’
Wherelower(ename)like‘%tcl%’
例子2:
将雇员中名字还有’A’或’a’的人员全部显示出来
Selectenamefromempwhereupper(ename)like‘%A%’;
3.substr()函数
Stringsubstring(1,6);
例子1:
从第一子串开始共截3个子串
Selectsubstr(‘Hello’,1,3)fromdual;Hel
Substr可以省略第三个参数
例子2:
从第二个字符开始,截取到整个字符串结束
Selectsubstr(ename,2)fromemp;
4.Chr()函数
例子1:
求一个与某个ASCII码值对应的字符
Selectchr(65)fromdual;
5.Ascii()函数
例子:
求一个字符的ASCII码值
Selectascii(‘A’)fromdual;
6.round()函数对参数值进行四舍五入的操作
例子1:
对23.652进行四舍五入操作
Selectround(23.652)fromdual;24
可以指定四舍五入到小数点后几位
例子2:
对23.652四舍五入到小数点后2位
Selectround(23.655,2)fromdual;23.65
可以用负数指定小数点前面几位
例子3:
对23.652四舍五入到小数点前1位
Selectround(23.652,-1)fromdual;20
*7.to_char()
用于将数字或日期转换成特定的字符串,
To_char()有两个参数:
第一个参数:
需要进行转换的日期或数字
第二个参数:
特定的转换格式,对于数字有一下几个格式可以指定:
9代表数字,若果该位没有数字则不进行显示,但对于小数点后面的部分仍会强制显示
0代表一位数字,如果该位没有数字则强制显示0
$显示美元符号
L显示本地货币符号
.显示小数点
显示千分位符号
例子1:
selectto_char(sal,‘$99,999.9999’)salaryfromempwhereename=‘ALLEN’;$1,600.0000
例子2:
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-----------------------------秒数
有了这些格式,就可以把日期自定义为任何格式
例子1:
selectto_char(sysdate,‘YYYY年MM月DD日HH24:
MI:
SS’)fromdual;2008-04-04
selectto_char(sysdate,'YYYY"年"-MM"月"-DD"日"HH24:
MI:
SS')fromdual;
*8.to_date()函数
将特定的字符串转换成日期格式,这个函数有两个参数
第一参数:
自定义的日子字符串
第二参数:
指定这个字符串的格式
例子1:
将1981年3月2日中午以后入职的雇员信息取出:
Select*fromempwherehiredate>to_date(‘1981-03-0212:
00:
00’,‘YYYY-MM-DDHH12:
MI:
SS’);
*9.to_number()函数
将指定的字符串转换成数字格式,这个函数有两个参数
第一参数:
自定义的数字字符串
第二参数:
指定这个字符串的格式
例子1:
求薪水大于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;
例子1:
求薪水的总和、平均值、最大值和最小值
Selectsum(sal),avg(sal),max(sal),min(sal)fromemp;
例子2:
求emp表中记录的数量
Selectcount(*)fromemp;
Count()可以对单独字段使用,得到的是所有非空记录的数量
例子3:
求comm字段中所有非空记录的数量
Selectcount(comm)fromemp;
Count()可以和distinct一起使用,得到所有唯一值记录的数量
例子4:
求emp表中deptno唯一的数量
Selectcount(distinctdeptno)fromemp;
注意:
函数名不是在所有数据库中通用
对表中的数据进行分组
例子1:
计算每个部门的平均工资
首先将现有数据按照部门进行分组,然后再计算每个组员工的平均薪水。
Selectdeptno,avg(sal)fromempgroupbydeptno;
例子2:
计算每个部门的最大工资
Selectdeptno,max(sal)fromempgroupbydeptno;
例子3:
按照部门,和职位的最大薪水进行分组
Selectdeptno,job,max(sal)fromempgroupbydeptno,job;
使用groupby的规律:
出现在select列表中的字段,如果没有出现在组函数中,则必须出现在groupby子句中
典型错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 笔记 入门