±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁËsqlÓï¾äÖеġ¢ÊÂÎñ´¦Àí¡¢×Ó²éѯ¡¢¶à±í²éѯµÈÏà¹ØµÄ֪ʶ£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£ |
|
sql ½á¹¹²éѯÓïÑÔ£¬·ÖÒÔϼ¸×飺
DML(Data Manipulation Language,Êý¾Ý²Ù×÷ÓïÑÔ),ÓÃÓÚ¼ìË÷»òÕ߸üÐÂÊý¾Ý
DDL(Data Definition Language,Êý¾Ý¶¨ÒåÓïÑÔ)£¬ÓÃÓÚ¶¨ÒåÊý¾ÝµÄ½á¹¹£¬Èç´´½¨£¬Ð޸ĻòÕßɾ³ýÊý¾Ý¿â¶ÔÏó
DCL(Data Control Language,Êý¾Ý¿ØÖÆÓïÑÔ)£¬¶¨ÒåÊý¾Ý¿âÓû§µÄȨÏÞ
²é¿´µ±Ç°Êý¾Ý¿âµÄÃû³ÆºÍ״̬
SQL> select
instance_name,status from v$instance; |
²é¿´µ±Ç°µÄopen״̬
SQL> select
open_mode from v$database; |
´´½¨Óû§
SQL> create
user c##scott identified by oracle; |
¸øÈ¨ÏÞ
SQL> grant
connect,resource to c##scott;
SQL> alter user c##scott quota unlimited on
users; |
ʹÓÃscottÓû§Á¬½Ó
SQL> conn
c##scott/oracle |
Ö´Ðнű¾£¬£¬£¬
SQL> @/home/oracle/scott.sql |
*ÎÒÔÚÕâÓõÄÊÇoracle12c£¬oracle11g¿ÉÖ±½Ó½âËøscottÓû§À´Á·Ï°SQLÓï¾ä*
ÓÃsysÓû§½âËø²¢¸øÃÜÂ룺
alter user scott
account unclock;
alter user scott identified by oracle; |
²é¿´µ±Ç°Óû§
²é¿´µ±Ç°Óû§ÓÐÄÄЩ±í
SQL> select
table_name from user_tables; |
²é¿´Óû§µÄ±í
²é¿´emp±íµÄ±í½á¹¹
Áгödept±íµÄËùÓÐÁÐ
²é¿´Ö¸¶¨ÁÐ
SQL> select
deptno,loc from dept; |
ÌØÐÔ£º
×Öĸ×ó¶ÔÆë£¬Êý×ÖÓÒ¶ÔÆë
SQL> select
ename,sal,job,hiredate from emp; |
Ö§³ÖÔËËã·û
SQL> select
ename,sal,job,sal+100 from emp; |
ÔËËã·ûÓÅÏȼ¶
SQL> select
ename,sal,job,(sal+100)*12 from emp; |
²é¿´¿ÕÖµ
SQL> select
ename,job,sal,comm from emp; |
ÁбðÃû£¬¿É¼ÓË«ÒýºÅ±£³ÖÔÑù
SQL> select
ename,sal,sal+100 as newsal from emp; |
Á¬½ÓÔËËã·û
SQL> select
ename||sal from emp; |
ʹÓÃ×ÖÃæ×Ö·û´®
SQL> select
ename||¡±¡¯s sal is ¡®||sal from emp;
SQL> select ename||q¡¯[¡¯s sal is ]¡¯ ||sal from
emp;! |
È¥³ýÖØ¸´µÄÐÐ
select DISTINCT
job from emp; |
ÃèÊö£¬ÏÔʾ±í½á¹¹
ÔÚsqlplusÖÐÖ´ÐвÙ×÷ϵͳÃüÁî
SQL> !clear
SQL> host clear |
¼òµ¥²éѯ
Óï·¨£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû],[×Ö¶Î [±ðÃû]]
FROM ±íÃû³Æ [±í±ðÃû]
²éѯdept±íµÄÈ«²¿¼Ç¼
²éѯÿ¸ö¹ÍÔ±µÄ±àºÅ£¬ÐÕÃûºÍ»ù±¾¹¤×Ê
²éѯÿ¸ö¹ÍÔ±µÄְλ
select distinct
job from emp; |
×¢Ò⣺²éѯ³öÀ´µÄjobÄÚÈÝÓÐÖØ¸´Êý¾Ý£¬Ê¹ÓÃdistinctɾ³ýÖØ¸´
select distinct
job from emp; |
²éѯÿ¸ö¹ÍÔ±µÄÐÕÃû£¬Ö°Î»
select distinct
ename,job from emp; |
¼òµ¥²éѯÖУ¬¿ÉÒÔʹÓÃËÄÔòÔËËã·û
²éѯÿһ¸ö¹ÍÔ±µÄÐÕÃû£¬Ö°Î»ºÍ»ù±¾Äêн
select ename,job,sal*12
from emp; |
×¢Ò⣺ÁеÄÃû³Æ²»·½±ãä¯ÀÀ£¬¿ÉÒÔʹÓÃÁбðÃû
select ename,job,sal*12
income from emp;
select ename,job,sal*12 as income from emp; |
ÿ¸öÔÂÿ¸öÈËÓÐ200µÄ·¹²¹ºÍ100µÄ³µ²¹£¬¼ÆËãÄêн
select ename,job,(sal+300)*12
income from emp; |
Äêµ×¶à·¢Ò»¸öÔµĻù±¾¹¤×Ê
select ename,job,(sal+300)*12+sal
income from emp; |
ʹÓÃ||Á¬½Ó·û
select empno||¡¯,¡¯||ename
from emp; |
ÏÞ¶¨²éѯ
Óï·¨£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]]
FROM ±íÃû³Æ [±í±ðÃû]
[WHERE Ìõ¼þ(s)]
Ìõ¼þ£º
,>=,<,<=,!=(<>),
BETWEEN¡AND¡,LIKE,IN,IS NULL,AND,OR,NOT
1¡¢¹ØÏµÔËËã
ÒªÇó²éѯ³ö»ù±¾¹¤×ʸßÓÚ1500µÄËùÓйÍÔ±ÐÅÏ¢
select * from
emp where sal>1500; |
²éѯ³öËùÓÐְλÊǰìÊÂÔ±µÄ¹ÍÔ±ÐÅÏ¢
select * from
emp where job=¡¯CLERK¡¯; |
×¢Ò⣺ÔÚoracleÊý¾Ý¿â£¬Êý¾ÝÇø·Ö´óСд
²éѯ¹¤×ÊÔÚ1500-3000Ö®¼äµÄÈ«²¿¹ÍÔ±ÐÅÏ¢
select * from
emp where sal>=1500 and sal<=3000;
select * from emp where sal between 1500 and 3000; |
²éѯְλÊǰìÊÂÔ±£¬»òÕßÊÇÏúÊÛÔ±µÄÈ«²¿ÐÅÏ¢
select * from
emp where job=¡¯CLERK¡¯ or job=¡¯SALESMAN¡¯; |
²éѯְλÊǰìÊÂÔ±£¬»òÕßÊÇÏúÊÛÔ±µÄÈ«²¿ÐÅÏ¢£¬²¢ÒªÇóÕâЩ¹ÍÔ±µÄ¹¤×Ê´óÓÚ1200
select * from
emp
where (job=¡¯CLERK¡¯ or job=¡¯SALESMAN¡¯) and sal>1200; |
²éѯËùÓв»ÊǰìÊÂÔ±µÄ¹ÍÔ±ÐÅÏ¢
select * from
emp where job<>¡¯CLERK¡¯;
select * from emp where job!=¡¯CLERK¡¯;
select * from emp where NOT job=¡¯CLERK¡¯; |
2¡¢·¶Î§ÅжÏ
BETWEEN ×îСֵ AND ×î´óÖµ
²éѯ»ù±¾¹¤×ÊÔÚ1500-3000µÄ¹ÍÔ±ÐÅÏ¢
select * from
emp where sal between 1500 and 3000; |
Çó·´
select * from
emp where not sal between 1500 and 3000; |
3¡¢ÅжÏÊÇ·ñΪ¿Õ
IS(NOT) NULL,¿ÕÖµ²»ÊÇÊý×Ö0»òÕß¿Õ×Ö·û´®
²éѯ³öËùÓÐÁìÈ¡½±½ðµÄ¹ÍÔ±ÐÅÏ¢
select * from
emp where comm is not null;
select * from emp where not comm is null; |
²éѯËùÓв»ÁìÈ¡½±½ðµÄ¹ÍÔ±
select * from
emp where comm is null; |
4¡¢Ö¸¶¨·¶Î§µÄÅжÏ
IN²Ù×÷·û±íʾָ¶¨Ò»¸ö·¶Î§
²éѯ¹ÍÔ±±àºÅÊÇ7369£¬7566£¬7799µÄ¹ÍÔ±ÐÅÏ¢
select * from
emp
where empno=7369 or empno=7566 or empno=7799; |
ʹÓÃIN
select * from
emp where empno in (7369,7566,7799); |
ʹÓÃNOT IN±íʾ²»ÔÚÖ¸¶¨·¶Î§ÄÚ
select * from
emp where empno not in (7369,7566,7799); |
×¢Ò⣺¹ØÓÚNOT INµÄÎÊÌâ
Èç¹ûʹÓÃIN²Ù×÷·û£¬²éѯµÄ·¶Î§Ö®ÖдæÔÚnull£¬²»Ó°Ïì²éѯ
select * from
emp where empno in (7369,7566,null); |
Èç¹ûʹÓÃNOT IN²Ù×÷·û£¬Èç¹û²éѯ·¶Î§ÖÐÓÐnull£¬Ôò²»»áÓÐÈκβéѯ½á¹û
select * from
emp where empno not in (7369,7566,null); |
Èç¹ûNOT INÖгöÏÖÁËnull£¬Ôò±íʾ²éѯȫ²¿Êý¾Ý
ÎªÊ²Ã´ÄØ£¿
5¡¢Ä£ºý²éѯ
LIKE×Ó¾ä
_: Æ¥Åäµ¥¸ö×Ö·û
%: Æ¥ÅäÈÎÒâ¶à¸ö×Ö·û
²éѯ¹ÍÔ±ÐÕÃûÖÐÒÔ×ÖĸA¿ªÍ·µÄÈ«²¿¹ÍÔ±ÐÅÏ¢
select * from
emp where ename like ¡®A%¡¯; |
²éѯ¹ÍÔ±ÐÕÃûÖеڶþ¸ö×ÖĸÊÇAµÄÈ«²¿¹ÍÔ±ÐÅÏ¢
select * from
emp where ename not like ¡®%A%¡¯; |
Çó·´
Hello World!select
* from emp where ename not like ¡®%A%¡¯; |
%%±íʾ²éѯȫ²¿ÐÅÏ¢
Êý¾ÝÅÅÐò
Óï·¨£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]]
FROM ±íÃû³Æ [±ðÃû]
[WHERE Ìõ¼þ(S)]
[ORDER BY ×Ö¶Î [ASC|DESC][×Ö¶Î [ASC|DESC],¡]]
˵Ã÷£º
¸Ã×Ó¾äÔÚËùÓеÄSQLÓï¾ä×îºó
¿ÉÒÔÖ¸¶¨¶à¸öÅÅÐòµÄ×Ö¶Î
ĬÈÏÉýÐò
½µÐòÐèÒªÊÖ¹¤Ö¸¶¨
ÓÐÐèÒªµÄʱºò²Å½øÐÐÅÅÐò
²éѯËùÓйÍÔ±µÄÐÅÏ¢£¬°´¹¤×ÊÅÅÐò
select * from
emp order by sal;
select * from emp order by sal asc; |
½µÐòÅÅÁÐ
select * from
emp order by sal desc; |
²éѯËùÓйÍÔ±ÐÅÏ¢£¬°´ÕÕ¹¤×ʽµÐòÅÅÁУ¬¹¤×ÊÏàͬ£¬Ôò°´¹ÍÓ¶ÈÕÆÚ´ÓÔçµ½ÍíÅÅÁÐ
select * from
emp order by sal desc,hiredate asc; |
µ¥Ðк¯Êý
·ÖÀࣺ
×Ö·ûº¯Êý
Êý×Öº¯Êý
ÈÕÆÚº¯Êý
ת»»º¯Êý
ͨÓú¯Êý
×Ö·ûº¯Êý£ºÖ÷ÒªÊǽøÐÐ×Ö·û´®Êý¾ÝµÄ²Ù×÷
UPPER(×Ö·û´®|ÁÐ) ½«ÊäÈëµÄ×Ö·û´®±äΪ´óд·µ»Ø
LOWER(×Ö·û´®|ÁÐ) ½«ÊäÈëµÄ×Ö·û´®±äΪСд·µ»Ø
INITCAP(×Ö·û´®|ÁÐ) ¿ªÍ·Ê××Öĸ´óд
LENGTH(×Ö·û´®|ÁÐ) Çó³ö×Ö·û´®³¤¶È
REPLACE(×Ö·û´®|ÁÐ) ½øÐÐÌæ»»
SUBSTR(×Ö·û´®|ÁÐ) ¿ªÊ¼µã[½áÊøµã]£¬×Ö·û´®½ØÈ¡
oracleÌṩһ¸öÐéÄâ±ídual
ת´óд
select upper(¡®hello¡¯)
from dual;
select * from emp where ename=upper(¡®&str¡¯); |
תСд
½«ËùÓйÍÔ±ÐÕÃû°´ÕÕСд×Öĸ·µ»Ø
select lower(ename)
from emp; |
½«Ã¿¸ö¹ÍÔ±ÐÕÃûµÄ¿ªÍ·Ê××Öĸ´óд
select initcap(ename)
from emp; |
²éѯ³öÿ¸ö¹ÍÔ±ÐÕÃûµÄ³¤¶È
select ename,length(ename) from emp; |
²éѯ³ö¹ÍÔ±ÐÕÃû³¤¶È¸ÕºÃÊÇ5µÄ¹ÍÔ±ÐÅÏ¢
select ename,length(ename) from emp where length(ename)=5; |
ʹÓÃ×Ö·û¡°_¡±Ìæ»»¹ÍÔ±ÐÕÃûÖеÄËùÓÐ×Öĸ¡°A¡±
select replace(ename,¡¯A¡¯,¡¯_¡¯)
from emp; |
×Ö·û´®½ØÈ¡ÓÐÁ½ÖÖÓï·¨£º
1 SUBSTR(×Ö·û´®|ÁÐ,¿ªÊ¼µã)£¬±íʾ´Ó¿ªÊ¼µãÒ»Ö±½ØÈ¡µ½½áβ
select ename,substr(ename,3) from emp; |
2 SUBSTR(×Ö·û´®|ÁÐ,¿ªÊ¼µã,½ØÈ¡¶àÉÙλ)£¬±íʾ´Ó¿ªÊ¼µã½ØÈ¡¶àÉÙλ
select ename,substr(ename,0,3)
from emp;
select ename,substr(ename,1,3) from emp; |
ÒªÇó½ØÈ¡Ã¿¸ö¹ÍÔ±Ãû×ֵĺóÈý¸ö×Öĸ
ͨ¹ý³¤¶È-2È·¶¨¿ªÊ¼µã
select ename,substr(ename,length(ename)-2)
from emp; |
ÉèÖøºÊý£¬±íʾ´ÓºóÖ¸¶¨½ØÈ¡Î»ÖÃ
select ename,substr(ename,-3)
from emp; |
Êý×Öº¯Êý
ROUND(Êý×Ö|ÁÐ[,±£ÁôСÊýµÄ·¶Î§])£ºËÄÉáÎåÈëµÄ²Ù×÷
TRUNC(Êý×Ö|ÁÐ[,±£ÁôСÊýµÄ·¶Î§]): ÉáÆúÖ¸¶¨Î»ÖõÄÄÚÈÝ
MOD(Êý×Ö1£¬Êý×Ö2)£ºÈ¡Ä££¬È¡ÓàÊý
ROUND
select round(903.5)
from dual;
select round(903.53567) from dual;
select round(903.53567),round(-903.53567) from
dual;
select round(903.53567),round(-903.53567), round(903.53567,-1)
from dual;
select round(903.53567),round(-903.53567),round(903.53567,-1), round(903.53567,2)
from dual; |
TRUNC trunc
select trunc(903.53567),trunc(-903.53567),trunc(903.53567,-1), trunc(903.53567,2)
from dual; |
MOD
select mod(3,10)
from dual; |
ÈÕÆÚº¯Êý
È¡µÃ½ñÌìµÄÈÕÆÚ£¬¿ÉÒÔʹÓá°SYSDATE¡±
select sysdate
from dual; |
ÈÕÆÚµÄ¼ÆËãÓÐÒÔϼ¸ÖÖ¼ÆË㣺
ÈÕÆÚ+Êý×Ö=ÈÕÆÚ£¬±íʾÈô¸ÉÌìÖ®ºóµÄÈÕÆÚ
ÈÕÆÚ-Êý×Ö=ÈÕÆÚ£¬±íʾÈô¸ÉÌì֮ǰµÄÈÕÆÚ
ÈÕÆÚ-ÈÕÆÚ=Êý×Ö£¬±íʾÁ½¸öÈÕÆÚÖ®¼äµÄÌìÊý£¬µ«ÊDZØÐë´óÈÕÆÚ¼õСÈÕÆÚ
Çó³öÿ¸ö¹ÍÔ±µ½½ñÌìΪֹµÄ¹ÍÓ¶ÌìÊý
select ename,hiredate,sysdate-hiredate
from emp; |
ÈÕÆÚ³ýÁËÒÔÉϵÄÈý¸ö¼ÆË㹫ʽ£¬»¹ÓÐËĸö²Ù×÷º¯Êý
LAST_DAY(ÈÕÆÚ)£ºÇó³öÖ¸¶¨ÈÕÆÚµ±ÔµÄ×îºóÒ»Ìì
#Çó³ö±¾ÔµÄ×îºóÒ»ÌìÈÕÆÚ
select last_day(sysdate) from dual;
NEXT_DAY(ÈÕÆÚ£¬ÐÇÆÚÊý)£ºÇó³öÏÂÒ»¸öÖ¸¶¨ÐÇÆÚ¼¸µÄÈÕÆÚ
#ÏÂÒ»¸öÖÜÁùÊǼ¸ºÅ
select next_day(sysdate,'sat') from dual;
#ÏÂÒ»¸öÖÜÈÕÊǼ¸ºÅ
select next_day(sysdate,'sun') from dual£»
ADD_MONTHS(ÈÕÆÚ£¬Êý×Ö)£ºÇó³öÈô¸ÉÔÂÖ®ºóµÄÈÕÆÚ
#ËĸöÔºóÊǼ¸ºÅ
select add_months(sysdate,4) from dual;
MOUNTHS_BETWEEN(ÈÕÆÚ1£¬ÈÕÆÚ2)£ºÇó³öÁ½¸öÈÕÆÚÖ®¼äËù¾ÀúµÄÔ·Ý
#Çó³öÿ¸ö¹ÍÔ±µ½½ñÌìΪֹµÄ¹ÍÓ¶Ô·Ý
select ename,hiredate,trunc(months_between(sysdate,hiredate))
from emp; |
×¢Ò⣺ÔÚËùÓпª·¢Ö®ÖУ¬Èç¹ûÊÇÈÕÆÚµÄ²Ù×÷£¬½¨ÒéʹÓÃÒÔÉϵĺ¯Êý£¬¿ÉÒÔ±ÜÃâÈòÄêµÄÎÊÌâ¡£
ת»»º¯Êý
֮ǰÎÒÃÇѧϰÁË×Ö·ûº¯Êý£¬Êý×Öº¯ÊýºÍÈÕÆÚº¯Êý£¬¶ø×ª»»º¯ÊýµÄÖ÷Òª¹¦ÄÜÊÇÍê³ÉÕ⼸ÖÖÊý¾ÝÖ®¼äµÄ»¥Ïàת»»µÄ²Ù×÷£¬Ò»¹²ÓÐÈýÖÖת»»º¯Êý¡£
TO_CHAR(×Ö·û´®|ÁУ¬¸ñʽ×Ö·û´®)£º½«ÈÕÆÚ»òÕßÊý×Ö±äΪ×Ö·û´®ÏÔʾ£»
TO_DATE(×Ö·û´®£¬¸ñʽ×Ö·û´®)£º½«×Ö·û´®×ª±äΪDATEÊý¾ÝÏÔʾ£»
TO_NUMBER(×Ö·û´®)£º½«×Ö·û´®±äΪÊý×ÖÏÔʾ.
TO_CHAR()º¯Êý
¸ñʽ£ºÄê(yyyy),ÔÂ(mm),ÈÕ(dd)
#²ð·ÖÄêÔÂÈÕ
select to_char(sysdate,¡¯yyyy-mm-dd¡¯),to_char(sysdate,¡¯yyyy¡¯)
year,to_char(sysdate,¡¯mm¡¯) month,to_char(sysdate,¡¯dd¡¯)
day from dual; |
#¸ÉµôÈÕÆÚÖеÄǰµ¼Áã
select to_char(sysdate,'fmyyyy-mm-dd') day from
dual; |
ÔÚoracleÖ®ÖУ¬sysdateº¯ÊýÖÐÊǰüº¬ÁËʱ¼äµÄ£¬ÒªÏÔʾʱ¼äÐèÒªÔö¼Ó±ê¼Ç
#ʹÓÃsysdateÏÔʾʱ¼ä
select to_char(sysdate,¡¯yyyy-mm-dd hh:mi:ss¡¯)
haha from dual;
select to_char(sysdate,¡¯yyyy-mm-dd hh:mi:ss¡¯)
from dual;
#ʹÓÃ24Ð¡Ê±ÖÆ
select to_char(sysdate,¡¯yyyy-mm-dd hh24:mi:ss¡¯)
from dual; MI |
ʹÓÃTO_CHARº¯ÊýÖ®ºó£¬ËùÓÐÄÚÈÝΪ×Ö·û´®£¬²»ÔÙÊÇdateÐÍÊý¾Ý£¬TO_CHARͬÑù¿ÉÒÔÓÃÔÚÊý×ÖÉÏÓÃÀ´¸ñʽ»¯Êý×Ö
#¸ñʽ»¯Êý×Ö22222222222£»
select to_char(22222222222,¡¯999,999,999,999,999,999,999¡¯)
shuzi from dual; |
Õâʱ£¬¸ñʽ»¯×Ö·û´®µÄÊý×Ö9±íʾ¸ñʽ£¬¶ø²»ÊÇÊý×Ö9¡£
#¸ñʽ»¯Êý×ÖΪ»õ±Ò¼Ç¼¸ñʽ£¬Ê¹Óá°L¡±±ê¼Ç±íʾת»»Îªµ±Ç°ÓïÑÔ»·¾³ÏµĻõ±Ò·ûºÅ
select to_char(22222222222,'L999,999,999,999,999,999,999')
huobi from dual; |
TO_DATE(): (ÊìϤÓ÷¨)
ʹÓ÷½·¨ÈçÏ£»
select to_date(¡®1989-09-12¡¯,¡¯yyyy-mm-dd¡¯) from dual;
TO_NUMBER(): (»ù±¾²»Ó㬻áÓü´¿É)
ʹÓ÷½·¨ÈçÏ£»
select to_date(¡®1989-09-12¡¯,¡¯yyyy-mm-dd¡¯)
from dual; |
ÔÚoracleÖУ¬²»Ê¹Óøú¯ÊýÒ²¿ÉÒÔÍê³É¸Ã¹¦ÄÜ£¬ÈçÏ£º
select ¡®2¡¯+¡¯3¡¯
from dual; |
ͨÓú¯Êý
ͨÓú¯ÊýÖ÷ÒªÓÐNVL(),DECODE()Á½¸ö,ÕâÁ½¸öº¯ÊýËãÊÇoracleµÄÌØÉ«º¯Êý¡£
NVL(): ´¦Àínull
#ÒªÇó²éѯËùÓйÍÔ±µÄÈ«²¿Äêн
select ename,sal,comm,(sal+comm)*12 from emp;
|
²éѯµÄ½á¹û³öÏÖÎÊÌ⣬½â¾ö°ì·¨Êǽ«commÖеÄnullÖµ±ä³É0£¬·½·¨ÈçÏ£º
#²é¿´×ª»»¹ý³Ì
select ename,sal,comm,nvl(comm,0) from emp;
#½â¾öÎÊÌâ
select ename,sal,comm,(sal+nvl(comm,0))*12 from
emp; |
DECODE()£º¶àÊýÖµÅжÏ
ÅжϵÄÊÇÊýÖµ¶ø²»ÊÇÌõ¼þ£¬ÀàËÆ±à³ÌÖеÄif¡else¡
˵Ã÷£ºÕâÖÖÅжϿ϶¨ÊǽøÐÐÖðÐÐÅжϣ¬ËùÒÔÕâ¸öʱºò¾Í±ØÐë²ÉÓÃDECODE(),¶ø´Ëº¯ÊýµÄÓ÷¨ÈçÏ£º
DECODE(ÊýÖµ|ÁУ¬ÅжÏÖµ1£¬ÏÔʾֵ1£¬ÅжÏÖµ2£¬ÏÔʾֵ2£¬¡)
#ÀýÈ磺ҪÇóÏÔʾȫ²¿¹ÍÔ±µÄְ룬µ«ÊÇÕâЩְλҪÇóÏÔʾ³Épinyin¡£
CLERK: °ìÊÂÔ±
SALESMAN: ÏúÊÛÔ±
MANAGER: ¾Àí
ANALYST: ·ÖÎöÔ±
PRESIDENT: ×ܲÃ
#ʵÏÖ£º
select empno,ename,job,decode(job,
'CLERK','banshiyuan',
'SALESMAN','xiaoshouyuan',
'MANAGER','jingli',
'ANALYST','fenxiyuan',
'PRESIDENT','zongcai')
from emp; |
×ܽ᣺
1£ºÒÔÉÏÁгöµÄSQLÓï¾äÖ»ÊÇ×î»ù±¾µÄÓï·¨,Ã÷°×SELECT,FROM,WHERE,ORDER BYÖ®¼äµÄ¹ØÏµ£»
2£ºÊìϤSCOTTÓû§µÄ4ÕűíµÄÄÚÈÝ£¬°üÀ¨ÁеÄÃû³Æ£¬×÷ÓúÍÀàÐÍ£»
3£º¾«Í¨ÒÔÉÏËùÓÐSQLÓï¾äºÍº¯ÊýµÄʹÓá£
¶à±í²éѯ
Óï·¨£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]]
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],±íÃû³Æ [±ðÃû]¡]
[WHERE Ìõ¼þ(S)]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]]
×¢Ò⣺¶à±í²éѯ֮ǰ£¬Ê×ÏȱØÐë²éѯ¸÷¸ö±íÖеÄÊý¾ÝÁ¿£¬Õâ¸ö²Ù×÷¿ÉÒÔͨ¹ýCOUNT()º¯ÊýÀ´Íê³É¡£Çмǣ¡Çмǣ¡Çмǣ¡
×¢Ò⣺ÔÚÓöµ½Ò»¸öеÄÊý¾Ý¿â£¬ÓÐÁ½ÖÖ×ö·¨£º
1¡¢Ö±½ÓÖ´ÐÐÒÔÏÂÃüÁî
select * from ±íÃû³Æ
µ¼ÖµĽá¹ûÒ»ÊÇÎÞ·¨ä¯ÀÀÊý¾Ý£¬¶þÊÇ¿ÉÄÜÔì³ÉËÀ»ú£¬È磺
½éÉÜ£º
shÓû§ÊÇoracleÊý¾Ý¿âʾÀý·½°¸µÄÓû§£¬¸ÃʾÀý·½°¸ÊÇ´óÊý¾Ý·½°¸
×ö·¨£º
1¡¢¸øshÓû§½âËøºÍ¸ÄÃÜÂë
alter user sh
identified by sh account unlock; |
2¡¢Ê¹ÓÃshÓû§µÇ¼
3¡¢²éѯÓжàÉÙ±í
4¡¢²éѯsales±íÊý¾Ý
5¡¢µÈ´ý£¬È»ºóûÓÐÈ»ºóÁË
2¡¢ÏȲéѯÊý¾ÝÁ¿
select count(*) from ±íÃû³Æ
=====
1¡¢select count(*) from sales;
½áÂÛ£ºÓöµ½ÐÂÊý¾Ý¿âÊ×ÏȲéѯµÄÊÇÊý¾ÝÁ¿£¬¶ø²»ÊÇÖ±½Óselect *
from ±íÃû³Æ¡£
²éѯemp±íÖеÄÊý¾ÝÁ¿
select count(*)
from emp; |
È·ÈÏÊý¾ÝÁ¿ºó£¬Ö´Ðжà±í²éѯÓï¾ä£º
Óï¾äÓ﷨ûÓÐÎÊÌ⣬µ«ÊÇÒòΪÊý¾Ý¿âµÄ»úÖÆµ¼Ö²úÉúÁ˵ѿ¨¶ù»ý£¬ËùÒÔ¾ßÌåÓ÷¨²»ÕâôÓá£
ÈçºÎÈ¥µôµÑ¿¨¶ù»ýÄØ£¿
²ÉÓùØÁª×ֶεÄÐÎʽ£¬emp±íºÍdept±íÖ®¼ä´æÔÚÁËdeptnoµÄ¹ØÁª×ֶΣ¬´Ó¹ØÁª×Ö¶ÎÏÂÊÖ£¬ÈçÏ£º
select * from
emp,dept where deptno=deptno; #Ö´ÐдíÎó
select * from emp,dept where emp.deptno=dept.deptno;
#ÏÔʾÉϵѿ¨¶ù»ýÒѾÏû³ý£¬Êµ¼ÊÉϵѿ¨¶ù»ý»¹ÔÚ£¬²¢Ã»ÓÐÏû³ý¡£ |
¾ÙÀý£º
1¡¢Ê¹ÓÃsh´óÓû§Õ˺ÅÁ¬½Ó
2¡¢²éѯsales±íµÄÊý¾ÝÁ¿
select count(*)
from sales; |
3¡¢²éѯ»¹ÓÐÆäËûµÄÄÄЩ±í£¿
4¡¢²éѯcosts±íµÄÊý¾ÝÁ¿
select count(*)
from costs; |
5¡¢²éѯsales±íµÄ±í½á¹¹
6¡¢²éѯcosts±íµÄ±í½á¹¹
7¡¢¸ù¾Ý²éѯ½á¹û·¢ÏÖPROD_ID¿ÉÒÔ×÷Ϊ¹ØÁª×ֶνøÐвéѯ
select count(*)
from sales,costs where sales.prod_id=costs.prod_id;
|
½áÂÛ£ºÕâÁ½ÕÅ±í¼´±ãÏû³ýÁ˵ѿ¨¶ù»ýµÄÏÔʾ£¬µ«ÊDZ¾Éí»¹´æÔڵѿ¨¶ù»ýµÄÎÊÌ⣬ËùÒÔ¶à±í²éѯµÄÐÔÄÜÊǺܲîµÄ£¬µ±È»Ò²Ö÷Òª¿´Êý¾ÝÁ¿¡£
Èç¹û±íµÄÃû³Æ±È½Ï³¤£¬ÄÇôÕâÑùµÄ·½Ê½ºÜ²»·½±ãʹÓ㬽â¾ö°ì·¨¾ÍÊÇʹÓñí±ðÃû£¬ÈçÏ£º
select * from
emp e,dept d where e.deptno=d.deptno; |
ÒªÇó²éѯÿһλ¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬Ö°Î»£¬²¿ÃÅÃû³Æ£¬²¿ÃÅλÖÃ
˼·£º
1¡¢Ê×ÏÈÈ·ÈÏÐèÒªµÄ±í£»
emp±í¿ÉÒÔ²éѯ¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬Ö°Î»£»
dept±í¿ÉÒÔ²éѯ²¿ÃÅÃû³ÆºÍλÖã»
2¡¢È·¶¨±íµÄ¹ØÁª×ֶΣ»
×ö·¨£º
1¡¢²éѯ³öÿһλ¹ÍÔ±µÄ±àºÅ£¬ÐÕÃûºÍְλ£»
select e.empno,e.ename,e.job
from emp e; |
2¡¢Îª²éѯÖÐÒýÈ벿ÃÅ±í£¬Í¬Ê±Ôö¼ÓÏû³ýµÑ¿¨¶ù»ýµÄÌõ¼þ£»
select e.empno,e.ename,e.job,d.dname,d.loc
from emp e,dept d
where e.deptno=d.deptno; |
ÒªÇó²éѯ³öÿһλ¹ÍÔ±µÄÐÕÃû£¬Ö°Î»ºÍÁìµ¼ÐÕÃû
˼·£º
1¡¢È·ÈÏÐèÒªµÄ±í£»
emp±í¿ÉÒÔ²éѯ¹ÍÔ±µÄÐÕÃû£¬Ö°Î»ºÍÁìµ¼±àºÅ
emp±í¿ÉÒÔ²éѯÁìµ¼µÄÐÕÃû
2¡¢È·¶¨¹ØÁª×ֶΣ»
emp.mgr=emp.empno,¹ÍÔ±µÄÁìµ¼±àºÅ=Áìµ¼µÄ¹ÍÔ±±àºÅ
×ö·¨£º
1¡¢²éѯÿһλ¹ÍÔ±µÄÐÕÃûºÍְλ
select e.ename,e.job
from emp e; |
2¡¢²éѯÁìµ¼ÐÅÏ¢£¬¼ÓÈë×ÔÉí¹ØÁª
select e.ename,e.job,m.ename
from emp e,emp m
where e.mgr=m.empno; |
×¢Ò⣺²éѯ½á¹ûÉÙÁËÒ»ÐУ¬È±ÉÙKINGµÄÁìµ¼ÐÕÃû£¬ÒòΪËûûÓÐÁìµ¼£¬ºóÃæ×óÓÒÁ´½Ó½âÊÍ¡£
ÒªÇó²éѯ³öÿ¸ö¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬»ù±¾¹¤×Ê£¬Ö°Î»£¬Áìµ¼µÄÐÕÃû£¬²¿ÃÅÃû³Æ¼°Î»ÖÃ
˼·£º
1¡¢È·ÈÏÐèÒªµÄ±í£»
emp±í²éѯÿ¸ö¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬»ù±¾¹¤×Ê£¬Ö°Î»
emp±í²éѯÁìµ¼µÄÐÕÃû
dept±í²éѯ²¿ÃŵÄÃû³Æ¼°Î»ÖÃ
2¡¢È·¶¨ÒÑÖªµÄ¹ØÁª×Ö¶Î
¹ÍÔ±ºÍ²¿ÃÅ£º e.deptno=d.deptno
¹ÍÔ±ºÍÁìµ¼£º e.mgr=m.empno
×ö·¨£º
1¡¢²éѯ³öÿ¸ö¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬»ù±¾¹¤×Ê£¬Ö°Î»
select empno,ename,sal,job
from emp; |
2¡¢¼ÓÈëÁìµ¼µÄÐÅÏ¢£¬ÒýÈë×ÔÉí¹ØÁª£¬Í¬Ê±Ôö¼ÓÏû³ýµÑ¿¨¶ù»ýµÄÌõ¼þ
select e.empno,e.ename,e.sal,e.job,m.ename
from emp e,emp m
where e.mgr=m.empno; |
3¡¢¼ÓÈ벿ÃŵÄÐÅÏ¢£¬ÒýÈëdept±í£¬ÓÐÐÂ±í£¬ÔòÒª¼ÌÐø¼ÓÈëÏû³ýµÑ¿¨¶ù»ýµÄÌõ¼þ
select e.empno,e.ename,e.sal,e.job,m.ename,d.dname,d.loc
from emp e,emp m,dept d
where e.mgr=m.empno
and e.deptno=d.deptno; |
˼¿¼Á·Ï°ÌâÒ»£º
ÒªÇó²éѯ³öÿһ¸ö¹ÍÔ±µÄ±àºÅ£¬ÐÕÃû£¬¹¤×Ê£¬Áìµ¼µÄÐÕÃû£¬²¿ÃÅÃû³Æ¼°Î»ÖÃ,¹¤×ÊËùÔÚ¹«Ë¾µÄ¹¤×ʵȼ¶
select e.empno,e.ename,e.sal,d.dname,s.grade
from emp e,dept d,salgrade s
where e.deptno=d.deptno and e.sal between s.losal
and s.hisal; |
×ó¡¢ÓÒÁ¬½Ó
×óÓÒÁ¬½Ó¿ÉÒԸıä²éѯÅжÏÌõ¼þµÄ²Î¿¼·½Ïò£¬ÀýÈ磬ÓÐÒÔϲéѯ
select * from
emp e,dept d where e.deptno=d.deptno; |
×¢Ò⣺һ¹²ÓÐËĸö²¿ÃÅ£¬µ«ÊÇÕâÀïÖ»ÓÐÈý¸ö£¬È±ÉÙ40²¿ÃŵIJ¿ÃÅÐÅÏ¢£¬ÔÒò¾ÍÊÇÏÖÔڵIJéѯÒÔemp±íΪ²Î¿¼½øÐвéѯ£¬ÒªÏëÏÔʾ40²¿ÃÅ£¬
¾Í±ØÐë¸Ä±ä²Î¿¼µÄ·½Ïò£¬Õâʱ¾ÍÐèÒª×óÓÒÁ¬½Ó
Ó÷¨£º
select * from
emp e,dept d where e.deptno(+)=d.deptno; |
(+)ÓÃÓÚ×óÓÒÁ¬½ÓµÄ¸ü¸Ä£¬ÕâÖÖ·ûºÅÓÐÒÔÏÂÁ½ÖÖʹÓÃÇé¿ö£º
(+)=:±íʾÓÒÁ¬½Ó
=(+):±íʾ×óÁ¬½Ó
²»ÓÿÌÒâÇø·Ö×ó»¹ÊÇÓÒ£¬¸ù¾Ý²éѯ½á¹ûÀ´¶¨£¬Èç¹û·¢ÏÖÓÐЩÐèÒªµÄÊý¾ÝûÓÐÏÔʾ³öÀ´£¬¾ÍʹÓô˷ûºÅÀ´¸Ä±äÁ¬½Ó·½Ïò,¸Ã·ûºÅΪoracle¶ÀÓС£
Èç֮ǰµÄ²éѯÁìµ¼ÐÕÃûµÄ·¶Àý£º
select e.ename,e.job,m.ename
from emp e,emp m
where e.mgr=m.empno(+); |
²¹³ä£º
²éѯ×Ö¶Îʱ£¬ÐèÒª¶à±í¹ØÁª£¬ÐèÒªÓõ½±í±ðÃû£¬ÄÚÁ¬½Ó£¬ÍâÁ¬½Ó£¬×ÔÈ»Á¬½Ó£¬×ÔÁ¬½Ó
һЩ¹Ø¼üÁ¬½Ó·½·¨¡£
1.±í±ðÃû
²éѯԱ¹¤±àºÅ Ô±¹¤ÐÕÃû ²¿ÃÅÃû³Æ
select e.empno,e.ename,d.dname
from emp e,dept d
where e.deptno=d.deptno; |
2.ÄÚÁ¬½Ó A£¨inner£© join B on Á¬½ÓÌõ¼þ
select e.empno,e.ename,d.dname
from emp e inner join dept d
on e.deptno=d.deptno; |
ÄÚÁ¬½Ó±ØÐëÂú×ãÁ¬½ÓÌõ¼þ£¬²»Âú×ãµÄÐÅÏ¢ÎÞ·¨ÏÔʾ
3.ÍâÁ¬½Ó
1¡·×óÍâÁ¬½Ó
¹Ø¼ü×Ö A left join B on Á¬½ÓÌõ¼þ
Ê×ÏÈÌí¼ÓÒ»ÌõûÓв¿ÃŵÄÔ±¹¤ÐÅÏ¢
insert into
myemp(empno,ename,job) values(1100,¡¯rose¡¯,¡¯artist¡¯);
|
emp±íÀïÃæroseûÓÐÔ±¹¤±àºÅ£¬dept±í²»ÄÜÕÒµ½roseµÄ²¿ÃÅÐÅÏ¢
select e.empno,e.ename,d.dname
from myemp e left join dept d
on e.deptno=d.deptno; |
Ìõ¼þ²éѯ = (+) ×óÁ¬½Ó
select e.empno,e.ename,d.dname
from myemp e,dept d
where e.deptno=d.deptno(+); |
2¡·ÓÒÍâÁ¬½Ó
¹Ø¼ü×Ö A right join B on Á¬½ÓÌõ¼þ
dept±íµÄ40ºÅ²¿ÃÅûÓÐÔ±¹¤ÐÅÏ¢£¬Ê¹ÓÃÄÚÁ¬½ÓºÍÌõ¼þ²éѯ¶¼ÎÞ·¨ÏÔʾ£¬
ÎÒÃÇÓÃÓÒÁ¬½Óʹ40ºÅ²¿ÃÅÏÔʾ³öÀ´¡£
select e.empno,e.ename,d.dname
from emp e right join dept d
on e.deptno=d.deptno; |
Ìõ¼þ²éѯ×óÓÒÁ¬½Ó
£¨+£©= ÓÒÁ¬½Ó
= (+) ×óÁ¬½Ó
select e.empno,e.ename,d.dname
from emp e,dept d
where e.deptno=d.deptno(+); |
3¡·ÍêÈ«ÍâÁ¬½Ó full join
select e.empno,e.ename,d.dname
from myemp e full join dept d
on e.deptno=d.deptno; |
4¡·×ÔÈ»Á¬½Ó natural join
²»ÓÃÇø·Ö¹ØÁªÌõ¼þ£¬oracle×Ô¶¯ÎªÎÒÃÇÇø·Ö
²éѯ¹¤×Ê´óÓÚ2000µÄÔ±¹¤±àºÅ£¬Ô±¹¤ÐÕÃûºÍ²¿ÃÅÃû³Æ¡£
select empno,ename,dname
from emp natural join dept where sal>2000;
|
ȱµã
Èç¹û±íÃû²»È·¶¨£¬²»Äܲéѯ
5¡·×ÔÁ¬½Ó
²éѯԱ¹¤ÐÕÃû£¬Ô±¹¤Ö°³ÆÒÔ¼°Ô±¹¤ËùÊôÁìµ¼¡£
select e.ename,e.job,m.ename
from emp e left join emp m
on e.mgr=m.empno; |
Ìõ¼þ²éѯ
select e.ename,e.job,m.ename
from emp e,emp m
where e.mgr=m.empno; |
ͳ¼Æº¯Êý
·ÖÀࣺ
COUNT():²éѯ±íÖеÄÊý¾Ý¼Ç¼
AVG(): Çó³öƽ¾ùÖµ
SUM(): ÇóºÍ
MAX(): Çó³ö×î´óÖµ
MIN(): Çó³ö×îСֵ
ͳ¼Æ³ö¹«Ë¾µÄËùÓйÍԱÿ¸öÔÂÖ§¸¶µÄƽ¾ù¹¤×ʼ°×ܹ¤×Ê
select count(empno),sum(sal),avg(sal)
from emp; |
ͳ¼Æ¹ÍÔ±ÖеÄ×î¸ßºÍ×îµÍ¹¤×Ê
select max(sal),min(sal)
from emp; |
×¢Ò⣺
COUNT()º¯ÊýµÄÖ÷Òª¹¦ÄÜÊǽøÐÐÊý¾ÝµÄͳ¼Æ£¬µ«ÊÇÔÚ½øÐÐÊý¾Ýͳ¼ÆµÄʱºò£¬Èç¹ûÒ»ÕűíÖÐûÓÐͳ¼Æ¼Ç¼£¬ÄÇôCOUNT()Ò²»á·µ»ØÊý¾Ý£¬Ö»ÊÇÕâ¸öÊý¾ÝÊÇ¡°0¡±.
È磺select count(ename) from bonus; #·µ»ØÊý×Ö0
select sum(sal) from bonus; #·µ»ØNULL
Èç¹ûʹÓÃÆäËûº¯Êý£¬ÔòÓпÉÄÜ·µ»ØNULLÖµ£¬µ«ÊÇCOUNT()ÓÀÔ¶¶¼»á·µ»ØÒ»¸ö¾ßÌåµÄÊý×Ö£¬¼ÇסÁË£¬¼ÇסÁË£¬¼ÇסÁË¡£
·Ö×éͳ¼Æ
ʲôÇé¿öÏÂÐèÒª·Ö×éͳ¼Æ£¿
1¡¢ÄеķÖÒ»×飬ٵķÖÒ»×é
2¡¢ÄêÁä·Ö×飬³ÉÄêºÍδ³ÉÄê
3¡¢µØÇø·Ö×飬ÉϺ£ºÍ±±¾©£¬
ÕâЩÐÅÏ¢Èç¹û¶¼±£´æÔÚÊý¾Ý¿âÖУ¬¿Ï¶¨ÔÚÊý¾Ý¿âµÄijһÁÐÉÏ´æÔÚÖØ¸´Êý¾Ý£¬ÀýÈç°´ÕÕÐÔ±ð·Ö×éµÄʱºò£¬ÓÐÄкÍÅ®£¬°´ÕÕÄêÁä·Ö×飬ÓÐÒ»¸ö·¶Î§µÄÖØ¸´£¬°´ÕÕµØÇøµÄ»°ÓÐÒ»¸öµØÇøµÄÐÅÏ¢ÖØ¸´
×¢Ò⣺µ±Êý¾ÝÖØ¸´µÄʱºò·Ö×é²ÅÓÐÒâÒ壬һ¸öÈËÒ²¿ÉÒÔµ¥¶À·ÖÒ»×飬µ«ÊÇôÓÐÒâÒå¡£
Èç¹ûÐèÒª·Ö×飬¿ÉÒÔʹÓÃGROUP BY×Ӿ䣬Óï·¨ÈçÏ£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡]
[WHERE Ìõ¼þ(s)]
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]]
°´ÕÕ²¿ÃűàºÅ·Ö×飬Çó³öÿ¸ö²¿ÃŵÄÈËÊýºÍƽ¾ù¹¤×Ê
select deptno,count(empno),avg(sal)
from emp
group by deptno; |
°´ÕÕְλ·Ö×飬Çó³öÿ¸öְλµÄ×î¸ßºÍ×îµÍ¹¤×Ê
select job,max(sal),min(sal)
from emp
group by job; |
×¢Ò⣺·Ö×麯ÊýÓÐÒÔÏÂÒªÇó£º
1¡¢·Ö×麯Êý¿ÉÒÔÔÚûÓзÖ×éµÄʱºòµ¥¶ÀʹÓ㬿ÉÊDz»ÄܳöÏÖÆäËûµÄ²éѯ×ֶΣ¬È磺
ÕýȷʹÓãºselect count(empno) from emp;
´íÎóʹÓ㬳öÏÖÆäËû×ֶΣºselect empno,count(empno) from emp;
2¡¢Èç¹ûÒª½øÐзÖ×飬Ôòselect×Ó¾äÖ®ºó£¬Ö»ÄܳöÏÖ·Ö×éµÄ×ֶκÍͳ¼Æº¯Êý£¬ÆäËû×ֶβ»ÄܳöÏÖ£¬È磺
ÕýȷʹÓãºselect job,count(empno),avg(sal) from emp group
by job;
´íÎóÓ÷¨£ºselect empno,job,count(empno),avg(sal) from emp
group by job;
3¡¢·Ö×麯ÊýÔÊÐíǶÌ×£¬µ«ÊÇǶÌ×Ö®ºóµÄ·Ö×麯ÊýµÄ²éѯ֮Öв»ÄÜÔÙ³öÏÖÈÎºÎµÄÆäËû×ֶΣ¬È磺
#°´ÕÕְλ·Ö×飬ͳ¼ÆÆ½¾ù¹¤×Ê×î¸ßµÄ¹¤×Ê
ÏÈͳ¼Æ³ö¸÷¸öְλµÄƽ¾ù¹¤×Ê
select job,avg(sal)
from emp
group by job; |
²éѯƽ¾ù¹¤×Ê×î¸ßµÄ¹¤×Ê
´íÎóʹÓãºselect job,max(avg(sal)) from emp group by job;
ÕýȷʹÓãºselect max(avg(sal)) from emp group by job;
²éѯ³öÿ¸ö²¿ÃŵÄÃû³Æ£¬²¿ÃŵÄÈËÊý£¬Æ½¾ù¹¤×Ê
˼·£º
1¡¢È·¶¨ËùÐèÒªµÄÊý¾Ý±í
dept±í£ºÃ¿¸ö²¿ÃŵÄÃû³Æ
emp±í£º ͳ¼Æ³ö²¿ÃŵÄÈËÊý£¬Æ½¾ù¹¤×Ê
2¡¢È·¶¨ÒÑÖªµÄ¹ØÁª×Ö¶Î
×ö·¨£º
1¡¢½«dept±íºÍemp±íµÄÊý¾Ý¹ØÁª
select d.dname,e.ename,e.sal
from dept d,emp e
where d.deptno=e.deptno; |
2¡¢²é¿´ÉÏÃæÓï¾äÖ´ÐеĽá¹û£¬ÓÐÖØ¸´Öµ£¬¾Í¿ÉÒÔ½øÐзÖ×é²éѯ£¬µ«ÊÇ´ËʱÓë֮ǰµÄ·Ö×鲻̫һÑù£¬Ö®Ç°µÄ·Ö×éÊÇÕë¶ÔÒ»ÕÅʵÌå±í£¬
µ«ÊǶÔÓÚÒÔÉϵÄÊý¾ÝÊÇͨ¹ý²éѯ½á¹ûÏÔʾµÄ£¬ËùÒÔÊÇÒ»ÕÅÁÙʱµÄÐéÄâ±í£¬µ«ÊDz»¹ÜÊÇʵÌå±íºÍÐéÄâ±í£¬Ö»ÒªÊÇÓÐÖØ¸´£¬ÄÇô¾ÍÖ±½Ó½øÐзÖ×é
select d.dname,count(e.empno),avg(e.sal)
from dept d,emp e
where d.deptno=e.deptno
group by d.dname; |
ͨ¹ý½á¹û¿ÉÒÔ¿´µ½£¬Õâ¸ö·Ö×é²¢²»ºÏÊÊ£¬²¿ÃÅÒ»¹²ÓÐËĸö£¬ÒòΪÒѾÒýÈëÁËdept±í£¬¸Ã±í´æÔÚÁËËĸö²¿ÃÅ£¬ËùÒÔÓ¦¸Ãͨ¹ý×óÓÒÁ¬½ÓÀ´¸Ä±ä²éѯµÄ½á¹û
select d.dname,count(e.empno),avg(e.sal)
from dept d,emp e
where d.deptno=e.deptno(+)
group by d.dname; |
²éѯ½á¹û·¢ÏÖOPERATIONS²¿Ãŵį½¾ù¹¤×ÊΪNULLÖµ£¬²¢²»·ûºÏ½á¹ûÔ¤ÆÚ£¬ËùÒÔ¿ÉÒÔͨ¹ýNVLº¯ÊýÀ´½øÐд¦Àí£¬ÈçÏ£º
select d.dname,count(e.empno),trunc(nvl(avg(e.sal),0))
avg
from dept d,emp e
where d.deptno=e.deptno(+)
group by d.dname; |
¶à×ֶηÖ×é
ÒªÇóÏÔʾÿ¸ö²¿ÃŵıàºÅ£¬Ãû³Æ£¬Î»Ö㬲¿ÃŵÄÈËÊýºÍƽ¾ù¹¤×Ê
˼·£º
1¡¢È·¶¨ËùÐèÒªµÄÊý¾Ý±í
dept±í£ºÃ¿¸ö²¿ÃŵıàºÅ£¬Ãû³Æ£¬Î»ÖÃ
emp±í£º ͳ¼Æ³ö²¿ÃŵÄÈËÊý£¬Æ½¾ù¹¤×Ê
2¡¢È·¶¨ÒÑÖªµÄ¹ØÁª×Ö¶Î
×ö·¨£º
1¡¢½«emp±íºÍdept±í¹ØÁª
select d.deptno,d.dname,d.loc,e.empno,e.sal
from dept d,emp e
where d.deptno=e.deptno(+); |
2¡¢²é¿´ÒÔÉÏÓï¾äÖ´ÐеĽá¹û£¬·¢ÏÖÓÐÈý¸öÁдæÔÚÖØ¸´Êý¾Ý(deptno,dname,loc),ËùÒÔÔÚ·Ö×éÉϵÄGROUP
BY×Ó¾äÖоͿÉÒÔдÉÏÈý¸ö×ֶΣº
select d.deptno,d.dname,d.loc,count(e.empno),
from dept d,emp e
where d.deptno=e.deptno(+)
group by d.deptno,d.dname,d.loc; |
ÒÔÉϾÍÊÇ·Ö×é²éѯ£¬²»¹ÜÊǵ¥×ֶλ¹ÊǶà×ֶΣ¬Ò»¶¨ÒªÓÐÒ»¸öǰÌá¾ÍÊÇ´æÔÚÁËÖØ¸´Êý¾Ý¡£
ÔÚÉϸö·¶ÀýµÄ»ù´¡ÉÏ£¬ÒªÇóͳ¼Æ³öÿ¸ö²¿ÃŵÄÏêϸÐÅÏ¢£¬²¢ÇÒÒªÇóÕâЩ²¿Ãŵį½¾ù¹¤×ʸßÓÚ2000
ʹÓÃwhere×Ó¾ä
select d.deptno,d.dname,d.loc,count(e.empno)
mycount,trunc(nvl(avg(e.sal),0)) myavg
from dept d,emp e
where d.deptno=e.deptno(+)
and avg(e.sal)>2000
group by d.deptno,d.dname,d.loc; |
¸ÃÓï¾ä»á±¨´í£¬ÈçÏ£º
where d.deptno=e.deptno(+)
and avg(e.sal)>2000
*
ERROR at line 3:
ORA-00934: group function is not allowed here |
Òâ˼ÊÇ˵ÔÚwhere×Ó¾äÖв»ÄÜʹÓÃͳ¼Æº¯Êý£¬ÕâºÍwhere×Ó¾äµÄ¹¦ÄÜÓйء£
Èç¹ûÒª¶Ô·Ö×éºóµÄÊý¾ÝÔٴνøÐйýÂË£¬ÐèҪʹÓÃHAVING×Ӿ䣬Óï·¨¸ñʽÈçÏ£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡]
[WHERE Ìõ¼þ(s)]
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[HAVING ·Ö×éºóµÄ¹ýÂËÌõ¼þ(¿ÉÒÔʹÓ÷Ö×麯Êý)]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]]
ÏÂÃæÊ¹ÓÃHAVING½øÐйýÂË
select d.deptno,d.dname,d.loc,count(e.empno)
mycount,trunc(nvl(avg(e.sal),0)) myavg
from dept d,emp e
where d.deptno=e.deptno(+)
group by d.deptno,d.dname,d.loc
having avg(sal)>2000; |
×¢Ò⣺WHEREºÍHAVINGµÄÇø±ð
WHERE:ÔÚÖ´ÐÐGROUP BY²Ù×÷֮ǰ½øÐеĹýÂË£¬±íʾ´ÓÈ«²¿Êý¾ÝÖнøÐйýÂË£¬²»ÄÜʹÓÃͳ¼Æº¯Êý£»
HAVING: ÔÚGROUP BY·Ö×éÖ®ºóµÄÔٴιýÂË£¬¿ÉÒÔʹÓÃͳ¼Æº¯Êý¡£
˼¿¼Á·Ï°Ìâ¶þ£º
ÏÔʾ·ÇÏúÊÛÈËÔ±¹¤×÷Ãû³ÆÒÔ¼°´ÓÊÂͬһ¹¤×÷¹ÍÔ±µÄÔ¹¤×ʵÄ×ܺͣ¬²¢ÇÒÒªÂú×ã´ÓÊÂͬһ¹¤×÷µÄ¹ÍÔ±µÄÔ¹¤×ʺϼƴóÓÚ5000£¬Êä³ö½á¹û°´ÕÕÔ¹¤×ʵĺϼÆÉýÐòÅÅÁС£
×Ó²éѯ(ºËÐÄÖØµã)
×Ó²éѯ=¼òµ¥²éѯ+ÏÞ¶¨²éѯ+¶à±í²éѯ+ͳ¼Æ²éѯµÄ×ÛºÏÌå
ÔÚ֮ǰ˵¶à±í²éѯ²»½¨ÒéʹÓã¬ÒòΪÐÔÄܲµ«ÊǶà±í²éѯ×îÓÐÀûµÄÌæ´úÕß¾ÍÊÇ×Ó²éѯ£¬ÔÚʵ¼ÊµÄ¿ª·¢ÖÐʹÓÃ×î¶àµÄ¾ÍÊÇ×Ó²éѯ¡£
Óï·¨£º
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý,(
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡]
[WHERE Ìõ¼þ(s)]
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]])
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡],(
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡]
[WHERE Ìõ¼þ(s)]
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]])
[WHERE Ìõ¼þ(s)](
SELECT [DISTINCT]*| ×Ö¶Î [±ðÃû][×Ö¶Î [±ðÃû]] | ͳ¼Æº¯Êý
FROM ±íÃû³Æ [±ðÃû],[±íÃû³Æ [±ðÃû],¡]
[WHERE Ìõ¼þ(s)]
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]])
[GROUP BY ·Ö×é×Ö¶Î1 [,·Ö×é×Ö¶Î2,¡]]
[HAVING ·Ö×éºóµÄ¹ýÂËÌõ¼þ(¿ÉÒÔʹÓÃͳ¼Æº¯Êý)]
[ORDER BY ÅÅÐò×Ö¶Î [ASC|DESC][ÅÅÐò×Ö¶Î [ASC|DESC],¡]]
WHERE:×Ó²éѯһ°ãÖ»·µ»Øµ¥Ðе¥ÁУ¬¶àÐе¥ÁУ¬µ¥ÐжàÁеÄÊý¾Ý
FROM£º×Ó²éѯ·µ»ØµÄÒ»°ãÊǶàÐжàÁеÄÊý¾Ý£¬µ±×÷Ò»ÕÅÁÙʱ±í³öÏÖ¡£
ÒªÇó²é³ö¹¤×ʱÈSMITH»¹Òª¸ßµÄÈ«²¿ÐÅÏ¢
˼·£º
1¡¢Ê×ÏÈÒªÖªµÀSMITHµÄ¹¤×ÊÊǶàÉÙ
select sal from
emp where ename=¡¯SMITH¡¯; |
2¡¢ÓÉÓÚ´Ëʱ·µ»ØµÄÊǵ¥Ðе¥ÁеÄÊý¾Ý£¬ËùÒÔÕâ¸ö×Ó²éѯ¿ÉÒÔÔÚWHEREÖгöÏÖ
select * from
emp where sal>(
select sal
from emp
where ename=¡¯SMITH¡¯); |
ÒªÇó²éѯ³ö¸ßÓÚ¹«Ë¾Æ½¾ù¹¤×ʵÄÈ«²¿¹ÍÔ±ÐÅÏ¢
˼·£º
1¡¢¹«Ë¾µÄƽ¾ù¹¤×ÊÊǶàÉÙ£¿
select avg(sal)
from emp; |
2¡¢ÓÉÓÚ´Ëʱ·µ»ØµÄÊǵ¥Ðе¥ÁеÄÊý¾Ý£¬ÔÚWHEREÖ®ÖгöÏÖ
select * from
emp where sal>(
select avg(sal)
from emp); |
ÒÔÉÏ·µ»ØµÄÊǵ¥Ðе¥ÁУ¬µ«ÊÇÔÚ×Ó²éѯÖУ¬Ò²¿ÉÒÔ·µ»Øµ¥ÐжàÁеÄÊý¾Ý£¬Ö»ÊÇÕâÖÖ×Ó²éѯºÜÉÙ³öÏÖ£¬È磺
select * from
emp where(job,sal)=(
select job,sal
from emp
where ename=¡¯ALLEN¡¯); |
Èç¹û×Ó²éѯ·µ»ØµÄÊǶàÐе¥ÁÐÊý¾ÝµÄ»°£¬Õâ¸öʱºò¾ÍÐèҪʹÓÃÈýÖÖÅжϷûÀ´½øÐÐÅжϣºIN,ANY,ALL
1¡¢IN²Ù×÷·û£ºÓÃÓÚÖ¸¶¨Ò»¸ö×Ó²éѯµÄÅжϷ¶Î§
select * from
emp
where sal in(
select sal
from emp
where job=¡¯MANAGER¡¯); |
ÔÚʹÓÃINµÄʱºò»¹Òª×¢ÒâNOT INµÄÎÊÌ⣬Èç¹ûʹÓÃNOT IN²Ù×÷£¬ÔÚ×Ó²éѯÖУ¬Èç¹ûÓÐÒ»¸öÄÚÈÝÊÇNULL£¬Ôò²»»áÓÐÈκβéѯ½á¹û£¬
ÒòΪÈç¹ûÓÐNULL£¬Ôò»á²éѯËùÓÐÊý¾Ý£¬Èç¹ûÊý¾ÝÁ¿Ì«´ó¾Í»áµ¼ÖÂÓЩ¶´²úÉú£¬ËùÒÔ¼ÓÈëÏÞÖÆ¡£
select * from
emp
where sal not in(
select sal
from emp
where job=¡¯MANAGER¡¯); |
2¡¢ANY²Ù×÷·û£¬Óëÿһ¸öÄÚÈÝÏàÆ¥Å䣬ÓÐÈýÖÖÆ¥ÅäÐÎʽ
1¡¢=ANY:¹¦ÄÜÓëIN²Ù×÷·ûÊÇÍêȫһÑù£»
select * from
emp
where sal=any(
select sal
from emp
where job=¡¯MANAGER¡¯); |
2¡¢>ANY:±È×Ó²éѯÖзµ»Ø¼Ç¼×îСµÄ»¹Òª´óµÄÊý¾Ý
select * from
emp
where sal>any(
select sal
from emp
where job=¡¯MANAGER¡¯); |
3¡¢
²éѯ³öÿ¸ö²¿ÃŵıàºÅ£¬Ãû³Æ£¬Î»ÖúͲ¿ÃÅÈËÊý£¬Æ½¾ù¹¤×Ê
֮ǰʹÓõÄÊǶà×ֶηÖ×éͳ¼ÆÍê³ÉµÄ£¬È磺
select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.deptno,d.dname,d.loc; |
Õâʱºòʵ¼Ê²úÉúÁ˵ѿ¨¶ù»ý£¬¹²56Ìõ¼Ç¼¡£
ÏÂÃæÊ¹ÓÃ×Ó²éѯÀ´Íê³É£¬ËùÓеÄͳ¼Æ²éѯֻÄÜÔÚGROUP BYÖгöÏÖ£¬ËùÒÔÔÚ×Ó²éѯ֮ÖиºÔðͳ¼ÆÊý¾Ý£¬¶øÔÚÍⲿµÄ²éѯ֮ÖУ¬¸ºÔð½«Í³¼ÆÊý¾ÝºÍdept±íÊý¾ÝÏàͳһ¡£
select d.deptno,d.dname,d.loc,nvl(temp.count,0),nvl(temp.avg,0)
from dept d,(
select deptno dno,count(empno) count,avg(sal)
avg
from emp
group by deptno) temp
where d.deptno=temp.dno(+); |
Õâ¸ö×Ó²éѯºÍ֮ǰµÄÁ½ÖÖ·½·¨µÄ±È½Ï£º
1¡¢×Ó²éѯÖÐͳ¼ÆµÄ¼Ç¼ÊÇ14Ìõ£¬×îÖÕͳ¼ÆµÄÏÔʾ½á¹ûÊÇ3Ìõ½á¹û
2¡¢dept±íÖ®ÖÐÒ»¹²ÓÐ4Ìõ¼Ç¼
3¡¢Èç¹ûÏÖÔÚ²úÉúµÑ¿¨¶ù»ýµÄ»°Ö»ÓÐ12Ìõ£¬ÔÚ¼ÓÉϹÍÔ±µÄ14Ìõ£¬Ò»¹²²Å26Ìõ
ÔÚ¿ª·¢ÖУ¬Ê¹ÓÃ×Ó²éѯ¿ÉÒÔÌá¸ßЧÂʺͽÚÊ¡ÐÔÄÜ£¬´ó²¿·ÖÇé¿öÏ£ºÈç¹û×îÖÕ²éѯ½á¹ûÖгöÏÖÁËselectÓï¾ä£¬µ«ÊÇÓÖ²»ÄÜÖ±½ÓʹÓÃͳ¼Æº¯Êýʱ£¬¾ÍÔÚ×Ó²éѯÖÐͳ¼ÆÐÅÏ¢¡£
Êý¾Ý¸üÐÂ(ÖØµã)
Ôöɾ¸Ä ²é
Êý¾Ý¸üаüÀ¨Êý¾ÝµÄÔö¼Ó¡¢Ð޸ġ¢É¾³ý¡£
ΪÁË×öʵÑ飬ÎÒÃǽ«emp±í¸´ÖÆÒ»·Ý£¬Ê¹ÓÃÒÔÏÂÖ¸Á
create table
myemp as select * from emp; |
ÕâÖÖÓï·¨ÊÇoracleÖ§³ÖµÄ£¬ÆäËûµÄÊý¾Ý¿â²»Ò»Ñù
Êý¾ÝµÄÔö¼Ó
Óï·¨£º
INSERT INTO ±íÃû³Æ [(×Ö¶Î1,×Ö¶Î2,×Ö¶Î3,¡)] VALUES(Öµ1,Öµ2,Öµ3,¡)
×¢Ò⣺Èç¹ûÐèÒª½øÐÐÔö¼ÓÊý¾ÝµÄ»°£¬ÔòÒÔϵļ¸ÖÖÊý¾ÝÀàÐÍÒª·Ö±ð´¦Àí£º
Ôö¼ÓÊý×Ö£ºÖ±½Ó±àдÊý×Ö£¬È磺123£»
Ôö¼Ó×Ö·û´®£º×Ö·û´®Ó¦¸ÃʹÓᱡ¯¡±ÉùÃ÷£»
Ôö¼ÓDATEÊý¾Ý£º
µÚÒ»ÖÖ£º¿ÉÒÔ°´ÕÕÒÑÓеÄ×Ö·û´®µÄ¸ñʽ±àд×Ö·û´®£¬È磺¡®20-6ÔÂ-06¡¯£»
µÚ¶þÖÖ£ºÀûÓÃTO_DATEº¯Êý½«×Ö·û´®±äΪDATEÐÍÊý¾Ý£»
µÚÈýÖÖ£ºÈç¹ûÉèÖõÄʱ¼äΪµ±Ç°ÏµÍ³Ê±¼ä£¬ÔòʹÓÃSYSDATE;
¶ÔÓÚÊý¾ÝµÄÔö¼ÓÓÐÁ½ÖÖ²Ù×÷¸ñʽ£º
ÍêÕûÐÍ£º
1.
insert into
myemp (empno,ename,hiredate,sal,mgr,job,comm)
values (8888,¡¯zhangsan¡¯,TO_DATE(¡®1960-08-17¡¯,¡¯yyyy-mm-dd¡¯),8000,7369,¡¯daza¡¯,1000); |
2.
insert into
myemp (empno,ename,hiredate,sal,mgr,job,deptno)
values (8889,¡¯lisi¡¯,SYSDATE,3000,7369,¡¯daza¡¯,30);
|
¼ò±ãÐÍ£º²»Ð´ÁÐÃû³Æ
´íÎó£º
insert into
myemp
values (8889,¡¯lisi¡¯,SYSDATE,3000,7369,¡¯daza¡¯,30);
|
ÕýÈ·£ºÐèÒª°´ÕÕÁÐÃû³ÆµÄ˳ÐòÀ´Ð´£¬±ØÐë·ûºÏ×ֶεÄÒªÇó£¬Ò»°ã¿ª·¢Öв»Ê¹ÓÃ
insert into
myemp values (8890,¡¯wangwu¡¯,¡¯daza¡¯,7369,sysdate,3000,null,30); |
Êý¾ÝµÄÐÞ¸Ä
Óï·¨£º
UPDATE ±íÃû³Æ SET ¸üÐÂ×Ö¶Î1=¸üÐÂÖµ1,¸üÐÂ×Ö¶Î2=¸üÐÂÖµ2,¡[WHERE ¸üÐÂÌõ¼þ(s)];
ʾÀý£»
¸üÐÂÔ±¹¤±àºÅΪ7369µÄÔ±¹¤µÄ¹¤×ÊΪ5000£¬½±½ðΪ2000£¬Ö°Î»Éý¼¶Îª¡¯MANAGER¡¯,ְλ¸üÐÂʱ¼äΪµ±Ç°Ê±¼ä
update myemp
set sal=5000,comm=2000,job=¡¯MANAGER¡¯,hiredate=sysdate
where empno=7369; |
ËùÓÐÔ±¹¤µÄ¹¤×Êͳһ¸ÄΪ7500
update myemp
set sal=7500; |
×¢Ò⣺Èç¹û¸üеÄʱºò²»¼ÓÉϸüÐÂÌõ¼þ£¬ÔòÒâζןüÐÂÈ«²¿Êý¾Ý£¬Ò»¶¨Òª×¢Ò⣬µ±Êý¾ÝÁ¿´ïµ½Ò»¶¨³Ì¶Èʱ£¬ÕâÖÖ·½Ê½²»¿ÉÈ¡¡£
ΪÁ˺óÃæ×öʵÑ飬ÎÒÃÇÐèÒª»Ø¹öÊý¾Ý±í
Êý¾ÝµÄɾ³ý
Óï·¨£º
DELETE FROM ±íÃû³Æ [WHERE ɾ³ýÌõ¼þ(s)];
ʾÀý:
ɾ³ý1987ÄêÈëÖ°µÄÔ±¹¤µÄÐÅÏ¢
delete from
myemp where TO_CHAR(hiredate,¡¯yyyy¡¯)=1987; |
×¢Ò⣺Èç¹ûɾ³ýµÄʱºòûÓÐÏàӦƥÅäÌõ¼þµÄʱºò£¬Ôò¸üмǼΪ0£¬¸üвÙ×÷Ò²Ò»Ñù¡£
ɾ³ý±íÖеÄËùÓÐÊý¾Ý
×¢Ò⣺¶ÔÓÚɾ³ý²Ù×÷£¬¾¡¿ÉÄÜÉÙʹÓã¬ÒòΪɾ³ý²Ù×÷¶ÔÓÚ²éѯ²Ù×÷ҪΣÏÕÐí¶à¡£
Ìáʾ£º¶ÔÓÚɾ³ý²Ù×÷£¬ÔÚ¿ª·¢Ê±¶ÔÓÚËùÓеÄɾ³ý²Ù×÷֮ǰÏȸø³öÒ»¸öÌáʾ¿ò£¬ÒÔ·ÀÖ¹Îóɾ³ý¡£
ÊÂÎñ´¦Àí
¶ÔÓÚÊý¾Ý±íµÄ²Ù×÷£¬²éѯҪ±È¸üвÙ×÷¸ü°²È«£¬ÒòΪ¸üвÙ×÷ÓпÉÄÜ»á³öÏÖ´íÎ󣬵¼ÖÂûÓа´Õռȶ¨µÄÒªÇóÕýÈ·µÄÍê³É¸üвÙ×÷¡£
Ôںܶàʱºò¸üпÉÄÜÓɶàÌõÓï¾ä¹²Í¬Íê³É£¬ÈçÒøÐÐתÕË£º
-ÅжÏAµÄÕË»§ÉÏÊÇ·ñÓÐ5000W select yue+shouxufei>5000+sxf
from zhanghu where id=a
-ÅжÏBµÄÕË»§×´Ì¬ÊÇ·ñÕý³£ select id,status from zhanghu where
id=b
-´ÓAµÄÕË»§ÉÏÒÆ×ß5000W update zhanghu set yue-5000 where id=a
-ÏòBµÄÕË»§ÉÏÔö¼Ó5000W update zhanghu set yue+5000 where id=b
-ÏòÒøÐÐÖ§¸¶ÊÖÐø·Ñ5W update zhanghu set yue+shouxufei where
id=yinhang
ÒÔÉÏÎå¸öÊý¾Ý²Ù×÷ÊÇÒ»¸öÕûÌ壬¿ÉÒÔÀí½âΪһ¸öÍêÕûµÄÒµÎñ£¬Èç¹ûÆäÖеÚÈýµã³ö´í£¬ÆäËû²Ù×÷¸ÃÔõô°ì£¿
Èç¹ûÓвÙ×÷³öÏÖ´íÎó£¬ÄÇôÆäËû²Ù×÷Ó¦¸Ã²»ÔÙ¼ÌÐøÖ´ÐУ¬²¢ÇÒ¶¼»Ø¹éµ½×îÔʼµÄ״̬£¬¶øÕâÒ»¸öÁ÷³ÌµÄ²Ù×÷ʵ¼ÊÉϾÍÊÇÊÂÎñµÄ²Ù×÷¡£
»Ø¹ö֮ǰµÄ²Ù×÷
rollback;
Ôٴβ鿴myemp±í£¬È·ÈÏÆäÖеÄÊý¾ÝÇé¿ö
ËùÓеÄÊÂÎñ´¦Àí¶¼ÊÇÕë¶Ôÿһ¸ö»á»°½øÐеģ¬ÔÚoracleÖУ¬°Ñÿһ¸öÁ¬½Óµ½Êý¾Ý¿âµÄÓû§¶¼³ÆÎªÒ»¸ö»á»°,ÿһ¸ö»á»°Ö®¼ä±Ë´Ë¶ÀÁ¢£¬»¥²»Í¨ÐÅ£¬Ã¿Ò»¸ö»á»°¶ÀÏí×Ô¼ºµÄÊÂÎñ¿ØÖÆ£¬¶øÊÂÎñ¿ØÖÆÖ®ÖÐÖ÷ҪʹÓÃÁ½¸öÃüÁ
ÊÂÎñµÄ»Ø¹ö£ºROLLBACK,¸üвÙ×÷»Øµ½Ôµã
ÊÂÎñµÄÌá½»£ºCOMMIT,ÕæÕýµÄ·¢³ö¸üÐÂÇëÇó£¬Ò»µ©Ìá½»ºóÎÞ·¨»Ø¹ö
ʾÀý£º
ÔڻỰ1ÖÐɾ³ýÒ»ÌõÊý¾Ý£¬´ÓÁíÒ»¸ö»á»°À´²éѯÊý¾Ý
ȇȡ1 delete from myemp where empno=7369;
ȇȡ1 select * from myemp;
ȇȡ2 select * from myemp;
ÔڻỰ1Öлعö֮ǰµÄ¸üвÙ×÷£¬ÔÙ´Îɾ³ýÊý¾Ý£¬È»ºóÌá½»£¬ÔÙÔÚÁ½¸ö»á»°ÖвéѯÊý¾Ý,ÔڻỰ1ÖнøÐлعö·¢ÏÖÒѾÎÞ·¨»Ø¹öÁË¡£
ȇȡ1 delete from myemp where empno=7369;
ȇȡ1 commit;
ȇȡ1 select * from myemp;
ȇȡ2 select * from myemp;
×¢Ò⣺ÕâÖÖÊÂÎñ¿ØÖÆ»á³öÏÖһЩÎÊÌ⣬ÀýÈ磬ijһ¸ö»á»°ÔÚ¸üÐÂÊý¾Ý±íµÄʱºò»¹Ã»ÓÐÌá½»ÊÂÎñ£¬ÆäËû»á»°ÊÇÎÞ·¨½øÐиüÐµģ¬±ØÐëµÈ´ý֮ǰµÄ»á»°Ìá½»ºó²Å¿ÉÒÔ¡£
ʾÀý£º
ËÀËø,»á»°1Ö´Ðиüкó£¬ÔÚûÓÐÌύ֮ǰ£¬»á»°2½øÐиüлá³öÏֵȴý
ȇȡ1 update myemp set sal=9000 where empno=7839;
ȇȡ2 update myemp set sal=8000 where empno=7839;
ÕâÖÖÎÊÌâ´Ó´óµÄ·½ÃæÀ´½²¿ÉÒÔ³Æ×÷ËÀËø£¬µ«ÊÇÔÚoracleÖ®ÖÐËÀËøÓкܶàÖÖÀà.
ËùÓеÄÊý¾Ý¸üÐÂÒ»¶¨¶¼»áÊܵ½ÊÂÎñµÄ¿ØÖÆ¡£
Êý¾ÝαÁÐ
ROWNUM(ÖØµã)
ROWNUMΪÿһ¸öÏÔʾµÄ¼Ç¼¶¼»á×Ô¶¯µÄËæ×ŲéѯÉú³ÉµÄÐкš£
ʾÀý£º
²éѯemp±íµÄrownum£¬empno,ename,job,hiredateºÍsal
select rownum,empno,ename,job,hiredate,sal
from emp; |
¸ÃÐкŲ»ÊÇÓÀ¾ÃµÄ£¬»áËæ×ŲéѯµÄÏÔʾ±ä»¯¶ø±ä»¯
²éѯemp±íµÄrownum£¬empno,ename,job,hiredateºÍsal
select rownum,empno,ename,job,hiredate,sal
from emp where deptno=30; |
²éѯǰÎåÌõ¼Ç¼
select rownum,empno,ename,job,hiredate,sal
from emp where rownum<=5; |
²éѯ6-10ÐмǼ
´íÎó×ö·¨£º
select rownum,empno,ename,job,hiredate,sal from emp
where rownum between 6 and 10;
Ö´ÐÐÍê³Éºó²¢Ã»Óзµ»ØÈκÎÊý¾Ý£¬ÒòΪrownum²»ÊÇÕæÊµÁУ¬ÕýÈ·µÄ˼·ÊÇÏȲéѯǰ10Ìõ¼Ç¼£¬È»ºóÔÙ²éѯºó5Ìõ¼Ç¼£¬ÐèҪʹÓÃ×Ó²éѯ
select * from
(
select rownum rn,empno,ename,job,hiredate,sal
from emp
where rownum<=15) temp
where temp.rn>10; |
ROWID
ROWID±íʾµÄÊÇÿһÐÐÊý¾Ý±£´æµÄÎïÀíµØÖ·µÄ±àºÅ¡£
²é¿´ROWID
select rowid,deptno,dname,loc
from dept; |
²é¿´Íê³Éºó£¬±£´æ¸Ã½á¹û£¬ÏÂÃæµÄ°¸ÀýÒªºÍÕâ¸ö½á¹û×ö±È½Ï
ÿһÌõ¼Ç¼µÄROWID¶¼²»»áÖØ¸´£¬ËùÒÔ¼´Ê¹ËùÓÐÁеÄÄÚÈÝÖØ¸´£¬ROWIDÒ²²»»áÖØ¸´.
¸ñʽΪ£ºAAAL+XAAEAAAAANAAA
ÆäÖУº Êý¾Ý¶ÔÏóºÅ£ºAAAL+X
Ïà¶ÔÎļþºÅ£ºAAE
Êý¾Ý¿éºÅ£º AAAAAN
Êý¾ÝÐкţº AAA
×ܽ᣺
1¡¢¶à±í²éѯ£ºÔÚ½øÐвéѯÓï¾ä±àдµÄʱºò£¬Ò»¶¨ÒªÈ·¶¨ËùÐèÒª¹ØÁªµÄÊý¾Ý±í£¬¶øÇÒÖ»ÒªÊDZíµÄ¹ØÁª²éѯ£¬¾ÍÒ»¶¨»á´æÔڵѿ¨¶ù»ýµÄÎÊÌ⣬ʹÓùØÁª×Ö¶ÎÏû³ý´ËÎÊÌâ¡£ÔÚʹÓöà±í²éѯµÄʱºòÒª¿¼Âǵ½×óÓÒÁ¬½ÓµÄÎÊÌ⣬oracleÖ®ÍâµÄÊý¾Ý¿â¿ÉÒÔʹÓÃSQL1999Óï·¨¿ØÖÆ×óÓÒÁ¬½Ó¡£
2¡¢ËùÓеÄͳ¼Æº¯ÊýÊÇÓÃÓÚ½øÐÐÊý¾Ýͳ¼Æ²Ù×÷µÄ£¬¶øÍ³¼ÆÒªÔÚ·Ö×éÖнøÐÐ/»òÕßÊǵ¥¶ÀʹÓ㬷Ö×éʹÓÃGROUP
BY×Ӿ䣬ÊÇÔÚijһÁÐÉÏ´æÔÚÖØ¸´Êý¾ÝµÄʱºò²Å»áʹÓ÷Ö×é²Ù×÷£¬¶ø·Ö×éºóµÄ¹ýÂËʹÓÃHAVING×Ó¾äÍê³É£¬ËùÓеķÖ×麯Êý¿ÉÒÔǶÌ×£¬µ«ÊÇǶÌ×Ö®ºóµÄ·Ö×麯ÊýÖ®Öв»ÄÜÔÙÓÐÆäËûµÄ²éѯ×ֶΣ¬°üÀ¨·Ö×é×ֶΡ£
3¡¢×Ó²éѯ£º½áºÏÏÞ¶¨²éѯ¡¢¶à±í²éѯ¡¢·Ö×éͳ¼Æ²éѯÍê³É¸÷¸ö¸´ÔÓ²éѯµÄ²Ù×÷£¬×Ó²éѯһ°ãÔÚWHEREºÍFROMÖ®ºó³öÏֽ϶ࡣ
4¡¢Êý¾Ý¿âµÄ¸üвÙ×÷Ò»¶¨ÒªÊܵ½ÊÂÎñµÄ¿ØÖÆ£¬ÊÂÎñµÄÁ½¸öÃüÁî:COMMIT,ROLLBACK,ÿһ¸öÁ¬½Óµ½Êý¾Ý¿âÉϵÄÓû§¶¼ÓÃÒ»¸ö»á»°À´±íʾ¡£
5¡¢Êý¾Ý±íµÄ·ÖÒ³²éѯÏÔʾÒÀ¿¿ROWNUMαÁУ¬Õâ¸öÔÚÒÔºóµÄ¿ª·¢µ±Öбض¨ÒªÊ¹Óᣠ|