use Master
go
if object_id('SP_SQL') is not null
drop proc SP_SQL
go
create proc [dbo].[SP_SQL](@ObjectName sysname)
as
set nocount on ;
declare @Print varchar(max)
if exists(select 1 from syscomments where ID=object_id(@ObjectName) and encrypted=1)
begin
Print N'對ÏóÒѼÓÃÜ!'
return
end
if coalesce(object_id(@ObjectName,N'P'),object_id(@ObjectName,N'FN'),object_id(@ObjectName,N'IF'),object_id(@ObjectName,N'TF'),object_id(@ObjectName,N'TR'),object_id(@ObjectName,N'V')) is null
begin
Print N'對ÏóÖ»針對º¯數¡¢´æ儲過³Ì¡¢觸發Æ÷¡¢視圖!'
return
end
print 'Use '+db_Name()
print 'Go'  ......
SQLSERVER SQLÐÔÄÜÓÅ»¯ ÊÕ²Ø
1.Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)¡¡¡¡
¡¡¡¡ SQLSERVERµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í£¬µ±SQLSERVER´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á¬½ÓËüÃÇ£¬
¡¡¡¡ Ê×ÏÈ£¬É¨ÃèµÚÒ»¸ö±í£¨from×Ó¾äÖÐ×îºóµÄÄǸö±í)²¢¶Ô¼Ç¼½øÐÐÅÅÐò£»È»ºóɨÃèµÚ¶þ¸ö±í£¨from×Ó¾äÖÐ×îºóµÚ¶þ¸ö±í)£»×îºó½«ËùÓдӵڶþ¸ö±íÖмìË÷³öµÄ¼Ç¼ÓëµÚÒ»¸ö±íÖкÏÊʼǼ½øÐкϲ¢
¡¡¡¡ ÀýÈç: ±í TAB1 16,384 Ìõ¼Ç¼±í TAB2 5 Ìõ¼Ç¼£¬Ñ¡ÔñTAB2×÷Ϊ»ù´¡±í (×îºÃµÄ·½·¨) select count(*) from tab1,tab2 Ö´ÐÐʱ¼ä0.96Ã룬ѡÔñTAB2×÷Ϊ»ù´¡±í (²»¼ÑµÄ·½·¨) select count(*) from tab2,tab1 Ö´ÐÐʱ¼ä26.09Ã룻
Èç¹ûÓÐ3¸öÒÔÉϵıíÁ¬½Ó²éѯ£¬ÄǾÍÐèҪѡÔñ½»²æ±í£¨intersection table£©×÷Ϊ»ù´¡±í£¬½»²æ±íÊÇÖ¸ÄǸö±»ÆäËû±íËùÒýÓÃµÄ±í¡¡¡¡
¡¡¡¡ ÀýÈç:
¡¡¡¡ EMP±íÃèÊöÁËLOCATION±íºÍCATEGORY±íµÄ½»¼¯
¡¡¡¡ SELECT *
¡¡¡¡ from LOCATION ......
SQLSERVER SQLÐÔÄÜÓÅ»¯ ÊÕ²Ø
1.Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)¡¡¡¡
¡¡¡¡ SQLSERVERµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í£¬µ±SQLSERVER´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á¬½ÓËüÃÇ£¬
¡¡¡¡ Ê×ÏÈ£¬É¨ÃèµÚÒ»¸ö±í£¨from×Ó¾äÖÐ×îºóµÄÄǸö±í)²¢¶Ô¼Ç¼½øÐÐÅÅÐò£»È»ºóɨÃèµÚ¶þ¸ö±í£¨from×Ó¾äÖÐ×îºóµÚ¶þ¸ö±í)£»×îºó½«ËùÓдӵڶþ¸ö±íÖмìË÷³öµÄ¼Ç¼ÓëµÚÒ»¸ö±íÖкÏÊʼǼ½øÐкϲ¢
¡¡¡¡ ÀýÈç: ±í TAB1 16,384 Ìõ¼Ç¼±í TAB2 5 Ìõ¼Ç¼£¬Ñ¡ÔñTAB2×÷Ϊ»ù´¡±í (×îºÃµÄ·½·¨) select count(*) from tab1,tab2 Ö´ÐÐʱ¼ä0.96Ã룬ѡÔñTAB2×÷Ϊ»ù´¡±í (²»¼ÑµÄ·½·¨) select count(*) from tab2,tab1 Ö´ÐÐʱ¼ä26.09Ã룻
Èç¹ûÓÐ3¸öÒÔÉϵıíÁ¬½Ó²éѯ£¬ÄǾÍÐèҪѡÔñ½»²æ±í£¨intersection table£©×÷Ϊ»ù´¡±í£¬½»²æ±íÊÇÖ¸ÄǸö±»ÆäËû±íËùÒýÓÃµÄ±í¡¡¡¡
¡¡¡¡ ÀýÈç:
¡¡¡¡ EMP±íÃèÊöÁËLOCATION±íºÍCATEGORY±íµÄ½»¼¯
¡¡¡¡ SELECT *
¡¡¡¡ from LOCATION ......
PL/SQLʵÀý·ÖÎö
µÚÎåÕÂ
1¡¢PL/SQLʵÀý·ÖÎö
1£©ÔÚ¡¾SQLPlus Worksheet¡¿ÖÐÖ±½ÓÖ´ÐÐÈçÏÂSQL´úÂëÍê³ÉÉÏÊö²Ù×÷¡£(´´½¨±í)
¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D
CREATE TABLE "SCOTT"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOT NULL, "CURRENTDATE" DATE NOT NULL)
TABLESPACE "SYSTEM"
2£©ÒÔadminÓû§Éí·ÝµÇ¼¡¾SQLPlus Worksheet¡¿£¬Ö´ÐÐÏÂÁÐSQL´úÂëÍê³ÉÏòÊý¾Ý±íSYSTEM.testableÖÐÊäÈë100¸ö¼Ç¼µÄ¹¦ÄÜ¡£
¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D
set serveroutput on
declare
maxrecords constant int:=100;
i int:=1;
begin
for i in 1..maxrecords loop
insert into SCOTT.testtable(recordnumber,currentdate)
values(i,sysdate);
end loop;
dbms_output.put_line('³É¹¦Â¼ÈëÊý¾Ý£¡');
commit;
end;
2¡¢ÔÚ¡¾SQLPlus Worksheet¡¿ÖÐÖ´ÐÐÏÂÁÐPL/SQL³ÌÐò£¬¸Ã³ÌÐò¶¨ÒåÁËÃûΪageµÄÊý×ÖÐͱäÁ¿£¬³¤¶ÈΪ3£¬³õʼֵΪ26¡£
¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D¨D
declare
age number(3):=26;
begin
commit;
end;
3¡¢ÔÚ¡¾SQLPlus Worksheet¡¿ÖÐ ......
4£®Êý¾ÝÀàÐÍת»»º¯Êý
¡ñÒþʽת»»
¸³ÖµÊ±¿É½øÐеÄÒþʽת»»ÓÐ
VARCHAR2»òCHAR —¡µNUMBER
VARCHAR2»òCHAR —¡µDATE
NUMBER —¡µVARCHAR2
DATE —¡µVARCHAR2
±í´ïʽÖпɽøÐеÄÒþʽת»»ÓÐ
VARCHAR2»òCHAR —¡µNUMBER
VARCHAR2»òCHAR —¡µDATE
¡ñÏÔʽת»»
TO_CHAR(number|date[,’fm___’])°´¸ñʽ°ÑÊý×Ö»òÈÕÆÚת»»³ÉVARCHAR2
TO_NUMBER(char)½«Êý×Ö×Ö·û´®×ª»¯³ÉÊý×Ö
TO_DATE(char[,’fm___’])°´¸ñʽ°Ñ×Ö·û´®×ª»»³ÉÈÕÆÚ
5£®³£¹æº¯Êý
¡ñNVL(expression1,expression2)£ºÈç¹ûexpression1ÖÐÓпÕÖµ´æÔÚ½«Ëüת»¯³É
expression2掙歜
¡ñDECODE(columnname|expression,search1,result1[,search2,result2,…][,default])
  ......
ÄãÊÇ·ñÔÚǧ·½°Ù¼ÆÓÅ»¯SQL Server Êý¾Ý¿âµÄÐÔÄÜ?Èç¹ûÄãµÄÊý¾Ý¿âÖк¬ÓдóÁ¿µÄ±í¸ñ£¬°ÑÕâЩ±í¸ñ·ÖÇø·ÅÈë¶ÀÁ¢µÄÎļþ×é¿ÉÄÜ»áÈÃÄãÊÜÒæ·Ëdz¡£SQL Server 2005ÒýÈëµÄ±í·ÖÇø¼¼Êõ£¬ÈÃÓû§Äܹ»°ÑÊý¾Ý·ÖÉ¢´æ·Åµ½²»Í¬µÄÎïÀí´ÅÅÌÖУ¬Ìá¸ßÕâЩ´ÅÅ̵IJ¢Ðд¦ÀíÐÔÄÜÒÔÓÅ»¯²éѯÐÔÄÜ¡£
¡¡¡¡SQL ServerÊý¾Ý¿â±í·ÖÇø²Ù×÷¹ý³ÌÓÉÈý¸ö²½Öè×é³É£º
¡¡¡¡1. ´´½¨·ÖÇøº¯Êý
¡¡¡¡2. ´´½¨·ÖÇø¼Ü¹¹
¡¡¡¡3. ¶Ô±í½øÐзÖÇø
¡¡¡¡ÏÂÃæ½«¶Ôÿ¸ö²½Öè½øÐÐÏêϸ½éÉÜ¡£
¡¡¡¡²½ÖèÒ»£º´´½¨Ò»¸ö·ÖÇøº¯Êý
¡¡¡¡´Ë·ÖÇøº¯ÊýÓÃÓÚ¶¨ÒåÄãÏ£ÍûSQL ServerÈçºÎ¶ÔÊý¾Ý½øÐзÖÇøµÄ²ÎÊýÖµ([u]how[/u])¡£Õâ¸ö²Ù×÷²¢²»Éæ¼°Èκαí¸ñ£¬Ö»Êǵ¥´¿µÄ¶¨ÒåÁËÒ»Ïî¼¼ÊõÀ´·Ö¸îÊý¾Ý¡£
¡¡¡¡ÎÒÃÇ¿ÉÒÔͨ¹ýÖ¸¶¨Ã¿¸ö·ÖÇøµÄ±ß½çÌõ¼þÀ´¶¨Òå·ÖÇø¡£ÀýÈ磬¼Ù¶¨ÎÒÃÇÓÐÒ»·ÝCustomers±í£¬ÆäÖаüº¬Á˹ØÓÚËùÓпͻ§µÄÐÅÏ¢£¬ÒÔÒ»Ò»¶ÔÓ¦µÄ¿Í»§±àºÅ(´Ó1µ½1,000,000)À´Çø·Ö¡£ÎÒÃǽ«Í¨¹ýÒÔϵķÖÇøº¯Êý°ÑÕâ¸ö±í·ÖΪËĸö´óСÏàͬµÄ·ÖÇø£º¡¡¡¡
CREATE PARTITION FUNCTION customer_partfunc (int)
¡¡¡¡AS RANGE RIGHT
¡¡¡¡FOR VALUES (250000, 500000, 750000)
¡¡¡¡ÕâЩ±ß½çÖµ¶¨ÒåÁËËĸö·ÖÇø¡£µÚÒ»¸ö·ÖÇø°üÀ¨ËùÓ ......
1¡¢ËµÃ÷£º¸´ÖƱí(Ö»¸´Öƽṹ,Ô´±íÃû£ºa бíÃû£ºb) (Access¿ÉÓÃ)
·¨Ò»£ºselect * into b from a where 1 <>1
·¨¶þ£ºselect top 0 * into b from a
2¡¢ËµÃ÷£º¿½±´±í(¿½±´Êý¾Ý,Ô´±íÃû£ºa Ä¿±ê±íÃû£ºb) (Access¿ÉÓÃ)
insert into b(a, b, c) select d,e,f from b;
3¡¢ËµÃ÷£º¿çÊý¾Ý¿âÖ®¼ä±íµÄ¿½±´(¾ßÌåÊý¾ÝʹÓþø¶Ô·¾¶) (Access¿ÉÓÃ)
insert into b(a, b, c) select d,e,f from b in ‘¾ßÌåÊý¾Ý¿â’ where Ìõ¼þ
Àý×Ó£º..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4¡¢ËµÃ÷£º×Ó²éѯ(±íÃû1£ºa ±íÃû2£ºb)
select a,b,c from a where a IN (select d from b ) »òÕß: select a,b,c from a where a IN (1,2,3)
5¡¢ËµÃ÷£ºÏÔʾÎÄÕ¡¢Ìá½»È˺Í×îºó»Ø¸´Ê±¼ä
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6¡¢ËµÃ÷£ºÍâÁ¬½Ó²éѯ(±íÃû1£ºa ±íÃû2£ºb)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7¡¢ËµÃ÷£ºÔÚÏßÊÓͼ²éѯ(±íÃû1£ºa )
select * from (SELECT a,b,c from a) T where t.a > 1;
8¡¢ËµÃ÷£ ......