1¡£select * from a where a.rowid=(select min(b.rowid) from b where a.id=b.id);
create test1(
nflowid number primary key,
ndocid number,
drecvdate date);
insert into test1 values (1, 12301, sysdate) ;
insert into test1 values (2, 12301, sysdate);
select * from test1 order by drecvdate:
result:
nflowid ndocid drecvdate
1 12301 2010-2-1
2 12301 2010-2-2
ÒªÇó: ¸ù¾ÝNDOCIDΪ²éѯÌõ¼þ, DRECVDATEÅÅÐò,ÏÔÊ¾ÖØ¸´Êý¾ÝÖÐ×îСµÄÄÇÌõ¼Ç¼
String sql1 = "select * from test1 where ndocid=12301 order by decvdate";
String sql2 = "select * from (" + sql1 + ") a where a.rowid=" +
"(select min(b.rowid) from (" + sql1 + ") b " +
"where a.ndocid=b.ndocid)";
Òªµã: 1. nflowid ÊÇPK, Èç¹û²»ÊÇPK, ÔòÓпÉÄܻᱨ¸æORA-1445 ´íÎó
2. ´ËÓï¾ä,²»¹ÜNFLOWID=1µÄDRECVDAGTE±ÈNFLOWID=2µÄDRECVDATEÔ绹ÊÇÍí,¶¼·µ»Ø:
1, 12301 2010-2-1. ÔÒòÎÒ¾õµÃ:Õâ¸öROWIDÃ²ËÆ¾ÍÊÇNFLOW ......
1¡£select * from a where a.rowid=(select min(b.rowid) from b where a.id=b.id);
create test1(
nflowid number primary key,
ndocid number,
drecvdate date);
insert into test1 values (1, 12301, sysdate) ;
insert into test1 values (2, 12301, sysdate);
select * from test1 order by drecvdate:
result:
nflowid ndocid drecvdate
1 12301 2010-2-1
2 12301 2010-2-2
ÒªÇó: ¸ù¾ÝNDOCIDΪ²éѯÌõ¼þ, DRECVDATEÅÅÐò,ÏÔÊ¾ÖØ¸´Êý¾ÝÖÐ×îСµÄÄÇÌõ¼Ç¼
String sql1 = "select * from test1 where ndocid=12301 order by decvdate";
String sql2 = "select * from (" + sql1 + ") a where a.rowid=" +
"(select min(b.rowid) from (" + sql1 + ") b " +
"where a.ndocid=b.ndocid)";
Òªµã: 1. nflowid ÊÇPK, Èç¹û²»ÊÇPK, ÔòÓпÉÄܻᱨ¸æORA-1445 ´íÎó
2. ´ËÓï¾ä,²»¹ÜNFLOWID=1µÄDRECVDAGTE±ÈNFLOWID=2µÄDRECVDATEÔ绹ÊÇÍí,¶¼·µ»Ø:
1, 12301 2010-2-1. ÔÒòÎÒ¾õµÃ:Õâ¸öROWIDÃ²ËÆ¾ÍÊÇNFLOW ......
ÏÂÁÐÓï¾ä²¿·ÖÊÇMssqlÓï¾ä£¬²»¿ÉÒÔÔÚaccessÖÐʹÓá£
SQL·ÖÀࣺ
DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
DML—Êý¾Ý²Ù×ÝÓïÑÔ(SELECT£¬DELETE£¬UPDATE£¬INSERT)
DCL—Êý¾Ý¿ØÖÆÓïÑÔ(GRANT£¬REVOKE£¬COMMIT£¬ROLLBACK)
Ê×ÏÈ,¼òÒª½éÉÜ»ù´¡Óï¾ä£º
1¡¢ËµÃ÷£º´´½¨Êý¾Ý¿â
CREATE DATABASE database-name
2¡¢ËµÃ÷£ºÉ¾³ýÊý¾Ý¿â
drop database dbname
3¡¢ËµÃ÷£º±¸·Ýsql server
--- ´´½¨ ±¸·ÝÊý¾ÝµÄ device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- ¿ªÊ¼ ±¸·Ý
BACKUP DATABASE pubs TO testBack
4¡¢ËµÃ÷£º´´½¨Ð±í
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
¸ù¾ÝÒÑÓÐµÄ±í´´½¨ÐÂ±í£º
A£ºcreate table tab_new like tab_old (ʹÓÃ¾É±í´´½¨Ð±í)
B£ºcreate table tab_new as select col1,col2… from tab_old definition only
5¡¢ËµÃ÷£ºÉ¾³ýбídrop table tabname
6¡¢ËµÃ÷£ºÔö¼ÓÒ»¸öÁÐ
Alter table tabname add column col type
×¢£ºÁÐÔö¼Óºó½«²»ÄÜɾ³ý¡£DB2ÖÐÁмÓÉ ......
¿âλ »õÎï±àºÅ ¿â´æÊý
1 0101 50
1 0102 60
1 0103 50
2 0101 90
2 0103 100
2 0111 30
3 0101 120
3 0102 110
4 0101 11
Ö»Áгö±íÖпâλΪ1¡¢2¡¢3µÄÊý¾Ý£¬¸ñʽÈçÏÂ:
»õÎï±àºÅ ¿âλ1 ¿âλ2 ¿âλ3
0101 50 90 120
0102 60 110
0103 50 100
0111 30
ÇëÎÊÓÃÒ»¾äsqlÓï¾äÔõôʵÏÖ£¿
select a.»õÎï±àºÅ£¬sum(b.¿â´æÊý)£¬sum(c.¿â´æÊý)£¬sum(d.¿â´æÊý)
from stable a
left join (select »õÎï±àºÅ£¬ ¿â´æÊý from stable where ¿âλ=1)b on a.»õÎï±àºÅ£½b»õÎï±àºÅ
left join (select »õÎï±àºÅ£ ......
CLR Óû§¶¨Ò庯ÊýÖ»ÊÇÔÚ .NET ³ÌÐò¼¯Öж¨ÒåµÄ¾²Ì¬·½·¨¡£CREATE FUNCTION Óï¾äÒÑÀ©Õ¹ÎªÖ§³Ö´´½¨ CLR
Óû§¶¨Ò庯Êý¡£
1¡¢´´½¨Êý¾Ý¿âÏîÄ¿
¡¡¡¡
2¡¢Ìí¼ÓÓû§¶¨Ò庯Êý
¡¡¡¡
ÒÔÏÂÊÇÑÝʾ´úÂ룺
Code
using
System;
using
System.Data;
using
System.Data.SqlClient;
using
System.Data.SqlTypes;
using
Microsoft.SqlServer.Server;
using
System.Text.RegularExpressions;
// ʾÒâ´úÂë
public
partial
class
UserDefinedFunctions
{
public
static
readonly
RegexOptions Options
=
RegexOptions.IgnorePatternWhitespace
|
RegexOptions.Singleline;
[Microsoft.SqlServer.Server.SqlFunction]
public
static
string
RegexValue(SqlChars input, SqlString pattern)
{
Regex regex
=
new
Rege ......
1. ÀûÓòâÊÔ¹¤¾ßÄ£Äâ¶à¸ö×îÖÕÓû§½øÐв¢·¢²âÊÔ; ÕâÖÖ²âÊÔ·½·¨µÄȱµã£º×îÖÕÓû§ÍùÍù²¢²»ÊÇÖ±½ÓÁ¬½Óµ½Êý¾Ý¿âÉÏ£¬¶øÊÇÒª¾¹ýÒ»¸öºÍ¶à¸öÖмä·þÎñ³ÌÐò£¬ËùÒÔ²¢²»Äܱ£Ö¤·ÃÎÊÊý¾Ý¿âʱ»¹ÊDz¢·¢¡£Æä´Î£¬ÕâÖÖ²âÊÔ·½·¨ÐèÒªµÈµ½¿Í»§¶Ë³ÌÐò¡¢·þÎñ¶Ë³ÌÐòÈ«²¿Íê³É²ÅÄܽøÐÐ; 2. ÀûÓòâÊÔ¹¤¾ß±àд½Å±¾£¬Ö±½ÓÁ¬½ÓÊý¾Ý¿â½øÐв¢·¢²âÊÔ; ÕâÖÖ·½·¨¿ÉÒÔÓÐЧµÄ±£Ö¤²¢·¢²Ù×÷£¬¶øÇÒÔÚÊý¾Ý¿â·ÃÎʳÌÐòÍê³É¼´¿É²âÊÔ£¬¿ÉÒÔ´ó
1. ÀûÓòâÊÔ¹¤¾ßÄ£Äâ¶à¸ö×îÖÕÓû§½øÐв¢·¢²âÊÔ;
ÕâÖÖ²âÊÔ·½·¨µÄȱµã£º×îÖÕÓû§ÍùÍù²¢²»ÊÇÖ±½ÓÁ¬½Óµ½Êý¾Ý¿âÉÏ£¬¶øÊÇÒª¾¹ýÒ»¸öºÍ¶à¸öÖмä·þÎñ³ÌÐò£¬ËùÒÔ²¢²»Äܱ£Ö¤·ÃÎÊÊý¾Ý¿âʱ»¹ÊDz¢·¢¡£Æä´Î£¬ÕâÖÖ²âÊÔ·½·¨ÐèÒªµÈµ½¿Í»§¶Ë³ÌÐò¡¢·þÎñ¶Ë³ÌÐòÈ«²¿Íê³É²ÅÄܽøÐÐ;
2. ÀûÓòâÊÔ¹¤¾ß±àд½Å±¾£¬Ö±½ÓÁ¬½ÓÊý¾Ý¿â½øÐв¢·¢²âÊÔ;
ÕâÖÖ·½·¨¿ÉÒÔÓÐЧµÄ±£Ö¤²¢·¢²Ù×÷£¬¶øÇÒÔÚÊý¾Ý¿â·ÃÎʳÌÐòÍê³É¼´¿É²âÊÔ£¬¿ÉÒÔ´ó´óËõ¶Ì²âÊÔʱ¼ä£¬¶øÇÒ²âÊÔЧ¹û¸üºÃ¡£
ÏÂÃæÍ¨¹ýÒ»¸öÑÝʾ³ÌÐò£¬ÑÝʾʹÓÃRobotʹÓõڶþÖÖ²âÊÔ·½·¨½øÐÐÊý¾Ý¿âµÄ²¢·¢²âÊÔ¡£
µÚÒ»²½£º´´½¨ÑÝʾ³ÌÐò
´ò¿ªSQL SERVER²éѯ·ÖÎöÆ÷£¬ÔÚSQL SERVER²âÊÔÊý¾Ý¿âÖÐÖ´ÐÐÏÂÁнű¾(½Å±¾Ö´ÐвÙ×÷£º´´½¨±ítesttable£¬²¢²åÈëÒ»Ìõ¼Ç¼;´´½¨´æ´¢¹ý³Ìtest)£º¡¡ ......
TOP ÔöÇ¿¡£¿ÉÒÔÖ¸¶¨Ò»¸öÊý×Ö±í´ïʽ£¬ÒÔ·µ»ØÒªÍ¨¹ý²éѯӰÏìµÄÐÐÊý»ò°Ù·Ö±È£¬»¹¿ÉÒÔ¸ù¾ÝÇé¿öʹÓñäÁ¿»ò×Ó²éѯ¡£
¿ÉÒÔÔÚDELETE¡¢UPDATEºÍINSERT²éѯÖÐʹÓÃTOPÑ¡Ïî¡£
2¡¢¸üºÃµØÌæ»»SET ROWCOUNTÑ¡Ïʹ֮¸üΪÓÐЧ¡£
OUTPUT
1¡¢SQL Server 2005ÒýÈëÒ»¸öеÄOUTPUT×Ӿ䣬ÒÔʹÄú¿ÉÒÔ³åÐÞ¸ÄÓï¾ä(INSERT¡¢UPDATE¡¢DELETE)Öн«Êý¾Ý·µ»Øµ½±í±äÁ¿ÖС£
2¡¢ÐµÄOUTPUT×Ó¾ÖµÄÓ﷨Ϊ£º
OUTPUT INTO @table_variable
¿ÉÒÔͨ¹ýÒýÓòåÈëµÄ±í»òɾ³ýµÄ±íÀ´·ÃÎʱ»Ð޸ĵÄÐеľÉ/ÐÂÓ°Ïó£¬Æä·½Ê½Óë·ÃÎÊ´¥·¢Æ÷ÀàËÆ¡£ÔÚINSERTÓï¾äÖУ¬Ö»ÄÜ·ÃÎʲåÈëµÄ±í¡£ÔÚDELETEÓï¾äÖУ¬Ö»ÄÜ·ÃÎÊɾ³ýµÄ±í¡£ÔÚUPDATEÓï¾äÖУ¬¿ÉÒÔ·ÃÎʲåÈëµÄ±íºÍɾ³ýµÄ±í¡£
USE demo
GO
CREATE TABLE tt
(
id INT IDENTITY,
c1 VARCHAR(15)
)
GO
INSERT INTO tt VALUES ('r1')
INSERT INTO tt VALUES ('r2')
INSERT INTO tt VALUES ('r5')
INSERT INTO tt VALUES ('r6')
INSERT INTO tt VALUES ('r7')
INSERT INTO tt VALUES ('r8')
INSERT INTO tt VALUES ('r9')
INSERT INTO tt VALUES ('r10')
DECLARE @del AS TABLE (deletedId INT, deletedValue VARCHAR(15))
DELETE tt
OUTPUT DELETED.id, DELETE ......