{"id":438,"date":"2007-12-30T22:43:56","date_gmt":"2007-12-30T14:43:56","guid":{"rendered":"http:\/\/blog.smallken.ink\/2007\/12\/30\/uncategorized\/438.html"},"modified":"2007-12-30T22:43:56","modified_gmt":"2007-12-30T14:43:56","slug":"db2-9-sql-%e7%ad%86%e8%a8%98","status":"publish","type":"post","link":"https:\/\/blog.smallken.site\/?p=438","title":{"rendered":"DB2 9 SQL \u7b46\u8a18"},"content":{"rendered":"<p><strong>SELECT<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ &#8216;ABC&#8217; \u56fa\u5b9a\u503c<\/font><br \/>SELECT deptno ,admrdept ,<strong>&#8216;ABC&#8217;<\/strong> AS abc FROM department WHERE deptname LIKE &#8216;%ING%&#8217; ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ department.* department \u7684\u6240\u6709 Columns<br \/><\/font>SELECT deptno ,<strong>department.*<\/strong> FROM department WHERE deptname LIKE&nbsp;&nbsp; &#8216;%ING%&#8217; ORDER BY 1;<\/p>\n<p><strong>Fetch<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ fetch first 3 rows only \u53ea\u9078\u524d\u97623\u7b46, \u96a8\u6a5f3\u7b46<\/font><br \/>SELECT years ,name ,id FROM staff <strong>FETCH FIRST 3 ROWS ONLY<\/strong>;  <\/p>\n<p><font color=\"#000080\">\/\/ \u4f9d years \u905e\u6e1b\u6392\u5e8f, \u9078\u524d\u97623\u7b46<\/font><br \/>SELECT years ,name ,id FROM staff WHERE years IS NOT NULL <strong>ORDER BY years DESC<\/strong> FETCH FIRST 3 ROWS ONLY;  <\/p>\n<p><font color=\"#000080\">\/\/ \u4f9d years \u53ca id \u905e\u6e1b\u6392\u5e8f, \u9078\u524d\u97623\u7b46<br \/><\/font>SELECT years ,name ,id FROM staff WHERE years IS NOT NULL <strong>ORDER BY&nbsp; years DESC ,id DESC<\/strong> FETCH FIRST 3 ROWS ONLY;<\/p>\n<p><strong>Correlation Name<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ a \u548c b \u53eb Correlation Name, \u82e5\u6709\u8981\u91cd\u8986\u4f7f\u7528 table \u7684\u8a71,\u53ef\u4ee5\u4f7f\u7528 Correlation Name<br \/><\/font>SELECT a.empno ,a.lastname FROM employee <strong>a<\/strong> ,(SELECT MAX(empno) AS&nbsp; empno FROM employee) AS <strong>b<\/strong> WHERE <strong>a.empno = b.empno<\/strong>;<\/p>\n<p><strong>Renaming Fields<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ AS \u7528\u4f86 Renaming Fields, \u5c31\u662f\u5217\u51fa\u4f86\u6b04\u4f4d\u7684\u6a19\u984c\uff0cRenaming Fields \u4e0d\u53ef\u4ee5\u4f7f\u7528\u5728<strong>GROUP BY\u3001WHERE\u3001HAVING<\/strong><\/font><br \/>SELECT empno AS <strong>e_num<\/strong> ,midinit AS <strong>&#8220;m int&#8221;<\/strong> ,phoneno AS <strong>&#8220;&#8230;&#8221; <\/strong>FROM employee WHERE empno &lt; &#8216;000030&#8217; ORDER BY 1;  <\/p>\n<p><strong>Null Values<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ Null Values\uff0c\u4e0d\u7b49\u65bc\u7a7a\u767d\uff0c\u4f7f\u7528AVG()\u3001SUM()\u3001MAX()\u3001MIX() \u6642\u6703\u7565\u904eNULL<\/font><br \/>SELECT AVG(comm) AS a1 ,SUM(comm) \/ COUNT(*) AS a2 FROM staff WHERE id &lt; 100;  <\/p>\n<p><font color=\"#000080\">\/\/ null \u662f\u7279\u6b8a\u7684\u4e00\u500b\u503c\uff0c\u662f\u4f7f\u7528 IS NULL\uff0cIS NOT NULL \u4f86\u6bd4\u8f03\uff0c\u800c\u975e\u4f7f\u7528 &#8216;=&#8217;<\/font><br \/>SELECT id, comm FROM staff WHERE id &lt; 100 AND <font color=\"#000080\">id IS NOT NULL<\/font> AND<font color=\"#000080\"> omm IS NULL<\/font> AND NOT comm <font color=\"#000080\">IS NOT NULL <\/font>ORDER BY id;  <\/p>\n<p><strong>Quotes<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ \u5728\u5b57\u4e32\u8868\u793a\u88e1\u97622\u500b\u55ae\u5f15\u865f&#8217;\u624d\u7b971\u500b\uff0c\u2192 JOHN JOHN&#8217;S &#8216;JOHN&#8217;S&#8217; &#8220;JOHN&#8217;S&#8221;<\/font><br \/>SELECT &#8216;JOHN&#8217; AS J1 ,&#8217;JOHN&#8221;S&#8217; AS J2 ,&#8221;&#8217;JOHN&#8221;S&#8221;&#8217; AS J3 ,'&#8221;JOHN&#8221;S&#8221;&#8216; AS J4 FROM staff WHERE id = 10;  <\/p>\n<p><strong>Double-quotes<\/strong> <\/p>\n<p><!--more--><\/p>\n<p><font color=\"#000080\">\/\/ Renaming fields \u4f7f\u7528\u96d9\u5f15\u865f&#8221;\uff0c\u4e5f\u662f2\u500b\u96d9\u5f15\u865f\u624d\u7b971\u500b\u2192 USER ID D# #Y &#8216;TXT&#8217; &#8220;quote&#8221; fld<\/font><br \/>SELECT id AS &#8220;USER ID&#8221; ,dept AS &#8220;D#&#8221; ,years AS &#8220;#Y&#8221; ,&#8217;ABC&#8217; AS &#8220;&#8216;TXT'&#8221; ,'&#8221;&#8216; AS &#8220;&#8221;&#8221;quote&#8221;&#8221; fld&#8221; FROM staff s WHERE id &lt; 40 ORDER BY &#8220;USER ID&#8221;;  <\/p>\n<p><strong>ANY\u3001ALL<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ ANY\uff0cjob \u53ea\u8981\u7b26\u5408\u5f8c\u9762\u5168\u90e8\u6e05\u55ae\u5176\u4e2d\u4e00\u500b\uff1bALL\uff0cid \u5fc5\u9808\u5c0f\u65bc\u6216\u7b49\u65bc\u5f8c\u9762\u6e05\u55ae\u5168\u90e8<br \/><\/font>SELECT id, job FROM staff WHERE job =<strong> ANY<\/strong> (SELECT job FROM staff) AND id &lt;=<strong> ALL<\/strong> (SELECT id FROM staff) ORDER BY id;  <\/p>\n<p><strong>Multi-value Check<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ \u4e00\u6b21\u6bd4\u8f032\u500b\u503c<br \/><\/font>SELECT id, dept, job FROM staff WHERE <strong>(id,dept) = (30,28)<\/strong> OR <strong>(id,years) = (90, 7)<\/strong> OR <strong>(dept,job) = (38,&#8217;Mgr&#8217;)<\/strong> ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ \u4e00\u6b21\u6bd4\u8f032\u500b\u503c\u4e5f\u53ef\u4ee5\u5beb\u6210\u5982\u4e0b<br \/><\/font>SELECT id, dept, job FROM staff WHERE (<strong>id = 30 AND dept = 28<\/strong>) OR (<strong>id = 90 AND years = 7<\/strong>) OR (<strong>dept = 38 AND job = &#8216;Mgr&#8217;<\/strong>) ORDER BY 1;  <\/p>\n<p><strong>BETWEEN<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ id \u5728\u4e0d\u5728 10~30 \u9019\u500b\u7bc4\u570d\uff0c\u5305\u542b10\u820730\u672c\u8eab\uff0c\u901a\u5e38\u8981\u524d\u9762\u6578\u5b57\u5c0f\uff0c\u5f8c\u9762\u6578\u5b57\u5927<\/font><br \/>SELECT id, job FROM staff WHERE id <strong>BETWEEN 10 AND 30<\/strong> AND id NOT BETWEEN 30 AND 10 AND NOT id NOT BETWEEN 10 AND 30 ORDER BY id;<\/p>\n<p><font size=\"2\"><\/font> <\/p>\n<p><strong>id BETWEEN 10 AND 30<\/strong> \u7b49\u65bc <strong>id&gt;=10 and id&lt;=30<\/strong>  <\/p>\n<p><strong>EXISTS<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ \u53ea\u8981\u53e6\u5916\u4e00\u500b table \u6709\u5b58\u5728\u7684\u8a71<\/font><br \/>SELECT id, job FROM staff a WHERE <strong>EXISTS<\/strong> (SELECT * FROM staff b WHERE b.id = a.id AND b.id &lt; 50) ORDER BY id;  <\/p>\n<p><strong>IN<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ id \u6709\u7121\u5728 10 or 20 or 30<\/font><br \/>SELECT id, job FROM staff a WHERE <strong>id IN (10,20,30)<\/strong> AND<strong> id IN (SELECT id FROM staff)<\/strong> AND <strong>id NOT IN 99<\/strong> ORDER BY id;<\/p>\n<p><font color=\"#000080\">\/\/ \u540c\u6642\u6bd4\u5c0d2\u6b04\u4f4d\uff0c\u6709\u7121\u7b26\u5408\u5728 select \u8a9e\u6cd5\u627e\u51fa\u4f86\u7684\u8cc7\u6599\u88e1\u9762<\/font><br \/>SELECT empno, lastname FROM employee WHERE <strong>(empno, &#8216;AD3113&#8217;)<\/strong> IN <strong>(SELECT empno, projno FROM emp_act WHERE emptime &gt; 0.5)<\/strong> ORDER BY 1;<\/p>\n<p><strong>LIKE<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ \u6bd4\u5c0d\u5b57\u4e32\uff0c_ \u4ee3\u88681\u500b\u5b57\u5143\uff0c% \u4ee3\u88680\u6216\u591a\u500b\u5b57\u5143<\/font><br \/>SELECT id, name FROM staff WHERE name LIKE <strong>&#8216;S%n&#8217;<\/strong> OR name LIKE <strong>&#8216;_a_a%&#8217;<\/strong> OR name LIKE<strong> &#8216;%r_%a&#8217;<\/strong> ORDER BY id;  <\/p>\n<p><font color=\"#000080\">\/\/ \u53ef\u81ea\u8a02 ESCAPE<\/font><br \/>SELECT id FROM staff WHERE id = 10 <br \/>AND &#8216;ABC&#8217; LIKE &#8216;AB%&#8217; <br \/>AND &#8216;A%C&#8217; LIKE&nbsp; A\/%C&#8217; <strong>ESCAPE &#8216;\/&#8217;<\/strong> <br \/>AND &#8216;A_C&#8217; LIKE &#8216;A\\_C&#8217; <strong>ESCAPE &#8216;\\&#8217; <br \/><\/strong>AND &#8216;A_$&#8217; LIKE &#8216;A$_$$&#8217; <strong>ESCAPE &#8216;$&#8217;;<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ \u5e7e\u500b match \u7684\u7bc4\u5217<\/font><br \/>LIKE <strong>&#8216;AB%&#8217;<\/strong> Finds <strong>AB, any string<br \/><\/strong>LIKE <strong>&#8216;AB%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds<strong> AB, any string<br \/><\/strong>LIKE <strong>&#8216;AB+%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB%<br \/><\/strong>LIKE <strong>&#8216;AB++&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB+<br \/><\/strong>LIKE <strong>&#8216;AB+%%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB%<\/strong>, any string<br \/>LIKE <strong>&#8216;AB++%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB+<\/strong>, any string<br \/>LIKE <strong>&#8216;AB+++%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB+%<br \/><\/strong>LIKE <strong>&#8216;AB+++%%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB+%<\/strong>, any string<br \/>LIKE <strong>&#8216;AB+%+%%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB%%<\/strong>, any string<br \/>LIKE <strong>&#8216;AB++++&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB++<br \/><\/strong>LIKE <strong>&#8216;AB+++++%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB++%<br \/><\/strong>LIKE <strong>&#8216;AB++++%&#8217;<\/strong> ESCAPE &#8216;+&#8217; Finds <strong>AB++<\/strong>, any string<br \/>LIKE <strong>&#8216;AB+%++%&#8217; <\/strong>ESCAPE &#8216;+&#8217; Finds <strong>AB%+<\/strong>, any string  <\/p>\n<p><strong><font size=\"2\">And vs OR<\/font><\/strong><\/p>\n<p><font color=\"#000080\">\/\/ AND \u6bd4 OR \u5148\u505a\uff0c\u82e5\u6709()\u88e1\u9762\u5148\u505a<\/font><br \/>SELECT * FROM table1 WHERE col1 = &#8216;C&#8217;<strong> AND<\/strong> col1 &gt;= &#8216;A&#8217; <strong>OR <\/strong>col2 &gt;= &#8216;AA&#8217; ORDER BY col1;  <\/p>\n<p>SELECT * FROM table1 WHERE col1 = &#8216;C&#8217; <strong>AND<\/strong> <strong>(<\/strong>col1 &gt;= &#8216;A&#8217; <strong>OR<\/strong> col2 &gt;= &#8216;AA&#8217;<strong>) <\/strong>ORDER BY col1;  <\/p>\n<p><strong>CAST<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ CAST \u578b\u614b\u8f49\u63db\uff0c\u82e5\u5f37\u5236\u8f49\u6210 INTEGER \u6703\u7121\u689d\u4ef6\u6368\u53bb\u5c0f\u6578\u9ede<br \/><\/font>SELECT id ,salary ,<strong>CAST(salary AS INTEGER)<\/strong> AS sal2 FROM staff WHERE id &lt; 30 ORDER BY id;  <\/p>\n<p><font color=\"#000080\">\/\/ CHAR \u7684\u578b\u614b\u8f49\u63db\uff0c\u82e5\u9577\u5ea6\u592a\u9577\u6703\u88ab\u5207\u6389<br \/><\/font>SELECT id ,job ,<font color=\"#000000\"><strong>CAST(job AS CHAR(3))<\/strong><\/font> AS job2 FROM staff WHERE id &lt; 30 ORDER BY id;  <\/p>\n<p><strong>VALUES<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ \u4f7f\u7528 VALUES \u505a\u51fa\u7684<strong>\u66ab\u6642<\/strong>\u8cc7\u6599\u8868<\/font><br \/>VALUES 6 &lt;= 1 row, 1 column<br \/>VALUES (6) &lt;= 1 row, 1 column<br \/>VALUES 6, 7, 8 &lt;= 3 row, 1 columns<br \/>VALUES (6), (7), (8) &lt;= 3 rows, 1 column<br \/>VALUES (6,66), (7,77), (8,NULL) &lt;= 3 rows, 2 columns<\/p>\n<p><font color=\"#000080\">\/\/ WITH&#8230;VALUES \u53ef\u4ee5\u505a\u51fa\u66ab\u5b58\u7684 table\uff0c\u57f7\u884c\u7d50\u675f table \u5c31\u5931\u6548\uff0cex.\u641c\u5c0b\u822a\u73ed\u8868\u3000<\/font><br \/><strong>WITH<\/strong> temp1 (col1, col2) AS<strong> (VALUES ( 0, &#8216;AA&#8217;) ,( 1, &#8216;BB&#8217;) ,( 2, NULL))<\/strong>SELECT * FROM temp1;  <\/p>\n<p><font color=\"#000080\">\/\/ temp2 \u7684\u8cc7\u6599\u81e8\u6642\u7531 temp1 \u5f97\u4f86<\/font><br \/>WITH <strong>temp1<\/strong> (col1, col2, col3) AS<br \/>(VALUES ( 0, &#8216;AA&#8217;, 0.00),( 1, &#8216;BB&#8217;, 1.11),( 2, &#8216;CC&#8217;, 2.22))<br \/>,<strong>temp2 <\/strong>(col1b, colx) AS<br \/>(SELECT col1 ,col1 + col3 FROM <strong>temp1<\/strong>)<br \/>SELECT * FROM <strong>temp2<\/strong>;  <\/p>\n<p><strong>CASE<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ \u5728\u57f7\u884c\u904e\u7a0b\u4e2d\u9078\u64c7\u6539\u8b8a\u6307\u5b9a\u6b04\u4f4d\u7684\u503c\uff0c\u6709\u9ede\u50cfswitch<\/font><br \/>SELECT Lastname ,sex AS sx<br \/>,<strong>CASE sex<br \/>&nbsp;&nbsp; WHEN &#8216;F&#8217; THEN &#8216;FEMALE&#8217; <br \/>&nbsp;&nbsp; WHEN &#8216;M&#8217; THEN &#8216;MALE&#8217;<br \/>&nbsp;&nbsp; ELSE NULL<br \/>END<\/strong> AS sexx<br \/>FROM employee WHERE lastname LIKE &#8216;J%&#8217; ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ \u4e5f\u53ef\u4ee5\u5beb\u6210\u5982\u4e0b<\/font><strong><font color=\"#000080\"> sex = &#8216;F&#8217;<\/font> <br \/><\/strong>SELECT lastname ,sex AS sx<br \/>,<strong>CASE<br \/>&nbsp;&nbsp;&nbsp; WHEN sex = &#8216;F&#8217; THEN &#8216;FEMALE&#8217;<br \/>&nbsp;&nbsp;&nbsp; WHEN sex = &#8216;M&#8217; THEN &#8216;MALE&#8217; <br \/>&nbsp;&nbsp;&nbsp; ELSE NULL<br \/>END<\/strong> AS sexx<br \/>FROM employee WHERE lastname LIKE &#8216;J%&#8217; ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ midinit \u8207 sex \u6bd4\u8f03\uff0c\u53d6\u5927\u503c<\/font><br \/>SELECT lastname ,midinit AS mi ,sex AS sx<br \/>,<strong>CASE<br \/>&nbsp;&nbsp;&nbsp; WHEN midinit &gt; sex&nbsp;&nbsp; THEN midinit<br \/>&nbsp;&nbsp;&nbsp; ELSE sex<br \/>END<\/strong> AS mx<br \/>FROM employee WHERE lastname LIKE &#8216;J%&#8217; ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ \u914d\u5408SUM()\u8070\u660e\u5730\u8a08\u7b97 Femail\u3001Male \u500b\u6578<br \/><\/font>SELECT COUNT(*) AS tot<br \/>,<strong>SUM(CASE sex WHEN &#8216;F&#8217; THEN 1 ELSE 0 END)<\/strong> AS #f<br \/>,<strong>SUM(CASE sex WHEN &#8216;M&#8217; THEN 1 ELSE 0 END)<\/strong> AS #m<br \/>FROM employee WHERE lastname LIKE &#8216;J%&#8217;;  <\/p>\n<p>ANSWER<br \/>=========<br \/>TOT #F #M<br \/>&#8212;&nbsp;&nbsp; &#8212;&nbsp; &#8212;<br \/>&nbsp; 3&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 2  <\/p>\n<p><font color=\"#000080\">\/\/ \u8f49\u63db\u503c\u904e\u7a0b\u4e2d\u78ba\u4fdd\u4e86 sex \u4e0d\u6703\u662f NULL \u503c<br \/><\/font>SELECT lastname ,sex FROM employee WHERE lastname LIKE &#8216;J%&#8217; AND <strong>CASE sex<br \/>&nbsp;&nbsp;&nbsp; WHEN &#8216;F&#8217; THEN &#8221;<br \/>&nbsp;&nbsp;&nbsp; WHEN &#8216;M&#8217; THEN &#8221;<br \/>&nbsp;&nbsp;&nbsp; ELSE NULL<br \/>&nbsp;&nbsp;&nbsp; END<\/strong> IS NOT NULL ORDER BY 1;  <\/p>\n<p><font color=\"#000080\">\/\/ \u5de2\u72c0\u7d50\u69cb\uff0c\u4ee5\u90e8\u9580 dept \u8207\u5e74\u8cc7 years\uff0c\u6c7a\u5b9a comm \u503c<\/font><br \/>UPDATE staff SET comm = <\/p>\n<p><strong>CASE dept<br \/>&nbsp;&nbsp;&nbsp;&nbsp; WHEN 15 THEN comm * 1.1<br \/>&nbsp;&nbsp;&nbsp;&nbsp; WHEN 20 THEN comm * 1.2<br \/>&nbsp;&nbsp;&nbsp;&nbsp; WHEN 38 THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CASE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN years &lt; 5 THEN comm * 1.3<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN years &gt;= 5 THEN comm * 1.4<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END<br \/>&nbsp;&nbsp;&nbsp;&nbsp; ELSE comm<br \/>END<br \/><\/strong>WHERE comm IS NOT NULL<br \/>AND dept &lt; 50;<\/p>\n<p><font color=\"#000080\">\/\/ \u907f\u514dNULL\u503c\u8b8a\u6210\u88ab\u9664\u6578\u800c\u9020\u6210\u932f\u8aa4<\/font><br \/>WITH temp1 (c1,c2) AS (VALUES (88,9),(44,3),(22,0),(0,1))<br \/>SELECT c1 ,c2,<br \/><strong>CASE c2 <br \/>&nbsp;&nbsp;&nbsp; WHEN 0 THEN NULL<br \/>&nbsp;&nbsp;&nbsp; ELSE c1\/c2<br \/>END<\/strong> AS c3<br \/>FROM temp1;<\/p>\n<p><strong>DML Statements &#8212;&#8212;&#8212;&#8211;<\/strong><\/p>\n<p><strong>INSERT<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ \u63d2\u5165\u4e00\u7b46\u8cc7\u6599<br \/><\/font><strong>INSERT INTO<\/strong> emp_act <strong>VALUES <\/strong>(&#8216;100000&#8242; ,&#8217;ABC&#8217; ,10 ,1.4 ,&#8217;2003-10-22&#8242;, 2003-11-24&#8242;);<\/p>\n<p><font color=\"#000080\">\/\/ \u4e00\u6b21\u63d2\u5165\u591a\u7b46\u8cc7\u6599\uff0c\u5176\u4e2d\u53ea\u8981\u4e00\u7b46\u5931\u6557\u5c31\u5168\u90e8\u5931\u6557\u5931\u6548<\/font><br \/><strong>INSERT INTO<\/strong> emp_act <strong>VALUES<br \/><\/strong>(&#8216;200000&#8242; ,&#8217;ABC&#8217; ,10 ,1.4 ,&#8217;2003-10-22&#8242;, &#8216;2003-11-24&#8217;)<br \/>,(&#8216;200000&#8242; ,&#8217;DEF&#8217; ,10 ,1.4 ,&#8217;2003-10-22&#8242;, &#8216;2003-11-24&#8217;)<br \/>,(&#8216;200000&#8242; ,&#8217;IJK&#8217; ,10 ,1.4 ,&#8217;2003-10-22&#8242;, &#8216;2003-11-24&#8217;);  <\/p>\n<p><font color=\"#000080\">\/\/ NULL and DEFAULT \u662f\u95dc\u9375\u5b57\uff0cDEFAULT \u503c\u5728 CREATE table \u6642\u8a2d\u5b9a<\/font><br \/><strong>INSERT INTO<\/strong> emp_act<strong> VALUES<br \/><\/strong>(&#8216;400000&#8242; ,&#8217;ABC&#8217; ,10 ,<strong>NULL<\/strong> ,<strong>DEFAULT<\/strong>, CURRENT DATE)  <\/p>\n<p><font color=\"#000080\">\/\/ \u53ef\u4ee5\u9078\u64c7\u6027\u5730\u53ea\u7d664\u500b\u6b04\u4f4d\u503c<br \/><\/font><strong>INSERT INTO<\/strong> emp_act <strong>(projno, emendate, actno, empno)<\/strong> VALUES<br \/><strong>(&#8216;ABC&#8217; ,DATE(CURRENT TIMESTAMP) ,123 ,&#8217;500000&#8242;)<\/strong>;  <\/p>\n<p><font color=\"#000080\">\/\/ INSERT \u7684\u8cc7\u6599\u662f\u5f9e\u53e6\u5916\u4e00\u500b table select \u51fa\u4f86\u7684<\/font><br \/>INSERT INTO emp_act<br \/><strong>SELECT LTRIM(CHAR(id + 600000)) ,SUBSTR(UCASE(name),1,6) ,salary \/ 229 ,123 ,CURRENT DATE ,&#8217;2003-11-11&#8242; FROM staff WHERE id &lt; 50<\/strong>;  <\/p>\n<p><strong>UPDATE<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ UPDATE <em>table<\/em> SET \u7d66\u503c<\/font><br \/><strong>UPDATE<\/strong> emp_act<br \/><strong>SET<\/strong> emptime = NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp; ,emendate = DEFAULT<br \/>&nbsp;&nbsp;&nbsp;&nbsp; ,emstdate = CURRENT DATE + 2 DAYS<br \/>&nbsp;&nbsp;&nbsp;&nbsp; ,actno = ACTNO \/ 2<br \/>&nbsp;&nbsp;&nbsp;&nbsp; ,projno = &#8216;ABC&#8217;<br \/>WHERE empno = &#8216;100000&#8217;;  <\/p>\n<p><font color=\"#000080\">\/\/ SET \u7d66\u7684\u503c\u662f\u7528 select \u51fa\u4f86\u7684\u503c<\/font><br \/><strong>UPDATE<\/strong> emp_act<br \/><strong>SET<\/strong> actno = <strong>(SELECT MAX(salary) FROM staff)<br \/><\/strong>WHERE empno = &#8216;200000&#8217;;  <\/p>\n<p><strong>DELETE<\/strong>  <\/p>\n<p><font color=\"#000080\">\/\/ DELECT FROM \u522a\u9664\u67d0\u4e00\u7b46\u8cc7\u6599\uff0c\u6307\u5b9a\u660e\u78ba\u8981\u522a\u54ea\u4e00\u7b46\u8cc7\u6599<\/font><br \/><strong>ELETE FROM<\/strong> emp_act <strong>WHERE <\/strong>empno = &#8216;000010&#8217; AND projno = &#8216;MA2100&#8217;&nbsp; AND actno = 10;  <\/p>\n<p><font color=\"#000080\">\/\/ \u6307\u5b9a\u4e0d\u660e\u78ba\u689d\u4ef6\uff0c\u6703\u5168\u522a\u9664<br \/><\/font><strong>DELETE FROM<\/strong> emp_act;  <\/p>\n<p><font color=\"#000080\">\/\/ \u914d\u5408\u53e6\u5916\u4e00\u500b table \u4f86\u6c7a\u5b9a\u522a\u4e0d\u522a<br \/><\/font><strong>DELETE FROM<\/strong> staff s1<br \/>WHERE id NOT IN<strong> (SELECT MAX(id) FROM staff s2 WHERE s1.dept =&nbsp; 2.dept);<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ <strong>OLD TABLE<\/strong> \u770b\u9084\u6c92INSERT\u4e4b\u524d\u7684table<br \/><strong>NEW TABLE<\/strong> \u770bINSERT\u4e4b\u5f8c\u7684table<br \/><strong>FINAL TABLE<\/strong> \u770bINSERT\u5b8c\uff0c\u540c\u6642triggers\u4e5f\u505a\u5b8c\u5f8c\u7684table<\/font><br \/><strong>SELECT<\/strong> empno ,projno AS prj ,actno AS act<br \/>FROM <font color=\"#000000\"><strong>FINAL TABLE<\/strong><br \/><\/font><strong>(INSERT INTO emp_act<br \/>VALUES (&#8216;200000&#8242;,&#8217;ABC&#8217;,10 ,1,&#8217;2003-10-22&#8242;,&#8217;2003-11-24&#8242;)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(&#8216;200000&#8242;,&#8217;DEF&#8217;,10 ,1,&#8217;2003-10-22&#8242;,&#8217;2003-11-24&#8242;))<br \/><\/strong>ORDER BY 1,2,3;<\/p>\n<p><font color=\"#000080\">\/\/ \u5b9a\u7fa9 procedure\uff0cescape \u662f @<br \/><\/font>create procedure proc()<br \/>begin<br \/>.<br \/>.<br \/>.<br \/>end<br \/>@<\/p>\n<p><font color=\"#000080\">\/\/ in \u7684var_id\u662f\u50b3\u5165\u7684\u53c3\u6578\uff0cout \u7684 name \u662freturn\u7684\u503c<\/font><br \/>db2 create procedure proc(<strong>in<\/strong> var_id int, <strong>out<\/strong> name char(10));<\/p>\n<p><font color=\"#000080\">\/\/ \u7e8c\u4e0a\uff0cCALL procdure \u8a9e\u6cd5<\/font><br \/>db2 call proc(20,?);<\/p>\n<p><strong>DECLARE Variables<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ DECLARE \u8b8a\u6578\u5ba3\u544a<\/font><br \/><strong>BEGIN ATOMIC<br \/><\/strong>&nbsp;&nbsp; <strong>DECLARE aaa, bbb, ccc SMALLINT DEFAULT 1;<br \/><\/strong>&nbsp;&nbsp; DECLARE ddd CHAR(10) DEFAULT NULL;<br \/>&nbsp;&nbsp; DECLARE eee INTEGER;<br \/>&nbsp;&nbsp; SET eee = aaa + 1;<br \/>&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp; SET comm = aaa<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary = bbb<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years = eee<br \/>&nbsp;&nbsp; WHERE id = 10;<br \/><strong>END<\/strong><\/p>\n<p><strong>GET DIAGNOSTICS <\/strong><\/p>\n<p><font color=\"#000080\">\/\/ GET \u8655\u7406\u4e86\u591a\u5c11\u7b97\u8cc7\u6599<\/font><br \/>BEGIN ATOMIC<br \/>&nbsp;&nbsp; DECLARE numrows INT DEFAULT 0;<br \/>&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp; SET salary = 12345<br \/>&nbsp;&nbsp; WHERE id &lt; 100;<br \/>&nbsp;&nbsp; <strong>GET DIAGNOSTICS numrows = ROW_COUNT; <font color=\"#000080\">\/\/\u8981\u63a5\u8457\u4e0a\u9762\u52d5\u4f5c\u5b8c\u57f7\u884c<br \/><\/font><\/strong>&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp; SET salary = numrows<br \/>&nbsp;&nbsp; WHERE id = 10;<br \/>END<\/p>\n<p><strong>IF STATEMENT<\/strong><br \/>BEGIN ATOMIC<br \/>&nbsp;&nbsp; DECLARE cur INT;<br \/>&nbsp;&nbsp; SET cur = MICROSECOND(CURRENT TIMESTAMP);<br \/>&nbsp;&nbsp; IF cur &gt; 600000 THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 10;<br \/>&nbsp;&nbsp; ELSEIF cur &gt; 300000 THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 20;<br \/>&nbsp;&nbsp; ELSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 30;<br \/>&nbsp;&nbsp; END IF;<br \/>END <\/p>\n<p><strong>AVG Function<\/strong><\/p>\n<p><font size=\"2\"><\/font> <\/p>\n<p><font color=\"#000080\">\/\/ \u81ea\u52d5\u5ffd\u7565\u8a08\u7b97 NULL<\/font><br \/>SELECT AVG(dept) AS a1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(ALL dept) AS a2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(DISTINCT dept) AS a3<font color=\"#000080\"> \/\/ \u91cd\u8986\u7684\u53ea\u53d6\u4e00\u7b46<br \/><\/font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(dept\/10) AS a4<font color=\"#000080\"> \/\/ \u8f03\u4e0d\u7cbe\u78ba\uff0c\u56e0int\u9664\u6cd5\u6703\u6cd5\u9664\u5c0f\u6578\u9ede<br \/><\/font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(dept)\/10 AS a5<br \/>FROM staff<br \/>HAVING AVG(dept) &gt; 40; <\/p>\n<p><font color=\"#000080\">\/\/ \u82e5 comm \u70ba 0 \u7684\u8a71\u5c31\u8b8a\u6210NULL\uff0c\u4e5f\u5c31\u662f\u4e0d\u52a0\u5165\u5e73\u5747\u8a08\u7b97<\/font><br \/>SELECT AVG(salary) AS salary<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(comm) AS comm1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG<strong>(CASE comm<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN 0 THEN NULL<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE comm<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END)<\/strong> AS comm2<br \/>FROM staff; <\/p>\n<p><strong>COUNT Function<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ \u8a08\u7b97\u7b46\u6578\uff0cNULL \u4e0d\u7b97<br \/><\/font>SELECT COUNT(*) AS c1<br \/>&nbsp;&nbsp; ,COUNT(INT(comm\/10)) AS c2<br \/>&nbsp;&nbsp; ,COUNT(ALL INT(comm\/10)) AS c3<br \/>&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm\/10)) AS c4<br \/>&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm)) AS c5<br \/>&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm))\/10 AS c6<br \/>FROM staff;<\/p>\n<p>ANSWER<br \/>=================<br \/>C1 C2 C3 C4 C5 C6<br \/>&#8212; &#8212; &#8212; &#8212; &#8212; &#8212;<br \/>35 24 24 19 24 2 <\/p>\n<p><strong>MAX Function<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ \u53d6\u6700\u5927\u503c\uff0c\u5148 CHAR(id) \u8f49\u6210 char \u518d\u6392\u5e8f<br \/><\/font>SELECT MAX(id) AS id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MAX(CHAR(id)) AS chr<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MAX(DIGITS(id)) AS dig<br \/>FROM staff; <\/p>\n<p><font color=\"#000080\">\/\/ \u53d6\u6700\u5c0f\u503c<br \/><\/font>SELECT MIN(dept)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(ALL dept)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(DISTINCT dept)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(DISTINCT dept\/10)<br \/>FROM staff; <\/p>\n<p><font color=\"#000080\">\/\/ \u52a0\u7e3d<br \/><\/font>SELECT SUM(dept) AS s1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(ALL dept) AS s2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(DISTINCT dept) AS s3<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(dept\/10) AS s4<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(dept)\/10 AS s5<br \/>FROM staff; <\/p>\n<p><font color=\"#000080\">\/\/ RANK() \u91cd\u8986\u8cc7\u6599\u6709gap\u7684\u6392\u5e8f\uff0cDENSE_RANK() \u91cd\u8986\u8cc7\u6599\u7121gap\u7684\u6392\u5e8f\uff0cROW_NUMBER() \u4f9d\u7167\u524d\u5f8c\u6392\u5e8f<\/font><br \/>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>RANK()<\/strong> <strong>OVER(ORDER BY years)<\/strong> AS rank#<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DENSE_RANK()<\/strong> <strong>OVER(ORDER BY years)<\/strong> AS dense#<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>ROW_NUMBER()<\/strong> <strong>OVER(ORDER BY years)<\/strong> AS row#<br \/>FROM staff<br \/>WHERE id &lt; 100<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND years IS NOT NULL<br \/>ORDER BY years; <\/p>\n<p>ANSWER<br \/>===================================<br \/>ID YEARS SALARY RANK# DENSE# ROW#<br \/>&#8212; &#8212;&#8211; &#8212;&#8212;&#8211; &#8212;&#8211; &#8212;&#8212; &#8212;-<br \/>30 5 17506.75 1 1 1<br \/>40 6 18006.00 2 2 2<br \/>90 6 18001.75 2 2 3<br \/>10 7 18357.50 4 3 4<br \/>70 7 16502.83 4 3 5<br \/>20 8 18171.25 6 4 6<br \/>50 10 20659.80 7 5 7<\/p>\n<p><font color=\"#000080\">\/\/ \u591a\u6b21\u6392\u5e8f<br \/><\/font>SMALLINT(RANK() OVER(<font color=\"#000080\">ORDER BY job ASC ,years ASC ,id ASC<\/font>)) AS asc3<\/p>\n<p><font color=\"#000080\">\/\/ \u6c7a\u5b9a NULL \u6392\u5728\u524d\u6216\u6392\u5728\u5f8c<\/font><br \/>,DENSE_RANK() OVER(ORDER BY years ASC NULLS FIRST) AS AF<br \/>,DENSE_RANK() OVER(ORDER BY years ASC NULLS LAST ) AS AL <\/p>\n<p><strong>Partition Usage<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ PARTITION\uff0cGROUP \u5316<br \/><\/font>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years AS YR<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,RANK() OVER(<strong>PARTITION BY years ORDER BY salary<\/strong>) AS r1<br \/>FROM staff<br \/>WHERE id &lt; 80 AND years IS NOT NULL<br \/>ORDER BY years ,salary; <\/p>\n<p>ANSWER<br \/>=================<br \/>ID YR SALARY R1<br \/>&#8212; &#8212; &#8212;&#8212;&#8211; &#8212;<br \/>30 5 17506.75 1<br \/>40 6 18006.00 1<br \/>70 7 16502.83 1<br \/>10 7 18357.50 2<br \/>20 8 18171.25 1<br \/>50 0 20659.80 1 <\/p>\n<p><font color=\"#000080\">\/\/ \u53d6\u5f97\u90e8\u9580\u4e2d\u85aa\u8cc7\u6700\u9ad8\u8005<\/font><br \/>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,dept AS dp<br \/>FROM (SELECT S1.*<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,RANK() OVER(<strong>PARTITION BY dept<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY salary DESC<\/strong>) AS <strong>r1<br \/><\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff s1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id &lt; 80 AND years IS NOT NULL)AS xxx<br \/>WHERE <strong>r1 = 1<\/strong> ORDER BY dp; <\/p>\n<p><font color=\"#000080\">\/\/ \u914d\u5408 BETWEEN \u53ef\u4ee5\u627e\u51fa 3~6 \u7b46\u8cc7\u6599<br \/><\/font>SELECT * FROM (SELECT id ,name ,<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>ROW_NUMBER() OVER(ORDER BY id) AS r<\/strong> <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff WHERE id &lt; 200 AND years IS NOT NULL)AS xxx WHERE<strong> r BETWEEN 3 AND 6<br \/><\/strong> ORDER BY id; <\/p>\n<p><font color=\"#000080\">\/\/ \u6bcf5\u7b46\u5217\u51fa\u4f86<br \/><\/font>SELECT * FROM (SELECT id ,name <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,ROW_NUMBER() OVER(ORDER BY id) AS r <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff WHERE id &lt; 200 AND years IS NOT NULL )AS xxx WHERE <strong>(r &#8211; 1) = ((r &#8211; 1) \/ 5) * 5<\/strong> ORDER BY id; <\/p>\n<p><font color=\"#000080\">\/\/ \u8981\u6709 OVER() \u624d\u80fd\u628a rows \u5217\u51faSUM(),AVG(),MAX(),MIX()&#8230;<\/font><br \/>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,name<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>SUM(salary) OVER()<\/strong> AS sum_sal<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>AVG(salary) OVER()<\/strong> AS avg_sal<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>MIN(salary) OVER()<\/strong> AS min_sal<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>MAX(salary) OVER()<\/strong> AS max_sal<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>COUNT(*) OVER()<\/strong> AS #rows<br \/>FROM staff<br \/>WHERE id &lt; 60<br \/>ORDER BY id;<img loading=\"lazy\" decoding=\"async\" style=\"border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px\" height=\"116\" alt=\"18\" src=\"http:\/\/blog.smallken.ink\/wp-content\/uploads\/2007\/12\/18.png\" width=\"457\" border=\"0\"\/>  <\/p>\n<p><strong>COALESCE Function<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ \u5982\u679c comm \u662f NULL \u7684\u8a71\u6703\u8f49\u6210 0<\/font><br \/>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,comm<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>COALESCE(comm,0)<\/strong><br \/>FROM staff<br \/>WHERE id &lt; 30<br \/>ORDER BY id; <\/p>\n<p><strong>CONCAT Function<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ \u5169\u5b57\u4e32\u4f75\u5728\u4e00\u8d77\uff0c\u4e0b\u9762\u4e09\u7a2e\u7d50\u679c\u90fd\u4e00\u6a23 <br \/>\u2022 &#8220;AB&#8221; || &#8220;CD&#8221; <br \/>\u2022 &#8220;AB&#8221; CONCAT &#8220;CD&#8221;<br \/>\u2022 CONCAT(&#8220;AB&#8221;,&#8221;CD&#8221;)<\/font><br \/>SELECT <strong>&#8216;A&#8217; || &#8216;B&#8217;<br \/><\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong> ,&#8217;A&#8217; CONCAT &#8216;B&#8217;<br \/><\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,CONCAT(&#8216;A&#8217;,&#8217;B&#8217;)<br \/><\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,&#8217;A&#8217; || &#8216;B&#8217; || &#8216;C&#8217;<br \/><\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,CONCAT(CONCAT(&#8216;A&#8217;,&#8217;B&#8217;),&#8217;C&#8217;)<br \/><\/strong>FROM staff<br \/>WHERE id = 10; <\/p>\n<p><strong>DECIMAL Function<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ DECIMAL \u662f\u6709\u5c0f\u6578\u9ede\u7684\u8cc7\u6599\u578b\u614b<br \/><\/font>WITH temp1(n1,n2,c1,c2) AS<br \/>(VALUES (123<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,1E2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,&#8217;123.4&#8242;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>&#8216;567$8&#8217;<\/strong>))<br \/>SELECT <strong>DEC(n1,3)<\/strong> AS dec1<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(n2,4,1)<\/strong> AS dec2<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(c1,4,1)<\/strong> AS dec3<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(c2,4,1,&#8217;$&#8217;)<\/strong> AS dec4 <font color=\"#000080\">\/\/ \u6307\u5b9a\u5c0f\u6578\u9ede\u70ba $<br \/> <\/font>FROM temp1; <\/p>\n<p>ANSWER<br \/>==========================<br \/>DEC1 DEC2 DEC3 DEC4<br \/>&#8212;&#8211; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212;<br \/>123. 100.0 123.4 567.8 <\/p>\n<p><strong>GENERATE_UNIQUE Function<\/strong> <\/p>\n<p><font color=\"#000080\">\/\/ \u7522\u751f\u552f\u4e00\u503c\uff0c\u8207\u6642\u9593\u6709\u95dc<br \/><\/font>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<font color=\"#000080\">GENERATE_UNIQUE() AS unique_val#1<br \/><\/font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,DEC(HEX(GENERATE_UNIQUE()),26) AS unique_val#2<br \/>FROM staff<br \/>WHERE id &lt; 50<br \/>ORDER BY id; <\/p>\n<p>ANSWER<br \/>================= ===========================<br \/>ID UNIQUE_VAL#1 UNIQUE_VAL#2<br \/>&#8212; &#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>10 20000901131648990521000000.<br \/>20 20000901131648990615000000.<br \/>30 20000901131648990642000000.<br \/>40 20000901131648990669000000. <\/p>\n<p><strong>RAND Function<\/strong><\/p>\n<p><font color=\"#000080\">\/\/ RAND() \u5f97\u5230 0~1 \u4e4b\u9593\u7684\u4e82\u6578\uff0c\u4ee5\u4e0b\u5217\u5b50\u8868\u793a\u53d6 table 1\/10 \u7684\u8cc7\u6599<br \/><\/font>SELECT id<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,name<br \/>FROM staff<br \/>WHERE <strong>RAND() &lt; 0.1<\/strong><br \/>ORDER BY id;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SELECT \/\/ &#8216;ABC&#8217; \u56fa\u5b9a\u503cSELECT deptno ,admrdept &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-438","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/posts\/438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=438"}],"version-history":[{"count":1,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/posts\/438\/revisions"}],"predecessor-version":[{"id":1430,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=\/wp\/v2\/posts\/438\/revisions\/1430"}],"wp:attachment":[{"href":"https:\/\/blog.smallken.site\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.smallken.site\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}