Oracle数据库操作基本语法Word下载.doc
《Oracle数据库操作基本语法Word下载.doc》由会员分享,可在线阅读,更多相关《Oracle数据库操作基本语法Word下载.doc(6页珍藏版)》请在冰点文库上搜索。
![Oracle数据库操作基本语法Word下载.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/02739b14-eb78-45c2-a25d-dc2a7fcf000f/02739b14-eb78-45c2-a25d-dc2a7fcf000f1.gif)
修改日期输入格式
altersessionsetnls_date_format=‘yyyy-mm-dd’;
//临时生效,重启后不起错用
insertintostudentvalues(‘001’,’salina’,’女’,to_date(’01-5-05’,’yyyy-mm-dd’),10);
insertintostudentvalues(‘001’,’salina’,’女’,to_date(’01/5-05’,’yyyy/mm/dd’),10);
插入部分字段
insertintostudent(xh,xm,sex所要插入列的列名
)values(‘001’,’lison’,’女’所要插入列的内容
);
插入空值
insertintostudent(xh,xm,sex,birthday)values(‘021’,’BLYK’,’男’,null);
一条插入语句可以插入多行数据
insertintokkk(Myid,myname,mydept)selectempno,ename,deptnofromempwheredeptno=10;
查询空值/(非空)的数据
select*fromstudentwherebrithdayisnull(/notnull);
修改(更新)数据
SQL>updatestudentsetsal=sql/2(如果还有,则加“,”以此类推)
wheresex=’男’(如果是空的,则用“isnull”)
;
更改多项数据
updateempset(job,sal,comm)=(selectjob,sal,commfromempwhereename='
SMITH'
)whereename='
SCOTT'
;
删除数据
1.保存还原点
savepointaa保存点的名称
2.删除数据
【1】SQL>
deletefromstudent;
//删除表的数据
【2】SQL>
//删除表的结构和数据
【3】SQL>
deletefromstudentwherexh=’001’;
//删除一条记录
【4】SQL>
truncatetablestudent;
//删除表中的所有记录,表结构还在,不写日志,无法扎找回的记录,速度快
查看表结构
descstudent;
查询指定列
selectsex,xh,xmfromstudent;
如何取消重复
selectdistinctdeptno,job列名
fromstudent表名
打开显示操作时间的开关
settimingon;
为表格添加大的数据行(用于测试反应时间)
insertintousers(userid,username,userpss)select*fromusers;
统计表内有多少条记录
selectcount(*)fromusers;
屏蔽列内相同数据
selectdistinctdeptno,jobfromemp;
查询指定列的某个数据相关的数据
SQL>selectdeptno,job,salfromempwhereename=’smith’;
使用算数表达式
selectsal*12fromemp;
使用类的别名
selectename“姓名”,sal*12as“年收入”fromemp;
处理null(空)值
selectsal*13+nvl(comm,0)*13“年工资”,ename,commfromemp;
连接字符串(||)
SQL>selectename||‘isa’||jobfromemp;
Where子句的使用
【1】SQL>
selectename,salfromempwheresal>
3000;
//number的范围确定
【2】SQL>
selectename,hiredatefromempwherehiredate>
’1-1月-1982’;
//日期格式的范围确定
【3】SQL>
=2000andsal<
=2500;
//组合条件
Like操作符:
’%’、’_’
selectename,salfromempwhereenamelike‘S%’;
//第一个字符【名字第一个字符为S的员工的信息(工资)】
selectename,salfromempwhereenamelike‘__O%’;
//其它字符【名字第三个字符为O的员工的信息(工资)】
批量查询
select*fromempwherein(123,456,789);
//查询一个条件的多个情况的批量处理
查询某个数据行的某列为空的数据的相关数据
SQL>
select*fromempwheremgrisnull;
条件组合查询(与、或)
select*fromempwhere(sal>
500orjob=’MANAGER’)andenamelike‘J%’;
Orderby排序
select*fromemporderbysal(asc);
//从低到高[默认]
select*fromemporderbysaldesc;
//从高到低
select*fromemporderbydeptno(asc),saldesc;
//组合排序
【4】SQL>
selectename,sal*12“年薪”fromemporderby“年薪”(asc);
selectename,(sal+nvl(comm,0))*12as"
年薪"
fromemporderby"
资料分组(max、min、avg、sum、count)
selectmax(sal),min(sal)fromemp;
selectename,salfromempwheresal=(selectmax(sal)fromemp);
//子查询,组合查询
select*fromempwheresal>
(selectavg(sal)fromemp);
updateempsetsal=sal*1.1wheresal<
(selectavg(sal)fromemp)andhiredate<
'
1-1月-1982'
//将工资小于平均工资并且入职年限早于1982-1-1的人工资增加10%
Groupby和having子句
//groupby用于对查询出的数据进行分组统计
//having用于限制分组显示结果
selectavg(sal),max(sal),deptnofromempgroupbydeptno;
//显示每个部门的平均工资和最低工资
selectavg(sal),max(sal),deptnofromempgroupbydeptnohavingavg(sal)>
2000;
2000orderbyavg(sal);
多表查询
笛卡尔集:
规定多表查询的条件是至少不能少于:
表的个数-1
selecta1.ename,a1.sal,a2.dnamefromempa1,depta2用于区别多个表中的列名
wherea1.deptno=a2.deptno多表查询中多表的关联符
selecta1.dname,a2.ename,a2.salfromdepta1,empa2wherea1.deptno=a2.deptnoanda1.deptno=10;
//显示部门编号为10的部门名、员工名和工资
selecta1.ename,a1.sal,a2.gradefromempa1,salgradea2wherea1.salbetween某个条件
a2.losalanda2.hisal;
selecta1.ename,a1.sal,a2.dnamefromempa1,depta2wherea1.deptno=a2.deptnoorderbya1.deptno;
//多表排序
selectworker.ename,boss.enamefromempworker,empbosswhereworker.mgr=boss.empno;
// 自连接(多表查询的特殊情况)
selectworker.ename,boss.enamefromempworker,empbosswhereworker.mgr=boss.empnoandworker.ename='
FORD'
子查询
select*fromempwheredeptno=(selectdeptnofromempwhereename='
selectdistinct过滤关键词
jobfromempwheredeptno=10;
select*fromempwherejobin(selectdistinctjobfromempwheredeptno=10);
//如何查询和部门10的工作相同的雇员的名字、岗位、工资、部门号。
selectename,sal,deptnofromempwheresal>
all(selectsalfromempwheredeptno=30);
//如何查询工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
(selectmax(sal)fromempwheredeptno=30);
select*fromempwhere(deptno,job)=(selectdeptno,jobfromempwhereename='
内嵌视图
//当在from子句中使用子查询的时候,必须给子查询指定别名
selecta2.ename,a2.sal,a2.deptno,a1.mysalfromempa2,(selectdeptno,avg(sal)(as)mysalfromempgroupbydeptno)a1wherea2.deptno=a1.deptnoanda2.sal>
a1.mysal;
分页
SQL >selecta1.*,rownumrnfrom(select*fromemp)a1;
//orcle为表分配的行号
select*from(selecta1.*,rownumrnfrom(select*fromemp)a1whererownum<
=10)wherern>
=6;
//查询内容的变化
1.所有的改动(指定查询列)只需更改最里面的子查询
2.(排序)只需更改最里面的子查询
子查询(用查询结果创建新表)
createtablemytable(id,name,sal,job,deptno)asselectempno,ename,sal,job,deptnofromemp;
合并查询
union(求并集),unionall,intersect(取交集),minus(差集)
selectename,sal,jobfromempwheresal>
2500;
selectename,sal,jobfromempwherejob='
MANAGER'
2500unionselectename,sal,jobfromempwherejob='
//union(求并集)
Java连接数据库
事务
commit;
//事务 (第一次创建,第二次提交)当退出数据库时,系统自动提交事务
savepointa1;
//创建保存点 (保存点的个数没有限制)
rollbacktoaa;
//使用保存点回滚到aa
rollback;
//回滚到事务创建开始
只读事务
settransactionreadonly
Java中的事务
Ct.setAutoCommit(false);
//设置事务自动提交为否
Cmit();
//提交事务
字符函数
lower(char)将字符串转换为小写的格式
upper(char)将字符串装换为大写的格式
length(char)返回字符串的长度
substr(char,m,n)取字符串的子串
selectlower(ename)fromemp;
selectenamefromempwherelength(ename)=5;