达内oracle.docx
- 文档编号:8196572
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:52
- 大小:30.36KB
达内oracle.docx
《达内oracle.docx》由会员分享,可在线阅读,更多相关《达内oracle.docx(52页珍藏版)》请在冰豆网上搜索。
达内oracle
郭爱军
guoajtarena..172.16.20.252
oracle(商业数据库)oracle甲骨文IBM
DB2IBM
sqlserverMIC微软
mysql(开源免费)sun甲骨文
FILE增删改查数据效率数据维护恢复
DBMS数据库管理系统
DB数据库(基本单元表二维表)
RDBMS关系型数据库管理系统
RDB关系型数据库
基于二维表的数据库
表头
行
列
字段名字段
字段值
sql语句分类structquerylanguage
select语句2select
ddl语句数据定义语言createdropalter
dml语句数据操作语言insertdeleteupdatetcl语句事务控制语句mitrollbacksavepoint
dcl语句数据控制语言grantrevoke
(DBA)
oracle
登录到远程机数据库
telnet192.168.0.23
telnet192.168.0.20
telnet192.168.0.26
telnetIP
openlab
open123
sun280%sqlplus
sqlplus是oracle公司提供的操作数据库的一个小工具
负责输入sql语句返回操作结果。
openlab
open123
SQL>
查询一X表的数据需要了解表的结构
SQL>desc表名;
descs_emp;
SQL>!
clear
SQL>descs_emp;
NameNull?
Type
--------------------------------------------------------------
ID员工编号NOTNULLNUMBER(7)
LAST_NAME姓NOTNULLVARCHAR2(25)
FIRST_NAME名VARCHAR2(25)
USERIDVARCHAR2(8)
START_DATE入职日期DATE
MENTS备注VARCHAR2(255)
MANAGER_ID领导的员工编号NUMBER(7)
TITLE职位VARCHAR2(25)
DEPT_ID部门编号NUMBER(7)
SALARY月薪NUMBER(11,2)
MISSION_PCT提成NUMBER(4,2)
select语句
Afrom子句
1.从表中查询一个字段的值出来
select字段名from表名;
selectsalaryfroms_emp;
2.如何查询多个字段
select字段名1,字段名2from表名;
查询first_name,salary
selectfirst_name,salaryfroms_emp;
3.如何把表中所有的字段对应的值查询出来
selectid,first_name,last_name,
userid,start_date,ments,manager_id,
title,dept_id,salary,mission_pct
froms_emp;
*号可以代表所有的字段名
select*froms_emp;
4.sql中字段数学运算
+-*/
selectsalary,salary+salary*0.2
froms_emp;
selectsalary,salary-salary*0.2
froms_emp;
小括号可以改变逻辑优先级
selectsalary,100+salary*12
froms_emp;
selectsalary,((100+salary))*12
froms_emp;
注意/没有取整特性
selectsalary,salary/30froms_emp;
5.sql中字符串
1.sql中的字符串是以单引号引起来的一串字符
'''''a''helloworld'
2.字符的拼接
oracle字符串拼接符||
selectfirst_name,last_namefroms_emp;
selectfirst_name||last_namefroms_emp;
在first_name和last_name之间拼接一个下划线
_
selectfirst_name||'_'||last_namefroms_emp;
3.在first_name和last_name之间拼接一个
'this's
SELECTfirst_name||'''||last_namefroms_emp;
转义-------%d%%
SELECTfirst_name||''''||last_namefroms_emp;
在first_name和last_name之间拼接两个
'this''s
SELECTfirst_name||''''''||last_namefroms_emp;
SELECTfirst_name||''''||''''||last_namefroms_emp;
6.别名
给字段或者表达式起另一个名字
selectfirst_namenamefroms_emp;
SQL>edit
进入一个标准vi
ZZ保存退出或者:
wq
selectsalary,salary*12yearsalfroms_emp;
别名和字段名或者表达式都会被默认处理成大写
selectsalarysal,salary*12yearsalfroms_emp;//error
一个字段或者表达式的别名只能有一个
为了让别名能原样显示------双引号
selectsalarysal,salary*12"yearSal"froms_emp;
7.NULL值的处理
#defineNULL(void*)0
if(pa==NULL){
}
int*pa=NULL;
intpaa=NULL;
NULL值这个字段上没有值就是NULL
age
1.salary*(1+mission_pct/100)*12
selectmission_pctfroms_emp;
selectsalary,salary*12froms_emp;
2.selectsalary,salary*12,
salary*(1+mission_pct/100)*12yearsal
froms_emp;
3.nvl空值处理函数
nvl(par1,par2)
当par1为NULL则返回par2的值如果par1不为
NULL则返回par1的值
可以处理任何类型但要求par1par2类型一致
selectsalary,salary*12,
nvl(salary*(1+mission_pct/100)*12,0)yearsal
froms_emp;//logicerror
null和任何值做运算都是NULL
NULL要尽早处理否则结果是NULL
selectsalary,salary*12,
salary*(1+nvl(mission_pct,10)/100)*12yearsalfroms_emp;
8.数据的排重显示------distinct
selectsalaryfroms_emp;
selectdistinctsalaryfroms_emp;
selecttitle,salaryfroms_emp;
联合排重当多个字段的值联合相同则排除
selectdistincttitle,salaryfroms_emp;
selectidfroms_emp;
selectdistinctid,salaryfroms_emp;
Bwhere子句
对表中的数据进行限制返回----根据条件返回
符合where条件就返回不符合where就被过滤掉
1.selectid,salaryfroms_emp;
selectid,salaryfroms_empwhere1=1;
selectid,salaryfroms_empwhere1=2;
--norowsselected/*注释*/
2.找出工资大于1200的员工的idfirst_name
salary
selectid,first_name,salaryfroms_empwhere
salary>1200;
selectid,first_name,salaryfroms_empwhere
salary<1200;
3.找出first_name叫Carmen的员工的
idsalarymanager_id
selectid,salary,manager_idfroms_emp
wherefirst_name=Carmen;//error
selectid,salary,manager_idfroms_emp
wherefirst_name='Carmen';
selectid,salary,manager_idfroms_emp
wherefirst_name='carmen';
sql语句不区分大小写字符串的值要区分大小写
数值类型值不用单引号字符串的值要加单引号
4.逻辑比较运算符
><>=<==!
=
5.sql中提供的运算符
a.表达区间[a,b]
where字段betweenaandb;
1200<=salary<=1500//不能这么写
selectid,first_name,salaryfrom
s_empwheresalarybetween1200
and1500;
b.表达一个字段在一个列表中in
id是1或者3或者11
selectid,first_namefrom
s_empwhereidin(1,3,11);
找出部门编号是313350部门的
员工的idfirst_namedept_id
selectid,first_name,dept_idfrom
s_empwheredept_idin(31,33,50);
把出现概率高的放前面
c判断是不是NULL
字段名isNULL;
找出manager_id是NULL的员工的id
first_namesalary
selectid,first_name,salaryfrom
s_empwheremanager_id=NULL;//logicerror
selectid,first_name,salaryfrom
s_empwheremanager_idisNULL;找出提成是NULL的员工的first_namesalary
selectid,first_name,salaryfrom
s_empwheremission_pctisnull;
d.模糊查询关键字
1.where字段like'通配表达式'
李
王
龙年成龙李小龙小龙女
2.通配符ls*.txt*
%0-n个任意字符
_1个任意字符
3.selectfirst_namefroms_emp;
找出所有带a的first_name
'%a%'
selectfirst_namefroms_emp
wherefirst_namelike'%a%';
找出倒数第二字符是a的first_name
selectfirst_namefroms_emp
wherefirst_namelike'%a_';
4.user_tables
selecttable_namefromuser_tables;
S_EMP
S_DEPT
找出S_开头的表
/*
ftpftp.tarena..
csd1304
tam_0426
cdoracle
cdsql
getoracle-sql.ppt
put***.txt*/
selecttable_namefromuser_tables
wheretable_namelike'S_%';
转义
selecttable_namefromuser_tables
wheretable_namelike'S\_%'escape'\';
6.逻辑连接符
and&&
or||
not!
a>bandc>d
a>borc>d
1.[1200,1400]
selectid,first_name,salary
froms_empwheresalary>=1200and
salary<=1400;
(1200,1400)
selectid,first_name,salary
froms_empwheresalary>1200and
salary<1400;
2.找出部门号是31或者是32或者是50的
员工的dept_idfirst_namesalary
selectdept_id,first_name,salary
froms_empwheredept_id=31or
dept_id=32ordept_id=50;
3.selectid,first_name
froms_empwheresalary>1200anddept_id=41ordept_id=42;
selectid,first_name
froms_empwheresalary>1200and(dept_id=41ordept_id=42);
可以通过小括号改变逻辑优先级
4.运算符的对立面问题
><=
<>=
=!
=<>^=
betweenaandbnotbetweenaandb
innotin注意NULL值
likenotlike
isnullisnotnull
selectid,manager_idfroms_emp
wheremanager_idnotisnull;//error
selectid,manager_idfroms_emp
wheremanager_idisnotnull;
andor
C排序
排序标准按照什么标准排序
排序形式降序升序
orderby排序标准排序形式
orderby一定是出现在sql语句的最后
升序的关键字asc默认就是升序
字典顺序自然顺序
降序的关键字desc
反字典顺序反自然顺序
selectid,salaryfroms_emp;
selectid,salaryfroms_emporderbysalary;
降序排
selectid,salaryfroms_emporderbysalarydesc;
按照manager_id排序显示id,manager_id
selectid,manager_idfroms_emp
orderbymanager_id;
selectid,manager_idfroms_emp
orderbymanager_iddesc;
排序中把NULL当最大值处理
多字段排序:
先按照工资排序如果工资相同再按照first_name
降序排列显示idfirst_namesalary
D单行函数
E多表查询
F组函数和分组
G子查询
C排序
排序标准按照什么标准排序
排序形式降序升序
orderby排序标准排序形式
orderby一定是出现在sql语句的最后
升序的关键字asc默认就是升序
字典顺序自然顺序
降序的关键字desc
反字典顺序反自然顺序
selectid,salaryfroms_emp;
selectid,salaryfroms_emporderbysalary;
降序排
selectid,salaryfroms_emporderbysalarydesc;
按照manager_id排序显示id,manager_id
selectid,manager_idfroms_emp
orderbymanager_id;
selectid,manager_idfroms_emp
orderbymanager_iddesc;
排序中把NULL当最大值处理
多字段排序:
先按照工资排序如果工资相同再按照first_name
降序排列显示idfirst_namesalary
selectid,first_name,salaryfroms_emp
orderbysalary;
selectid,first_name,salaryfroms_emp
orderbysalaryasc,first_namedesc;
当第一排序字段值相同时才启用第二排序字段
oracle10goracle11goracle9i
D单行函数
对sql语句影响的每一行都返回一个结果
upper
selectfirst_name,upper(first_name)from
s_emp;
selectfirst_name,upper(first_name)from
s_empwhereid=-1;
组函数
无论sql语句影响多少行只返回一个结果
selectcount(first_name)froms_emp;
selectcount(first_name)froms_emp
whereid=-1;
单行函数的测试会因为数据量的不同测试
变的复杂
为了测试单行函数引入了dual表
单行单列的表
descdual;
select*fromdual;
单行函数
处理字符串
upper(n)
lower(n)
selectlower('HELLO')fromdual;
concat(n1,n2)
selectconcat('hello','world')fromdual;
selectconcat(upper('hello'),'world')fromdual;
这个函数用的比较少因为有字符串拼接符
selectupper('hello')||'world'||'hello'
fromdual;
length(n)
selectlength('hello')fromdual;
initcap(n)将字符串中单词首字母改为大写
selectinitcap('oneworldonedream')
fromdual;
nvl(n1,n2)
selectnvl(NULL,'isnull')fromdual;
substr(n1,n2,n3)
n1要处理的字符串或者字段
n2从什么位置开始处理从1开始编号可以负数-1
n3截取多少个字符
selectsubstr('hello',0,3)fromdual;
selectsubstr('hello',1,3)fromdual;
把s_emp表中first_name后三个字符显示出来
selectfirst_namefroms_emp;
selectfirst_name,substr(first_name,-3,3)froms_emp;
能不能得到first_name的后三个字符从前向后处理
字符串转换函数
to_number(n1)
selectto_number('123456')fromdual;
selectid,first_namefroms_emp
whereid=1;
selectid,first_namefroms_emp
whereid='1';
selectid,first_namefroms_emp
whereid=to_number('1');
selectid,first_namefroms_emp
whereid=to_number('abc');//logicerror
数字处理函数
round(n1,n2)四舍五入
n1要处理的数字
n2有默认值默认是0可以传别的数字
selectround(2.48)fromdual;
selectround(2.51)fromdual;
selectround(2.48,0)fromdual;
selectround(2.51,0)fromdual;
selectround(2.48,1)fromdual;
selectround(2.51,1)fromdual;
selectround(2.558,2)fromdual;
---------------
selectround(12.88,-1)fromdual;
selectround(12.88,-2)fromdual;
----------------------------------
trunc(n1,n2)截取
selecttrunc(2.48)fromdual;
selecttrunc(2.99)fromdual;
selecttrunc(2.48,0)fromdual;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle