Oracle ²éѯ¡¢¸üлù±¾²Ù×÷
oracle ĬÈϸôÀëµÈ¼¶ÊÇ£º¶ÁÒÑÌá½»¡£
²éÑ¯Ëø¶¨£¬·ÀÖ¹ÁíÍâÓû§¸üУº
select * from books for update;
µ±Ç°Óû§¸üÐÂÖ®ºó£¬ÁíÍâÓû§¿ÉÒÔ¸ü¸Ä¡£
01¡¢±íÁ¬½Ó
¼Ù¶¨from×Ó¾äÖдÓ×óµ½ÓÒÁ½¸ö±í·Ö±ðΪA£¬B±í¡£
ÄÚÁ¬½Ó£ºÑ¡È¡A¡¢B±íµÄÍêȫƥÅäµÄ¼¯ºÏ£¬Á½±í½»¼¯£º
select empno,ename,emp.deptno A,dept.deptno B,dname from emp inner join dept on emp.deptno=dept.deptno;
×óÍâÁ¬£ºÑ¡È¡A±íÈ«²¿ÒÔ¼°A¡¢B±í½»¼¯
select dname,dept.deptno A,emp.deptno B,empno,ename from dept left join emp on dept.deptno=emp.deptno;
ÓÒÍâÁ¬£ºÑ¡È¡B±íÈ«²¿ÒÔ¼°A¡¢B±í½»¼¯
select empno,ename,emp.deptno A,dept.deptno B,dname from emp right join dept on emp.deptno=dept.deptno;
02¡¢±íÁªºÏ
ÕûºÏ½á¹û¼¯²¢Ïû³ýÖØ¸´ÐУº
select empno,ename from emp
union
select deptno,dname from dept;
03¡¢¿ÕÖµ
select empno,ename,nvl(comm,0) from emp; --ÕýÈ·£¬commÓë0ÀàÐÍÏàͬ
select empno,ename,nvl(comm,'¿ÕÖµ') from emp; --´íÎó£¬commÓë'¿ÕÖµ'ÀàÐͲ»Í¬
select empno,ename,comm from emp where comm is null;
select empno,ename,comm from emp where comm is not null;
04¡¢ÅÅÐò
select * from emp order by empno,asc;
select * from dept order by deptno desc;
05¡¢Ïû³ýÖØ¸´Êý¾Ý
select distinct deptno from emp;
06¡¢Ä£ºý²éѯ
select ename from emp where ename like '%K';
_±íʾһ¸ö×Ö·û£¬%±íʾһ¸ö»ò¶à¸ö×Ö·û
07¡¢·Ö×é
select deptno, avg(sal) from emp group by deptno; --·Ö×éÇó³öƽ¾ùнˮ
select deptno, avg(sal) from emp group by deptno, job; --×éºÏ·Ö×é
select deptno, avg(sal) from emp group by deptno having avg(sal) > 2000;
group by ºóÃæµÄ×ֶΣ¬¿ÉÒÔ²»³öÏÖÔÚselectºóÃæ£»
select ºóÃæµÄ×ֶΣ¬Èç¹ûûÓгöÏÖÔÚ¾Û¼¯º¯ÊýÀ¾Í±ØÐë³öÏÖÔÚgroup byºóÃæ¡£
group by ·Ö×é¹ýÂËҪʹÓÃhaving¡£
08¡¢¾Û¼¯º¯Êý
select ename, max(sal) from emp;
ÕâÌõÓï¾ä´íÎó£ºmaxÖ»ÄÜÓÐÒ»¸öÖµ£¬Ö»ÄÜѡȡһÐУ¬µ«ÊǵÈÓÚmaxÖµµÄ¼Ç¼¿ÉÄÜÓкü¸¸ö£¬ÎÞ·¨ÕýÈ·Æ¥Å䣬ËùÒÔÓ¦¸ÃʹÓÃ×Ó²éѯ£º
select ename from emp where sal = (select max(sal) from emp);
¾Û¼¯º¯Êý²»ÄÜ×öΪÌõ¼þ³öÏÖÔÚwhere×Ó¾äµÄºó±ß£º
select deptno,sum(sal) from emp where sum(sa
Ïà¹ØÎĵµ£º
1.¾¡¿ÉÄܵØÊ¹Óð󶨱äÁ¿ ²»Óÿª¹ØCURSOR_SHARING=FORCE
Èç¹ûÄãÔ¸Ò⣬Õâ¸öÌØÐÔ»áʵÏÖÒ»¸ö×Ô¶¯°ó¶¨Æ÷£¨auto-binder£©¡£
Èç¹ûÓÐÒ»¸ö²éѯ±àдΪSELECT * from EMP WHERE EMPNO = 1234£¬×Ô¶¯°ó¶¨Æ÷»áÇÄÎÞÉùÏ¢µØ°ÑËü¸Äд³É
SELECT * from EMP WHERE EMPNO = :x¡£ÕâȷʵÄܶ¯Ì¬µØ´ó´ó¼õÉÙÓ²½âÎöÊý£¬²¢¼õÉÙÇ°ÃæÌÖÂÛµ ......
dualÊÇÒ»¸öÐéÄâ±í£¬ÓÃÀ´¹¹³ÉselectµÄÓï·¨¹æÔò£¬oracle±£Ö¤dualÀïÃæÓÀÔ¶Ö»ÓÐÒ»Ìõ¼Ç¼¡£ÎÒÃÇ¿ÉÒÔÓÃËüÀ´×öºÜ¶àÊÂÇ飬ÈçÏ£º
1¡¢²é¿´µ±Ç°Óû§£¬¿ÉÒÔÔÚ SQL PlusÖÐÖ´ÐÐÏÂÃæÓï¾ä select user from dual;
2¡¢ÓÃÀ´µ÷ÓÃϵͳº¯Êý
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--»ñµÃµ±Ç°ÏµÍ³Ê±¼ ......
1£ºÖØÐÂÔÚdbcaÖд´½¨Êý¾Ý¿â²¢Ñ¡ÔñÕýÈ·µÄ×Ö·û¼¯
2£º
²éѯµ±Ç°×Ö·û¼¯£º
select userenv('language') from dual;
select * from V$NLS_PARAMETERS;
ÔÚWindowsÏÂsqlplusÍêÈ«Õý³££¬¿ÉÊǵ½LinuxÏ£¬sqlplusÖÐÎÄÏÔʾ¾Í³öÎÊÌâÁË£¬×ÜÊÇÏÔʾ“??”£¬Õâ¸öÎÊÌâÓÖÔõô½â¾öÄØ£¿
¾¹ýÔÚÍøÂçÉϲé×ÊÁÏ£¬ÒÔ¼°³¢ÊÔ£¬µÃµ½ ......
×î½üÔÚÏîÄ¿±¨±íÖÐÐèÒªÒ»¸ö²éѯÓï¾ä£¬ÓÃÀ´Í³¼Æ·ûºÏijһÁÐÌõ¼þµÄÆäËü¼¸ÁеĸöÊý
±ÈÈçÓÐÏÂÃæÒ»¸ö±í½á¹¹£º
ÐèÒªÔÚÁÐDºóÃæÔö¼ÓÒ»ÁУ¬Í³¼ÆÔÚÁÐA²»Îª¿Õ£¬²¢ÇÒÁÐB¡¢C¡¢D²»Îª¿ÕµÄ¸öÊý
¾¹ý×Ô¼ºÊÔÑ飬²éÕÒ°ïÖú£¬×ÜËãʵÏÖÁËÉÏÃæµÄ²éѯ¡£
&nb ......
1.Çó²¿ÃÅÖÐÄÄЩÈËнˮ×î¸ß£º
select ename,sal
from emp join
(
select max(sal) max_sal, deptno
from emp
group by deptno
) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno);
2.Çó²¿ÃÅÆ½¾ùнˮµÄµÈ¼¶£º
select deptno, avg_sal, grade ......