来自:mjsws > 馆藏分类
配色: 字号:
oracle数据库的基本操作
2018-07-05 | 阅:  转:  |  分享 
  
oracle数据库的基本操作创建表SQL>createtableclasses(classIdnumber(2),cnameva
rchar2(40),birthdaydate);添加一个字段SQL>altertablestudent????add
(classIdnumber(2));?修改字段长度SQL>altertablestudentmodify(xmvar
char2(30));?修改字段的类型/或是名字(不能有数据)SQL>altertablestudentmodify(xm
char(30));?删除一个字段SQL>altertablestudentdropcolumnsal;?修改表的名字S
QL>renamestudenttostu;?删除表SQL>droptablestudent;?插入所有字段数据SQL>
insertintostudentvalues(‘001’,’salina’,’女’,’01-5月-05’,10);?修改
日期输入格式SQL>altersessionsetnls_date_format=‘yyyy-mm-dd’;??????
//临时生效,重启后不起错用988棋牌http://www.rodlg.comSQL>insertintostudent
values(‘001’,’salina’,’女’,to_date(’01-5-05’,’yyyy-mm-dd’),10);S
QL>insertintostudentvalues(‘001’,’salina’,’女’,to_date(’01/5-
05’,’yyyy/mm/dd’),10);???插入部分字段SQL>insertintostudent(xh,xm,sex
)values(‘001’,’lison’,’女’);?插入空值SQL>insertintostudent(xh,xm,s
ex,birthday)values(‘021’,’BLYK’,’男’,null);?一条插入语句可以插入多行数据SQL>in
sertintokkk(Myid,myname,mydept)selectempno,ename,deptnofro
mempwheredeptno=10;??查询空值/(非空)的数据SQL>selectfromstudentwhe
rebrithdayisnull(/notnull);?修改(更新)数据SQL>updatestudentsetsa
l=sql/2wheresex=’男’;?更改多项数据SQL>updateempset(job,sal,comm)=
(selectjob,sal,commfromempwhereename=''SMITH'')whereename=''S
COTT'';?删除数据1.???????保存还原点SQL>savepointaa;2.???????删除数据【1】??????S
QL>deletefromstudent;//删除表的数据【2】??????SQL>droptablestudent;?
//删除表的结构和数据【3】??????SQL>deletefromstudentwherexh=’001’;//删除
一条记录【4】??????SQL>truncatetablestudent;?//删除表中的所有记录,表结构还在,不写日志,
无法扎找回的记录,速度快?查看表结构SQL>descstudent;?查询指定列SQL>selectsex,xh,xmfro
mstudent;?如何取消重复SQL>selectdistinctdeptno,jobfromstudent;?打开显
示操作时间的开关SQL>settimingon;??为表格添加大的数据行(用于测试反应时间)SQL>insertintou
sers(userid,username,userpss)selectfromusers;?统计表内有多少条记录SQL
>selectcount()fromusers;?屏蔽列内相同数据SQL>selectdistinctdeptno,j
obfromemp;?查询指定列的某个数据相关的数据SQL>selectdeptno,job,salfromempwh
ereename=’smith’;?使用算数表达式SQL>selectsal12fromemp;?使用类的别名SQL>s
electename“姓名”,sal12as“年收入”fromemp;?处理null(空)值SQL>selects
al13+nvl(comm,0)13“年工资”,ename,commfromemp;?连接字符串(||)SQL>sele
ctename||‘isa’||jobfromemp;?Where子句的使用【1】SQL>selectename
,salfromempwheresal>3000;??//number的范围确定【2】SQL>selectename,
hiredatefromempwherehiredate>’1-1月-1982’;?//日期格式的范围确定【3】SQL>s
electename,salfromempwheresal>=2000andsal<=2500;?????//组合
条件?Like操作符:’%’、’_’SQL>selectename,salfromempwhereenamelike
‘S%’;?????????????//第一个字符【名字第一个字符为S的员工的信息(工资)】SQL>selectename,s
alfromempwhereenamelike‘__O%’;?????????//其它字符【名字第三个字符为O的员工
的信息(工资)】?批量查询SQL>selectfromempwherein(123,456,789);??????/
/查询一个条件的多个情况的批量处理?查询某个数据行的某列为空的数据的相关数据SQL>selectfromempwher
emgrisnull;?条件组合查询(与、或)SQL>selectfromempwhere(sal>500or
job=’MANAGER’)andenamelike‘J%’;?Orderby?排序【1】SQL>selectf
romemporderbysal?(asc);??????//从低到高[默认]【2】SQL>selectfrom
emporderbysaldesc;?????//从高到低【3】SQL>selectfromemporder
bydeptno(asc),sal?desc;????//组合排序【4】SQL>selectename,sal12“
年薪”fromemporderby?“年薪”(asc);SQL>selectename,(sal+nvl(comm,
0))12as"年薪"fromemporderby"年薪";?资料分组(max、min、avg、sum、count
)SQL>selectmax(sal),min(sal)fromemp;SQL>selectename,salfrom
empwheresal=(selectmax(sal)?fromemp);//子查询,组合查询SQL>select
fromempwheresal>(selectavg(sal)fromemp);//子查询,组合查询SQL>u
pdateempsetsal=sal1.1wheresal<(selectavg(sal)fromemp)an
dhiredate<''1-1月-1982'';?????//将工资小于平均工资并且入职年限早于1982-1-1的人工资增加10%
?Groupby?和having?子句//groupby用于对查询出的数据进行分组统计//having?用于限制分组显示结果
SQL>selectavg(sal),max(sal),deptnofromempgroupbydeptno;????
???//显示每个部门的平均工资和最低工资SQL>selectavg(sal),max(sal),deptnofromem
pgroupbydeptno;???????//显示每个部门的平均工资和最低工资SQL>selectavg(sal)
,max(sal),deptnofromempgroupbydeptnohavingavg(sal)>2000;SQ
L>selectavg(sal),max(sal),deptnofromempgroupbydeptnohavi
ngavg(sal)>2000orderby?avg(sal);?多表查询笛卡尔集:规定多表查询的条件是至少不能少于:表的
个数-1SQL>selecta1.ename,a1.sal,a2.dnamefromempa1,depta2wher
ea1.deptno=a2.deptno;SQL>selecta1.dname,a2.ename,a2.salfromd
epta1,empa2wherea1.deptno=a2.deptnoanda1.deptno=10;????//显
示部门编号为10的部门名、员工名和工资SQL>selecta1.ename,a1.sal,a2.gradefromemp
a1,salgradea2wherea1.salbetweena2.losalanda2.hisal;SQL>se
lecta1.ename,a1.sal,a2.dnamefromempa1,depta2wherea1.deptno
=a2.deptnoorderbya1.deptno;?????????????????//多表排序SQL>selec
tworker.ename,boss.enamefromempworker,empbosswhereworker.m
gr=boss.empno;??????//?????自连接(多表查询的特殊情况)SQL>selectworker.enam
e,boss.enamefromempworker,empbosswhereworker.mgr=boss.empno
andworker.ename=''FORD'';?子查询SQL>selectfromempwheredeptno=
(selectdeptnofromempwhereename=''SMITH'');SQL>selectdistinct
jobfromempwheredeptno=10;?SQL>selectfromempwherejobi
n(selectdistinctjobfromempwheredeptno=10);//?如何查询和部门10的工作相
同的雇员的名字、岗位、工资、部门号。SQL>selectename,sal,deptnofromempwheresa
l>all(selectsalfromempwheredeptno=30);//如何查询工资比部门30的所有员工的工资
高的员工的姓名、工资和部门号捕鱼游戏http://www.44771.netSQL>selectename,sal,dep
tnofromempwheresal>(selectmax(sal)fromempwheredeptno=30)
;SQL>selectfromempwhere(deptno,job)=(selectdeptno,jobfro
mempwhereename=''SMITH'');?内嵌视图//当在from子句中使用子查询的时候,必须给子查询指定别名SQL
>selecta2.ename,a2.sal,a2.deptno,a1.mysalfromempa2,(selectde
ptno,avg(sal)(as)mysalfromempgroupbydeptno)a1wherea2.d
eptno=a1.deptnoanda2.sal>a1.mysal;??分页SQL>selecta1.,rownumr
nfrom(selectfromemp)a1;//orcle为表分配的行号SQL>selectfrom(s
electa1.,rownumrnfrom(selectfromemp)a1whererownum<=10
)wherern>=6;//查询内容的变化所有的改动(指定查询列)只需更改最里面的子查询(排序)只需更改最里面的子查询??子查
询(用查询结果创建新表)SQL>createtablemytable(id,name,sal,job,deptno)as
selectempno,ename,sal,job,deptnofromemp;?合并查询union(求并集),unio
n?all?,intersect(取交集),??minus?(差集)SQL>selectename,sal,jobf
romempwheresal>2500;SQL>selectename,sal,jobfromempwherej
ob=''MANAGER'';?SQL>selectename,sal,jobfromempwheresal>2500u
nionselectename,sal,jobfromempwherejob=''MANAGER'';???//uni
on(求并集)?Java连接数据库?事务SQL>commit;???????//事务????????????(第一次创建,第二次
提交)当退出数据库时,系统自动提交事务SQL>savepointa1;?????????????//创建保存点????????
?????????????(保存点的个数没有限制)SQL>rollbacktoaa;??//使用保存点回滚到aaSQL>rollback;??????????//回滚到事务创建开始来运棋牌http://www.411196.com只读事务SQL>settransactionreadonly?Java中的事务Ct.setAutoCommit(false);???//设置事务自动提交为否Ct.commit();?????????//提交事务字符函数lower(char)将字符串转换为小写的格式upper(char)将字符串装换为大写的格式length(char)返回字符串的长度substr(char,m,n)取字符串的子串?SQL>selectlower(ename)fromemp;SQL>select?ename?from?emp?where?length(ename)=5;
献花(0)
+1
(本文系mjsws首藏)