收藏 分销(赏)

Oracle_SQL语句大全.doc

上传人:pc****0 文档编号:6666254 上传时间:2024-12-20 格式:DOC 页数:15 大小:71KB
下载 相关 举报
Oracle_SQL语句大全.doc_第1页
第1页 / 共15页
Oracle_SQL语句大全.doc_第2页
第2页 / 共15页
Oracle_SQL语句大全.doc_第3页
第3页 / 共15页
Oracle_SQL语句大全.doc_第4页
第4页 / 共15页
Oracle_SQL语句大全.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、 Oracle SQL语句大全2009-04-13 15:391.desc(描述) emp 描述emp这张表2.desc dept 部门表3.desc salgrade 薪水等级4.select *from table 查找表中的元素5.dual 是系统中的一张空表6.select *from dual7.select sysdate from dual 取出系统时间8.select ename,sal*12 annul sal(取的别名) from emp; 查找用户姓名和用户的年薪9.任何含有空值的数学表达式的值都是空值select ename,sal*12+comm from emp;1

2、0.select ename|sal from emp 其中的|相当于将sal全部转化为字符串11.表示字符串的方法select ename |ajjf from emp;12.如果其中有一个单引号就用2个单引号来代替他select ename|sakj ldsfrom emp;13.select distinct deptno from emp (去除部门字段中重复的部分,关键字distinct)14.select distinct deptno,job from emp;(去除这2个字段中重复的组合)15.select *from dept where deptno=10; 取出条件(取出

3、部门编号为10的记录)16.select * from emp where ename=CLIRK; 取出部门中姓名为clirk的记录(注意取出过程中ename用单引号隔开)17.select ename,sal from emp where sal1500; 取出部门中薪水大于1500的人的姓名18.select ename,sal,deptno from emp where deptno 10 取出部门中的部门号不等于10的19.select ename,sal,deptno from emp where enameCBA 取出部门中员工名字大于CBA的员工(实际比较的是ACIIS码)20

4、.select ename,sal from emp where sal between 800 and 1500 select ename,sal from emp where sal=800 and sal3-04月-81;宣传符合条件的日期24.select ename,sal,from emp where sal1000 or deptno=10; 找出工资薪水大于1000或者部门号等于10的员工25.select ename,sal from emp where sal not in(500,1000); 查找薪水不在500到1000的员工姓名和月薪26.select ename,s

5、al from emp where ename like %ALL%; select ename,sal from emp where ename like _%A%; 查找姓名中含有ALL的客户信息,一个横线代表一个通配符27.select ename,sal from emp where ename like _%$% escape $; 自己指定转易字符 select ename,sal from emp where ename like _%; 查找中间含有%相匹配的客户信息,运用转易字符28.select * from dept order by deptno 对表中元素按部门号排序

6、 select *from dept order by deptno desc 默认为升序,可以用desc按降序29.select ename,sal from emp where sal 1000 order by sal desc 按照查询条件来查询,并排序(asc升序排列)30.select ename,sal*12 from emp where ename not like _%A% and sal800 order by sal desc31.select lower(ename) from emp 将ename都转化为小写 lower是函数能将字母转化为小写32.select en

7、ame from emp where lower(ename) like _%a%; 找出ename 中所有的含有a的字符33.select substr(ename,2,3) form emp 从第2个字符开始截取3个字符34.select chr(65) from dual; 将65转化为字符35.select ascii(A) from dual 将ACSII码转化为字符串36.select round(23.565)from dual 四舍五入36.select round(23,4565,2)from dual 四舍五入到第二位37.select to_char(sal,$99.99

8、9.9999) from emp 按指定格式输出 select to_char(sal,L99,999,9999) form emp L代表本地字符38.select hiredate from emp select to_char(hiredate,YYYY-MM-DD HH:MI:SS) from emp; 时间格式的显示 select to_char(sysdate,YYYY-MM-DD HH:MI:ss) from dual; 十二小时制显示系统时间 select to_char(sysdate,YYYY-MM-DD HH24:MI:SS) from dual 二四小时制显示系统时间3

9、9.select ename,hiredate from emp where hiredate to_date(2005-2-3 12:32:23,YYYY-MM-DD HH:MI:SS);40 select sal from emp where salto_number($1,250.00,$9,999.99); 取出比它大的一切字符串(把特定格式的数字转化成字符)41 select ename,sal+nvl(comm,0) from emp; 讲comm值为空的用0来替换,单行函数(以一条记录为条件)一条对一条42.select Max(sal) from emp; select Min

10、(sal) from emp; select avg(sal) from emp; select sum(sal) from emp; select count(*) from emp; 查看表中一共有多少条记录 select count(*) from emp where deptno=10; 查找部门10一共有多少人;43.select avg(sal),deptno from emp group by deptno; 按部门号进行分组 select deptno,job,max(sal) from emp group by job,deptno; 按工作和部门号进行分组;44.selec

11、t ename from emp where sal=(select max(sal) from emp); 子查询,查找部门中薪水最高的员工姓名45.group by 注意:出现在select列表中的字段,如果没有出现在组函数中必须出现在group by子句中46.select avg(sal),deptno from emp group by deptno having avg(sal)2000; 选出部门中平均薪水大于2000的部门,47.select * from emp where sal100 group by deptno having .order by. 先取数据-过滤数据-

12、分组-对分组限制-排序48.select avg(sal) from emp where sal2000 group by deptno having avg(sal)1500 order by avg(sal) desc; 查找部门中平均薪水打印2000的员工并按部门号进行排序,查询分组后的平均薪水必须大于1500,查询结果按平均薪水从低到高排列49.select ename from emp where sal(select avg(sal) from emp); 查找出员工中薪水位于部门平均薪水之上的所有员工50.select ename,sal from emp join(select

13、 max(sal) max_sal from emp group by deptno) t on(emp.sal=t,max_sal and emp.deptno=t.deptno); 查找每个部门中薪水最高的51.select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno; 表的自连接52.select dname,ename from emp cross join dept 交叉连接,笛卡尔SQL99中的新语法53.select ename,dname from emp join dept on(emp.deptno=

14、dept.deptno);54.select ename,dname from emp join dept using(deptno); 查找emp和dept表中deptno相同的部分。55.select ename,dname,grade from emp e join dept d on(e.deptno=d.depno) join salgrade s(e.sal between s.losal and s.hisal) (三表查找) where ename not like _%A%;56.select e1.ename,e2.ename from emp e1 join emp e2

15、 on(e1.mgr=e2.deptno); 表的自连接57.select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr=e2.deptno) 左外表连接 select ename,dname from emp e right join dept d on(e.deptno=d.deptno)右外连接 select ename,dname from emp e full join dept d on(e.deptno=d.deptno)全连接58.求部门中薪水最高的 select ename,sal from emp join

16、 (select max(sal) max_sal, deptno from emp group by deptno) t on (emp.sal=t.max_sal and emp.deptno=t.deptno);59.求部门中薪水等级的平均值 select deptno,avg(grade) from(select deptno,ename,grade,from emp join salgrade s on(emp.sal between s.losal and s.hisal)t group by deptno;60.查找雇员中哪些是经理人 select ename from emp

17、where empno in(select mgr from emp);61.select distinct e1.sal from emp e1 join emp e2 on(e1.sale2.sal); 自连接(不用组函数求出最高薪水) select distinct sal from emp where not in (select ename from e1.sal from emp e1 join emp e2 on(e1.sale2.sal);62.select deptno from (select avg(sal) max_sal deptno from emp group b

18、y deptno) where max_sal=(select max(avg_sal) from (selectavg(sal) avg_sal deptno from emp group by deptno); 查找部门中部门薪水最大的部门号63.求平均薪水最大的部门的部门编号 select deptno,avg_sal from(select avg(sal) avg_sal,deptno from emp group by deptno)where avg_sal=(select max(avg(sal) from emp group by deptno);DML语句:更、删、改、查创

19、建权限, conn sys/admin as sysdba grant create table,create view to scott;首先在C:下面建个文件夹备份文件1.createNewUser方法1.-backup scott exp2.create user(创建用户)用超级管理员模式进入 create user yun identified by kang1234 default tablespace users quota 10M on users; grant create session,create table,create view to kafei(给kafei这个用

20、户授予权限)3.import the data(导入备份数据) imp2.insertinsert into dept values (50,game,bj) 插入一条记录insert into dept2 (deptno,dname) values (78,games); 插入指定的几条记录insert into dept2 select *from dept 插入指定的表(表结构要一样)rollback; 回退create table emp2 as select * from emp; 创建数据库表2来备份emp这张表3.update emp2 set sal=sal*12 where

21、deptno=10; update的用法4.delete from dept2 where deptno set serveroutput on;SQL begin(必要的-程序开始执行)2 dbms_output.put_line(hello world);3 end;(结束)4 /例子2:SQL declare2 v_name varchar2(20);3 begin4 v_name:=myname;5 dbms_output.put_line(v_name);6 end;7 /myname例子3:SQL declare2 v_num number:=0;3 begin4 v_num:=2

22、/v_num;5 dbms_output.put_line(v_num);6 end;7 /declare*ERROR 位于第 1 行:ORA-01476: 除数为 0ORA-06512: 在line 4例子4:declarev_num number:=0;beginv_num:=2/v_num;dbms_output.put_line(v_num);exceptionwhen others thendbms_output.put_line(error);end;/变量声明的规则1.变量名不能够使用保留字,如from,select等2.第一字符必须是字母。3.变量名最多包含30个字符4.不要与

23、数据库的表或者列同名5.每一行只能声明一个变量常用变量类型1. binary_interger,整数,主要用来计数,而不是用来表示字段类型2. number 数字类型3. char 定长字符串4. varchar2 变长字符串5. date 日期6.long 长字符串,最长2GB7.boolean 布尔类型,可以取true false 和null的值例5:declare v_temp number(1); v_count binary_integer:=0; v_sal number(7,2):=4000.00; v_date date:=sysdate; v_pi constant numb

24、er(3,2):=3.14; v_valid boolean:=false; v_name varchar2(20) not null:=myname;begin dbms_output.put_line(v_temp value:|v_temp);end;用-可以注释一行例6:declare v_empno number(4); v_empno2 emp.empno%type; v_empno3 v_empno2%type;begin dbms_output.put_line(test);end;例7table变量类型set serveroutput on;declare type type

25、_table_emp_empno is table of emp.empno%type index by binary_integer; v_empnos type_table_emp_empno;begin v_empnos(0):=7369; v_empnos(2):=7869; v_empnos(-1):=9999; dbms_output.put_line(v_empnos(-1);end;例8Record 变量类型set serveroutput on;declare type type_record_dept is record ( deptno dept.deptno%type,

26、 dname dept.dname%type, loc dept.loc%type ); v_temp type_record_dept;begin v_temp.deptno:=50; v_temp.loc:=aaaa; v_temp.loc:=bj; dbms_output.put_line(v_temp.deptno| |v_temp.dname);end;例9:使用%rowtype声明record变量(表结构的变化同时也能代理储存过程的变化)set serveroutput on;declare v_temp dept%rowtype;begin v_temp.deptno:=50;

27、v_temp.loc:=aaaa; v_temp.loc:=bj; dbms_output.put_line(v_temp.deptno| |v_temp.dname);end;例10;declarev_name emp.ename%type;v_sal emp.sal%type;beginselect ename,sal into v_name,v_sal from emp where empno=7369;(将ename和sal的值放在v_name和v_sal里面)例11:declarev_name emp.ename%type;v_sal emp.sal%type;beginselect

28、 ename,sal into v_name,v_sal from emp where empno=7369;dbms_output.put_line(v_name| |v_sal);end;dbms_output.put_line(v_name| |v_sal);end;例12:declarev_deptno dept.deptno%type:=50;v_dname dept.dname%type:=aaaa;v_loc dept.loc%type:=bj;begininsert into dept2 values(v_deptno,v_dname,v_loc);commit;end;例13

29、:declarev_deptno emp2.deptno%type:=50;v_count number;beginupdate emp2 set sal=sal/2 where deptno=v_deptno;dbms_output.put_line(sql%rowcount |条记录被影响);(sql为关键字,代表上一条语句commit;end;/例14:declarev_deptno emp2.deptno%type:=50;v_count number;begin-update emp2 set sal=sal/2 where deptno=v_deptno; select deptn

30、o into v_deptno from emp2 where empno=7369;dbms_output.put_line(sql%rowcount |条记录被影响);(sql为关键字,代表上一条语句commit;end;/例15declarev_deptno emp2.deptno%type:=50;v_count number;begin-update emp2 set sal=sal/2 where deptno=v_deptno;-select deptno into v_deptno from emp2 where empno=7369;select count(*) into

31、v_count from emp2; (select必须和into一起使用)dbms_output.put_line(sql%rowcount |条记录被影响);commit;end;/PL/SQL里面执行DDL语句beginexecute immediate create table T(nnn varchar2(20) default aaa);end;PL/SQL的分支语句:declare v_sal emp.sal%type;begin select sal into v_sal from emp where empno=7369; if(v_sal1200) then dbms_ou

32、tput.put_line(low); elsif(v_sal=11); end loop;end;PL/SQL for循环beginfor k in 1.10 loop dbms_output.put_line(k);end loop;for k in reverse 1.10 loop dbms_output.put_line(k);end loop;end;exception 捕获异常declare v_temp number(4);begin select empno into v_temp from emp where deptno=10;exception when too_man

33、y_rows then dbms_output.put_line(太多记录了);when others then dbms_output.put_line(error);end;没有数据错误declare v_temp number(4);begin select empno into v_temp from emp where deptno=2222;exception when no_data_found then dbms_output.put_line(没数据);when others then dbms_output.put_line(error);end;/错误处理create t

34、able errorlog(id number primary key,errcode number,errmsg varchar2(1024),errdate date);create sequence seq_errorlog_id start with 1 increment by 1;declarev_deptno dept.deptno%type:=10;v_errcode number;v_errmsg varchar2(1024);begindelete from dept where deptno=v_deptno;exceptionwhen others then rollbac

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服