ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Oracleѧϰ(Æß)£º¼¯ºÏÔËËã(Ò»)
2015-07-24 11:28:30 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:8´Î
Tags£ºOracle ѧϰ ¼¯ºÏ ÔËËã

1.֪ʶµã£º¿ÉÒÔ¶ÔÕÕÏÂÃæµÄ¼ÆÁ½øÐÐÔĶÁ

SQL> -- ²éѯ10ºÍ20ºÅ²¿ÃŵÄÔ±¹¤µÄ3ÖÖ·½·¨
SQL> --1. select * from emp where deptno in (10,20);
SQL> --2. select * from emp where deptno=10 or deptno=20;
SQL> --3. ¼¯ºÏÔËË㣺union/union all²¢¼¯£»intersect ½»¼¯£»minus²î¼¯
SQL> --      select * from emp where deptno=10
SQL> --         +
SQL> --      select * from emp where deptno=20;
SQL> --union£º²¢¼¯£¬Öظ´µÄÇøÓòֻȡһ´Î£»union all£º²¢¼¯£¬Öظ´µÄÇøÓòÈ¡Á½´Î
SQL> select * from emp where deptno=10
  2  union		
  3  select * from emp where deptno=20;

SQL> --ÀûÓü¯ºÏÔËËãʵÏÖgroup byµÄÔöÇ¿
SQL> --×¢Òâ
SQL> --1. ²ÎÓëÔËËãµÄ¸÷¸ö¼¯ºÏ±ØÐëÁÐÊýÏàͬ ÇÒÀàÐÍÒ»ÖÂ
SQL> --2. ²ÉÓõÚÒ»¸ö¼¯ºÏµÄ±íÍ·×÷Ϊ×îºóµÄ±íÍ·
SQL> --3. Èç¹ûÅÅÐò£¬±ØÐëÔÚÿ¸ö¼¯ºÏºóʹÓÃÏàͬµÄorder by
SQL> --4. ¿ÉÒÔʹÓÃÀ¨ºÅ
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;

SQL> --´ò¿ªsqlÖ´ÐÐʱ¼ä£¬Ã¿´ÎÖ´ÐÐsqlÓï¾ä¶¼»áÏÔʾִÐÐʱ¼ä
SQL> set timing on
SQL> --¹Ø±ÕsqlÖ´ÐÐʱ¼ä
SQL> set timing off

SQL> --½»¼¯£º¼ÈÊôÓÚintersectÇ°ÃæµÄ¼¯ºÏÓÖÊôÓÚintersectºóÃæµÄ¼¯ºÏ
SQL> select ename,sal from emp
  2  where sal between 700 and 1300
  3  INTERSECT
  4  select ename,sal from emp
  5  where sal between 1201 and 1400;

SQL> --²î¼¯£ºÖ»ÊôÓÚminusÇ°ÃæµÄ¼¯ºÏ¶ø²»ÊôÓÚminusºóÃæµÄ¼¯ºÏ
SQL> select ename,sal from emp
  2  where sal between 700 and 1300
  3  minus
  4  select ename,sal from emp
  5  where sal between 1201 and 1400;
2.ÔÚSqlplusÏÂʵ¼ÊÖ´ÐеĽá¹û¼ÆÁ
SQL> /*
SQL> ²éѯ10ºÍ20ºÅ²¿ÃŵÄÔ±¹¤
SQL> 1. select * from emp where deptno in (10,20);
SQL> 2. select * from emp where deptno=10 or deptno=20;
SQL> 3. ¼¯ºÏÔËËã
SQL>       select * from emp where deptno=10
SQL>          +
SQL>       select * from emp where deptno=20;
SQL> */
SQL> select * from emp where deptno=10
  2  union
  3  select * from emp where deptno=20;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM DEPTNO                                                                     
---------- ---------- --------- ---------- -------------- ----- ---------- ------                                                                     
      7369 SMITH      CLERK           7902 17-12ÔÂ-80       800                20                                                                     
      7566 JONES      MANAGER         7839 02-4ÔÂ -81      2975                20                                                                     
      7782 CLARK      MANAGER         7839 09-6ÔÂ -81      2450                10                                                                     
      7788 SCOTT      ANALYST         7566 13-7ÔÂ -87      3000                20                                                                     
      7839 KING       PRESIDENT            17-11ÔÂ-81      5000                10                                                                     
      7876 ADAMS      CLERK           7788 13-7ÔÂ -87      1100                20                                                                     
      7902 FORD       ANALYST         7566 03-12ÔÂ-81      3000                20                                                                     
      7934 MILLER     CLERK           7782 23-1ÔÂ -82      1300                10                                                                     

ÒÑÑ¡Ôñ8ÐС£

SQL> --ÀûÓü¯ºÏÔËËãʵÏÖgroup byµÄÔöÇ¿
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,sum(sal) from emp group by deptno
  4  union
  5  select sum(sal) from emp;
select deptno,sum(sal) from emp group by deptno
*
µÚ 3 ÐгöÏÖ´íÎó: 
ORA-01789: ²éѯ¿é¾ßÓв»ÕýÈ·µÄ½á¹ûÁÐÊý 


SQL> /*
SQL> ×¢Òâ
SQL> 1. ²ÎÓëÔËËãµÄ¸÷¸ö¼¯ºÏ±ØÐëÁÐÊýÏàͬ ÇÒÀàÐÍÒ»ÖÂ
SQL> 2. ²ÉÓõÚÒ»¸ö¼¯ºÏµÄ±íÍ·×÷Ϊ×îºóµÄ±íÍ·
SQL> 3. Èç¹ûÅÅÐò£¬±ØÐëÔÚÿ¸ö¼¯ºÏºóʹÓÃÏàͬµÄorder by
SQL> 4. ¿ÉÒÔʹÓÃÀ¨ºÅ
SQL> */
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;

DEPTNO JOB         SUM(SAL)                                                                                                                           
------ --------- ----------                                                                                                                           
    10 CLERK           1300                                                                                                                           
    10 MANAGER         2450                                                                                                                           
    10 PRESIDENT       5000                                                                                                                           
    10                 8750                                                                                                                           
    20 ANALYST         6000                                                                                                                           
    20 CLERK           1900                                                                                                                           
    20 MANAGER         2975                                                                                                                           
    20                10875                                                                                                                           
    30 CLERK            950                                                                                                                           
    30 MANAGER         2850                                                                                                                           
    30 SALESMAN        5600                                                                                                                           

DEPTNO JOB         SUM(SAL)                                                                                                                           
------ --------- ----------                                                                                                                           
    30                 9400                                                                                                                           
                      29025                                                                                                                           

ÒÑÑ¡Ôñ13ÐС£

SQL> break on deptno skip 2
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;

DEPTNO JOB         SUM(SAL)                                                                                                                           
------ --------- ----------                                                                                                                           
    10 CLERK           1300                                                                                                                           
       MANAGER         2450                                                                                                                           
       PRESIDENT       5000                                                                                                                           
                       8750
Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÎÏÅ£¨DORACLE»ù´¡Ö®Ñ§Ï°(Èý)--´¥·.. ÏÂһƪ£ºoracle´´½¨userÏêϸ˵Ã÷

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤³£ÓÃmetaÕûÀí | ²ËÄñ (2025-12-25 01:21:52)
¡¤SQL HAVING ×Ӿ䣺Éî (2025-12-25 01:21:47)
¡¤SQL CREATE INDEX Óï (2025-12-25 01:21:45)
¡¤Shell ´«µÝ²ÎÊý (2025-12-25 00:50:45)
¡¤Linux echo ÃüÁî - (2025-12-25 00:50:43)