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; |
|