¼òµ¥²éѯ²¿·ÖsqlÁ·Ï°Ìâ
-- Ñ¡Ôñ²¿ÃÅ30ÖеÄËùÓÐÖ°¹¤
select * from emp where deptno = 30;
-- ÁгöËùÓÐÒµÎñÔ±(CLERK)µÄÐÕÃû£¬±àºÅ£¬ºÍ²¿ÃűàºÅ
select e.ename, e.empno, e.deptno from emp e where e.job = 'CLERK';
-- ÕÒ³ö½±½ð¸ßÓÚн½ðµÄÔ±¹¤
select * from emp where comm > sal;
-- ÕÒ³ö½±½ð¸ßÓÚн½ðµÄ60%µÄÔ±¹¤
select * from emp where comm > sal * 0.6;
-- ÕÒ³ö²¿ÃÅ10ÖÐËùÓоÀí(MANAGER)ºÍ²¿ÃÅ20ÖÐËùÓÐÒµÎñÔ±(CLERK)µÄÏêϸ×ÊÁÏ
select * from emp e
where e.deptno = 10 and e.job = 'MANAGER'
or e.deptno = 20 and e.job = 'CLERK';
select * from emp e
where (e.deptno = 10 and e.job = 'MANAGER')
or (e.deptno = 20 and e.job = 'CLERK');
select * from emp e where e.deptno = 10 and e.job = 'MANAGER'
union
select * from emp e where e.deptno = 20 and e.job = 'CLERK';
-- ÕÒ³ö²¿ÃÅ10ÖÐËùÓоÀí(MANAGER),²¿ÃÅ20ÖÐËùÓÐÒµÎñÔ±(CLERK),¼È²»ÊǾÀíÓÖ²»ÊÇÒµÎñÔ±µ«Æäнˮ´óÓÚµÈÓÚ2000µÄËùÓÐÔ±¹¤µÄÏêϸ×ÊÁÏ
select * from emp e where e.deptno = 10 and e.job = 'MANAGER'
union
select * from emp e where e.deptno = 20 and e.job = 'CLERK'
union
select * from emp e where e.sal > 2000 and e.job not in('MANAGER', 'CLERK');
-- ÕÒ³öÊÕÈ¡½±½ðµÄÔ±¹¤µÄ²»Í¬¹¤×÷
select distinct e.job from emp e;
-- ÕÒ³ö²»ÊÕÈ¡½±½ð»òÊÕÈ¡µÄ½±½ðµÍÓÚ100µÄÔ±¹¤
select * from emp e where e.comm is null or e.comm < 100;
-- ÕÒ³ö¸÷Ôµ¹ÊýµÚ3ÌìÊܹ͵ÄËùÓÐÔ±¹¤
select * from emp e where e.hiredate between last_day(hiredate)-3 and last_day(hiredate);
-- ÕÒ³öÔçÓÚ30ÄêǰÊܹ͵ÄÔ±¹¤
select * from emp e where (sysdate - e.hiredate)/365 > 30;
-- ÒÔÊ××Öĸ´óдµÄ·½Ê½ÏÔʾËùÓÐÔ±¹¤µÄÐÕÃû
select initcap(ename) from emp;
-- ÏÔʾÕýºÃΪ5¸ö×Ö·ûµÄÔ±¹¤ÐÕÃû
select * from emp where length(ename) = 5;
-- ÏÔʾ²»´øÓС±R¡±µÄÔ±¹¤ÐÕÃû
select * from emp where ename not like '%K%';
-- ÏÔʾËùÓÐÔ±¹¤ÐÕÃûµÄǰÈý¸ö×Ö·û
select substr(ename, 0, 3) from emp;
-- ÏÔʾËùÓÐÔ±¹¤µÄÐÕÃû£¬²¢Óá¯a¡¯Ìæ»»ËùÓС¯A¡¯
select replace(ename, 'A', 'a') from emp;
-- ÏÔʾÂú30Äê·þÎñÄêÏÞµÄÔ±¹¤ÐÕÃûºÍÊܹÍÈÕÆÚ
select * from emp where (sysdate - hiredate)/365 > 30;
-- ÏÔʾԱ¹¤µÄÏêϸ×ÊÁÏ£¬°´ÐÕÃûÓÉ´óµ½Ð¡ÅÅÐò
select * from emp order by ename desc;
-- ÏÔʾԱ¹¤µÄÐÕÃûºÍÊܹÍÈÕÆÚ£¬¸ù¾ÝÆä·þÎñÄêÏÞ£¬½«×îÀϵÄÔ±¹¤ÅÅÔÚ×îÇ°Ãæ
select ename, hiredate from emp order by hiredate asc;
-- ÏÔʾËùÓÐÔ±¹¤µÄÐÕÃû£¬¹¤×÷ºÍн½ð£¬°´¹¤×÷½µÐòÅÅÁУ¬Èô¹¤×÷ÏàͬÔò°´Ð½½ðÉýÐòÅÅÐò
select ename, job, sal from emp order by job desc, sal asc;
select ename, job, sal from emp order by 2 desc, 3;
-- ÏÔʾËùÓÐÔ±¹¤µÄÐÕÃû£¬¼ÓÈ빫˾µÄÄê·ÝºÍÔ·ݣ¬°´ÊܹÍÈÕÆÚËùÔÚµÄÔÂÅÅÐò£¬ÈôÔ·ÝÏàͬ£¬Ôò½«×îÔçÄê·ÝÅÅÔÚ×îÇ°Ãæ
select ename, to_number(to_char(hiredate, 'yyyy')) Year, to_number(to_char(hiredate, 'mm')) from emp order by 3 desc, 2 asc;
-- ÏÔʾһ¸öÔÂΪ30ÌìµÄÇé¿öËùÔ±¹¤µÄÈÕн½ð£¬ºöÂÔÓàÊý
select round(sal/30) ÈÕн from emp;
-- ÕÒ³öÔÚ(ÈκÎÄê·Ý)2ÔÂÊÜÆ¸µÄËùÓÐÔ±¹¤
select * from emp where to_number(to_char(hiredate, 'mm')£©= 2;
-- ¶Ôÿ¸öÔ±¹¤£¬ÏÔʾÆä¼ÓÈ빫˾µÄÌìÊý
select ename, round(sysdate - hiredate) Days from emp;
-- ÏÔʾÐÕÃûÖÐÈÎÒâλÖðüº¬¡°A¡±µÄËùÓÐÔ±¹¤ÐÕÃû
select * from emp where upper(ename) like '%A%';
-- ÒÔÄêÔÂÈÕ·½Ê½ÏÔʾËùÓÐÔ±¹¤µÄ·þÎñÄêÏÞ
select ename, hiredate,
trunc(months_between(sysdate, hiredate) /12) year ,
trunc(mod(months_between(sysdate, hiredate) , 12 ) ) months ,
trunc(sysdate - add_months(hiredate,months_between(sysdate, hiredate))) day
from emp ;