??xml version="1.0" encoding="utf-8" standalone="yes"?> 某种意义上也可以说是 sqlserver ?nbsp;mysql 的常用函数对比?/p>
数学函数 1.l对?nbsp; 2.取整(? 3.取整Q小Q?nbsp; 4.取整Q截取) 5.四舍五入 6.e为底的幂 7.取e为底的对?nbsp; 8.?0为底Ҏ 9.取^?nbsp; 10.取^Ҏ 11.求Q意数为底的幂 12.取随机数 13.取符?nbsp; 14.圆周?nbsp; 15.sin,cos,tan 参数都以弧度为单?nbsp; 16.Asin,Acos,Atan,Atan2 q回弧度 17.弧度角度互换(SQLServerQOracle不知? 数值间比较 18. 求集合最大?nbsp; O:select greatest(1,-2,4,3) value from dual 19. 求集合最?nbsp; O:select least(1,-2,4,3) value from dual 20.如何处理null?F2中的null?0代替) 21.求字W序?nbsp; 22.从序h字符 23.q接 23.子串位置 --q回3 23.模糊子串的位|?nbsp;--q回2,参数L中间%则返? 24.求子?nbsp; 25.子串代替 q回aijklmnef 26.子串全部替换 27.长度 29.单词首字母大?nbsp; 30.左补I格QLPAD的第一个参CؓI格则同space函数Q?nbsp; 31.双I格QRPAD的第一个参CؓI格则同space函数Q?nbsp; 32.删除I格 33. 重复字符?nbsp; 34.发音怼性比?q两个单词返回gP发音相同) 日期函数 36.前后几日 37.求日?nbsp; 38.求时?nbsp; 39.取日期时间的其他部分 参数---------------------------------下表需要补?nbsp; 40.当月最后一?nbsp; 41.本星期的某一天(比如星期日) 42.字符串{旉 43.求两日期某一部分的差Q比如秒Q?nbsp; 44.Ҏ差值求新的日期Q比如分钟) 45.求不同时区时?nbsp; -----时区参数,北京在东8区应该是Ydt------- 格式: 说明: 例子: =================================================================== style数字在{换时间时的含义如? ------------------------------------------------------------------------------------------------------------ 语句及查询结果: expression 是Q何有效的 Microsoft® SQL Server™ 表达式。? data_type 目标pȝ所提供的数据类型,包括 bigint ?sql_variant。不能用用户定义的数据cd?br>length nchar?strong>nvarchar?strong>char?strong>varchar?strong>binary ?varbinary 数据cd的可选参数? style 日期格式样式Q借以?datetime ?smalldatetime 数据转换为字W数据(nchar?strong>nvarchar?strong>char?strong>varchar?strong>nchar ?nvarchar 数据cdQ;或者字W串格式样式Q借以?float?strong>real?strong>money ?smallmoney 数据转换为字W数据(nchar?strong>nvarchar?strong>char?strong>varchar?strong>nchar ?nvarchar 数据cdQ?/font> SQL Server 支持使用U威特算法的阿拉伯样式中的数据格式?/font> 在表中,左侧的两列表C将 datetime ?smalldatetime 转换为字W数据的 style 倹{给 style 值加 100Q可获得包括世纪C的四位年?(yyyy)?/font>
]]>
S:select abs(-1) value
O:select abs(-1) value from dual
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2
S:select power(3,4) value 81
O:select power(3,4) value from dual 81
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual;
S:select sign(-8) value -1
O:select sign(-8) value from dual -1
S:SELECT PI() value 3.1415926535897931
O:不知?nbsp;
例如Qselect sin(PI()/2) value 得到1QSQLServerQ?nbsp;
DEGREESQ弧?〉角?nbsp;
RADIANSQ角?〉弧?nbsp;
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
S:select ascii('a') value
O:select ascii('a') value from dual
S:select char(97) value
O:select chr(97) value from dual
S:select '11'+'22'+'33' value
O:select CONCAT('11','22') 33 value from dual
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from dual
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle没发玎ͼ但是instr可以通过W四个参数控制出现次?nbsp;
select INSTR('sdsfasdqe','sd',1,2) value from dual q回6
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from dual
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
S:没发?nbsp;
O:select Translate('fasdbfasegas','fa','? ) value from dual
S:len,datalength
O:length
www.knowsky.com
28.大小写{?nbsp;lower,upper
S:没发?nbsp;
O:select INITCAP('abcd dsaf df') value from dual
S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from dual
S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from dual
S:ltrim,rtrim
O:ltrim,rtrim,trim
S:select REPLICATE('abcd',2) value
O:没发?nbsp;
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差
q回0-4Q?为同韻I1最?nbsp;
35.pȝ旉
S:select getdate() value
O:select sysdate value from dual
直接与整数相加减
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from dual
select to_char(sysdate,'yyyy-mm-dd') value from dual
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from dual
S:DATEPART ?nbsp;DATENAME 函数 Q第一个参数决定)
O:to_char函数 W二个参数决?nbsp;
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O无效)
dayofyear dy, y (O表星?
day dd, d (d O无效)
week wk, ww (wk O无效)
weekday dw (O不清?
Hour hh,hh12,hh24 (hh12,hh24 S无效)
minute mi, n (n O无效)
second ss, s (s O无效)
millisecond ms (O无效)
----------------------------------------------
S:不知?nbsp;
O:select LAST_DAY(sysdate) value from dual
S:不知?nbsp;
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
S:可以直接转或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用两个日期相减(比如d1-d2=12.3Q?nbsp;
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
S:不知?nbsp;
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
AST ADT 大西z标准时?nbsp;
BST BDT 白oh准时?nbsp;
CST CDT 中部标准旉
EST EDT 东部标准旉
GMT 格林治标准旉
HST HDT 阿拉斯加?夏威h准时?nbsp;
MST MDT 山区标准旉
NST U芬兰标准时?nbsp;
PST PDT 太^z标准时?nbsp;
YST YDT YUKON标准旉
]]>
CONVERT(data_type,expression[,style])
此样式一般在旉cd(datetime,smalldatetime)与字W串cd(nchar,nvarchar,char,varchar)
怺转换的时候才用到.
SELECT CONVERT(varchar(30),getdate(),101) now
l果?
now
---------------------------------------
|09/15/2001
Style(2位表C年? | Style(4位表C年? | 输入输出格式
------------------------------------------------------------------------------------------------------------
0 | 100 | mon dd yyyy hh:miAM(或PM)
------------------------------------------------------------------------------------------------------------
1 | 101 国 | mm/dd/yy
------------------------------------------------------------------------------------------------------------
2 | 102 ANSI | yy-mm-dd
------------------------------------------------------------------------------------------------------------
3 | 103 英法 | dd/mm/yy
------------------------------------------------------------------------------------------------------------
4 | 104 德国 | dd.mm.yy
------------------------------------------------------------------------------------------------------------
5 | 105 意大?nbsp; | dd-mm-yy
------------------------------------------------------------------------------------------------------------
6 | 106 | dd mon yy
------------------------------------------------------------------------------------------------------------
7 | 107 | mon dd,yy
------------------------------------------------------------------------------------------------------------
8 | 108 | hh:mm:ss
------------------------------------------------------------------------------------------------------------
9 | 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
------------------------------------------------------------------------------------------------------------
10 | 110 国 | mm-dd-yy
------------------------------------------------------------------------------------------------------------
11 | 111 日本 | yy/mm/dd
------------------------------------------------------------------------------------------------------------
12 | 112 ISO | yymmdd
------------------------------------------------------------------------------------------------------------
13 | 113 Ƨ洲默认?nbsp; | dd mon yyyy hh:mi:ss:mmm(24时?
------------------------------------------------------------------------------------------------------------
14 | 114 | hh:mi:ss:mmm(24时?
------------------------------------------------------------------------------------------------------------
20 | 120 ODBC 规范 | yyyy-mm-dd hh:mi:ss(24时?
------------------------------------------------------------------------------------------------------------
21 | 121 | yyyy-mm-dd hh:mi:ss:mmm(24时?
------------------------------------------------------------------------------------------------------------
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
SELECT CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
说明:
使用 CONVERTQ?/font>CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
参数
不带世纪C (yy)
带世U数?(yyyy)
标准
输入/输出**
-
0 ?100 (*)
默认?/font>
mon dd yyyy hh:miAMQ或 PMQ?/font>
1
101
国
mm/dd/yyyy
2
102
ANSI
yy.mm.dd
3
103
英国/法国
dd/mm/yy
4
104
德国
dd.mm.yy
5
105
意大?/font>
dd-mm-yy
6
106
-
dd mon yy
7
107
-
mon dd, yy
8
108
-
hh:mm:ss
-
9 ?109 (*)
默认?+ 毫秒
mon dd yyyy hh:mi:ss:mmmAMQ或 PMQ?/font>
10
110
国
mm-dd-yy
11
111
日本
yy/mm/dd
12
112
ISO
yymmdd
-
13 ?113 (*)
Ƨ洲默认?+ 毫秒
dd mon yyyy hh:mm:ss:mmm(24h)
14
114
-
hh:mi:ss:mmm(24h)
-
20 ?120 (*)
ODBC 规范
yyyy-mm-dd hh:mm:ss[.fff]
-
21 ?121 (*)
ODBC 规范Q带毫秒Q?/font>
yyyy-mm-dd hh:mm:ss[.fff]
-
126(***)
ISO8601
yyyy-mm-dd Thh:mm:ss.mmmQ不含空|
-
130*
Hijri****
dd mon yyyy hh:mi:ss:mmmAM
-
131*
Hijri****
dd/mm/yy hh:mi:ss:mmmAM
* 默认|style 0 ?100? ?109?3 ?113?0 ?120?1 ?121Q始l返回世U数?(yyyy)?br>** 当{换ؓ datetime时输入;当{换ؓ字符数据时输出?br>*** 专门用于 XML。对于从 datetime?smalldatetime ?character 数据的{换,输出格式如表中所C。对于从 float?strong>money ?smallmoney ?character 数据的{换,输出{同?style 2。对于从 real ?character 数据的{换,输出{同?style 1?br>****Hijri 是具有几U变化Ş式的日历pȝQMicrosoft® SQL Server™ 2000 使用其中的科威特法?/font>
重要 默认情况下,SQL Server Ҏ截止q䆾 2049 解释两位数字的年份。即Q两位数字的q䆾 49 被解释ؓ 2049Q而两位数字的q䆾 50 被解释ؓ 1950。许多客L应用E序Q例如那些基?OLE 自动化对象的客户端应用程序)都?2030 作ؓ截止q䆾。SQL Server 提供一个配|选项Q?两位数字的截止年?Q,借以更改 SQL Server 所使用的截止年份ƈҎ期进行一致性处理。然而最安全的办法是指定四位数字q䆾?/font>
当从 smalldatetime 转换为字W数据时Q包含秒或毫U的样式在q些位置上显C零。当?datetime ?smalldatetime D行{换时Q可以通过使用适当?char ?varchar 数据cd长度来截断不需要的日期部分?/font>
2.CHR
l出整数,q回对应的字W?
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
?A
3.CONCAT
q接两个字符?
SQL> select concat(?10-??8888888?||’{23?高乾竞电?from dual;
高乾竞电?
----------------
010-88888888?3
4.INITCAP
q回字符串ƈ字W串的第一个字母变为大?
SQL> select initcap(’smith? upp from dual;
UPP
-----
Smith
5.INSTR(C1,C2,I,J)
在一个字W串中搜索指定的字符,q回发现指定的字W的位置;
C1 被搜索的字符?
C2 希望搜烦的字W串
I 搜烦的开始位|?默认?
J 出现的位|?默认?
SQL> select instr(’oracle traning?’ra?1,2) instring from dual;
INSTRING
---------
9
6.LENGTH
q回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;
NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ --------- --------------------
高乾?3 北京市v锭区 6 9999.99 7
7.LOWER
q回字符?q将所有的字符写
SQL> select lower(’AaBbCcDd?AaBbCcDd from dual;
AABBCCDD
--------
aabbccdd
8.UPPER
q回字符?q将所有的字符大写
SQL> select upper(’AaBbCcDd? upper from dual;
UPPER
--------
AABBCCDD
9.RPAD和LPAD(_脓字符)
RPAD 在列的右边粘贴字W?
LPAD 在列的左边粘贴字W?
SQL> select lpad(rpad(’gao?10,??,17,??from dual;
LPAD(RPAD(’GAO?1
-----------------
*******gao*******
不够字符则用*来填?
10.LTRIM和RTRIM
LTRIM 删除左边出现的字W串
RTRIM 删除双出现的字W串
SQL> select ltrim(rtrim(?gao qian jing ???,?? from dual;
LTRIM(RTRIM(?
-------------
gao qian jing
11.SUBSTR(string,start,count)
取子字符?从start开?取count?
SQL> select substr(?3088888888?3,8) from dual;
SUBSTR(?
--------
08888888
12.REPLACE(’string?’s1?’s2?
string 希望被替换的字符或变?
s1 被替换的字符?
s2 要替换的字符?
SQL> select replace(’he love you?’he?’i? from dual;
REPLACE(’H
----------
i love you
13.SOUNDEX
q回一个与l定的字W串读音相同的字W串
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values(’weather?;
SQL> insert into table1 values(’wether?;
SQL> insert into table1 values(’gao?;
SQL> select xm from table1 where soundex(xm)=soundex(’weather?;
XM
--------
weather
wether
14.TRIM(’s?from ’string?
LEADING 剪掉前面的字W?
TRAILING 剪掉后面的字W?
如果不指?默认为空格符
15.ABS
q回指定值的l对?
SQL> select abs(100),abs(-100) from dual;
ABS(100) ABS(-100)
--------- ---------
100 100
16.ACOS
l出反余弦的?
SQL> select acos(-1) from dual;
ACOS(-1)
---------
3.1415927
17.ASIN
l出反正弦的?
SQL> select asin(0.5) from dual;
ASIN(0.5)
---------
.52359878
18.ATAN
q回一个数字的反正切?
SQL> select atan(1) from dual;
ATAN(1)
---------
.78539816
19.CEIL
q回大于或等于给出数字的最整?
SQL> select ceil(3.1415927) from dual;
CEIL(3.1415927)
---------------
4
20.COS
q回一个给定数字的余u
SQL> select cos(-3.1415927) from dual;
COS(-3.1415927)
---------------
-1
21.COSH
q回一个数字反余u?
SQL> select cosh(20) from dual;
COSH(20)
---------
242582598
22.EXP
q回一个数字e的nơ方?
SQL> select exp(2),exp(1) from dual;
EXP(2) EXP(1)
--------- ---------
7.3890561 2.7182818
23.FLOOR
对给定的数字取整?
SQL> select floor(2345.67) from dual;
FLOOR(2345.67)
--------------
2345
24.LN
q回一个数字的Ҏ?
SQL> select ln(1),ln(2),ln(2.7182818) from dual;
LN(1) LN(2) LN(2.7182818)
--------- --------- -------------
0 .69314718 .99999999
25.LOG(n1,n2)
q回一个以n1为底n2的对?
SQL> select log(2,1),log(2,4) from dual;
LOG(2,1) LOG(2,4)
--------- ---------
0 2
26.MOD(n1,n2)
q回一个n1除以n2的余?
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;
MOD(10,3) MOD(3,3) MOD(2,3)
--------- --------- ---------
1 0 2
27.POWER
q回n1的n2ơ方?
SQL> select power(2,10),power(3,3) from dual;
POWER(2,10) POWER(3,3)
----------- ----------
1024 27
28.ROUND和TRUNC
按照指定的精度进行舍?
SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;
ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
----------- ------------ ----------- ------------
56 -55 55 -55
29.SIGN
取数字n的符?大于0q回1,于0q回-1,{于0q回0
SQL> select sign(123),sign(-100),sign(0) from dual;
SIGN(123) SIGN(-100) SIGN(0)
--------- ---------- ---------
1 -1 0
30.SIN
q回一个数字的正u?
SQL> select sin(1.57079) from dual;
SIN(1.57079)
------------
1
31.SIGH
q回双曲正u的?
SQL> select sin(20),sinh(20) from dual;
SIN(20) SINH(20)
--------- ---------
.91294525 242582598
32.SQRT
q回数字n的根
SQL> select sqrt(64),sqrt(10) from dual;
SQRT(64) SQRT(10)
--------- ---------
8 3.1622777
33.TAN
q回数字的正切?
SQL> select tan(20),tan(10) from dual;
TAN(20) TAN(10)
--------- ---------
2.2371609 .64836083
34.TANH
q回数字n的双曲正切?
SQL> select tanh(20),tan(20) from dual;
TANH(20) TAN(20)
--------- ---------
1 2.2371609
35.TRUNC
按照指定的精度截取一个数
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;
TRUNC1 TRUNC(124.16666,2)
--------- ------------------
100 124.16
36.ADD_MONTHS
增加或减L?
SQL> select to_char(add_months(to_date(?99912?’yyyymm?,2),’yyyymm? from dual;
TO_CHA
------
200002
SQL> select to_char(add_months(to_date(?99912?’yyyymm?,-2),’yyyymm? from dual;
TO_CHA
------
199910
37.LAST_DAY
q回日期的最后一?
SQL> select to_char(sysdate,’yyyy.mm.dd?,to_char((sysdate)+1,’yyyy.mm.dd? from dual;
TO_CHAR(SY TO_CHAR((S
---------- ----------
2004.05.09 2004.05.10
SQL> select last_day(sysdate) from dual;
LAST_DAY(S
----------
31-5?-04
38.MONTHS_BETWEEN(date2,date1)
l出date2-date1的月?
SQL> select months_between(?9-12?1999??9-3?1999? mon_between from dual;
MON_BETWEEN
-----------
9
SQL>selectmonths_between(to_date(?000.05.20?’yyyy.mm.dd?,to_date(?005.05.20?’yyyy.mm.dd?) mon_betw from dual;
MON_BETW
---------
-60
39.NEW_TIME(date,’this?’that?
l出在this时区=other时区的日期和旉
SQL> select to_char(sysdate,’yyyy.mm.dd hh24:mi:ss? bj_time,to_char(new_time
2 (sysdate,’PDT?’GMT?,’yyyy.mm.dd hh24:mi:ss? los_angles from dual;
BJ_TIME LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32
40.NEXT_DAY(date,’day?
l出日期date和星期x之后计算下一个星期的日期
SQL> select next_day(?8-5?2001?’星期五? next_day from dual;
NEXT_DAY
----------
25-5?-01
41.SYSDATE
用来得到pȝ的当前日?
SQL> select to_char(sysdate,’dd-mm-yyyy day? from dual;
TO_CHAR(SYSDATE,?
-----------------
09-05-2004 星期?
trunc(date,fmt)按照l出的要求将日期截断,如果fmt=’mi’表CZ留分,截断U?
SQL> select to_char(trunc(sysdate,’hh?,’yyyy.mm.dd hh24:mi:ss? hh,
2 to_char(trunc(sysdate,’mi?,’yyyy.mm.dd hh24:mi:ss? hhmm from dual;
HH HHMM
------------------- -------------------
2004.05.09 11:00:00 2004.05.09 11:17:00
42.CHARTOROWID
字W数据类型{换ؓROWIDcd
SQL> select rowid,rowidtochar(rowid),ename from scott.emp;
ROWID ROWIDTOCHAR(ROWID) ENAME
------------------ ------------------ ----------
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
43.CONVERT(c,dset,sset)
源字符?sset从一个语a字符集{换到另一个目的dset字符?
SQL> select convert(’strutz?’we8hp?’f7dec? "conversion" from dual;
conver
------
strutz
44.HEXTORAW
一个十六进制构成的字符串{换ؓ二进?
45.RAWTOHEXT
一个二q制构成的字W串转换为十六进?
46.ROWIDTOCHAR
ROWID数据cd转换为字W类?
47.TO_CHAR(date,’format?
SQL> select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss? from dual;
TO_CHAR(SYSDATE,’YY
-------------------
2004/05/09 21:14:41
48.TO_DATE(string,’format?
字W串转化为ORACLE中的一个日?
49.TO_MULTI_BYTE
字W串中的单字节字W{化ؓ多字节字W?
SQL> select to_multi_byte(’高? from dual;
TO
--
?
50.TO_NUMBER
给出的字符转换为数?
SQL> select to_number(?999? year from dual;
YEAR
---------
1999
51.BFILENAME(dir,file)
指定一个外部二q制文g
SQL>insert into file_tb1 values(bfilename(’lob_dir1?’image1.gif?);
52.CONVERT(’x?’desc?’source?
x字段或变量的源source转换为desc
SQL> select sid,serial#,username,decode(command,
2 0,’none?
3 2,’insert?
4 3,
5 ’select?
6 6,’update?
7 7,’delete?
8 8,’drop?
9 ’other? cmd from v$session where type!=’background?
SID SERIAL# USERNAME CMD
--------- --------- ------------------------------ ------
1 1 none
2 1 none
3 1 none
4 1 none
5 1 none
6 1 none
7 1275 none
8 1275 none
9 20 GAO select
10 40 GAO none
53.DUMP(s,fmt,start,length)
DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2cd的?
SQL> col global_name for a30
SQL> col dump_string for a50
SQL> set lin 200
SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;
GLOBAL_NAME DUMP_STRING
------------------------------ --------------------------------------------------
ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D
54.EMPTY_BLOB()和EMPTY_CLOB()
q两个函数都是用来对大数据类型字D进行初始化操作的函?
55.GREATEST
q回一l表辑ּ中的最大?x较字W的~码大小.
SQL> select greatest(’AA?’AB?’AC? from dual;
GR
--
AC
SQL> select greatest(’啊?’安?’天? from dual;
GR
--
?
56.LEAST
q回一l表辑ּ中的最?
SQL> select least(’啊?’安?’天? from dual;
LE
--
?
57.UID
q回标识当前用户的唯一整数
SQL> show user
USER ?GAO"
SQL> select username,user_id from dba_users where user_id=uid;
USERNAME USER_ID
------------------------------ ---------
GAO 25
58.USER
q回当前用户的名?
SQL> select user from dual;
USER
------------------------------
GAO
59.USEREVN
q回当前用户环境的信?opt可以?
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA 查看当前用户是否是DBA如果是则q回true
SQL> select userenv(’isdba? from dual;
USEREN
------
FALSE
SQL> select userenv(’isdba? from dual;
USEREN
------
TRUE
SESSION
q回会话标志
SQL> select userenv(’sessionid? from dual;
USERENV(’SESSIONID?
--------------------
152
ENTRYID
q回会话人口标志
SQL> select userenv(’entryid? from dual;
USERENV(’ENTRYID?
------------------
0
INSTANCE
q回当前INSTANCE的标?
SQL> select userenv(’instance? from dual;
USERENV(’INSTANCE?
-------------------
1
LANGUAGE
q回当前环境变量
SQL> select userenv(’language? from dual;
USERENV(’LANGUAGE?
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG
q回当前环境的语a的羃?
SQL> select userenv(’lang? from dual;
USERENV(’LANG?
----------------------------------------------------
ZHS
TERMINAL
q回用户的终端或机器的标?
SQL> select userenv(’terminal? from dual;
USERENV(’TERMINA
----------------
GAO
VSIZE(X)
q回X的大?字节)?
SQL> select vsize(user),user from dual;
VSIZE(USER) USER
----------- ------------------------------
6 SYSTEM
60.AVG(DISTINCT|ALL)
all表示Ҏ有的值求q_?distinct只对不同的值求q_?
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理?
SQLWKS> insert into table3 values(’gao?1111.11);
SQLWKS> insert into table3 values(’gao?1111.11);
SQLWKS> insert into table3 values(’zhu?5555.55);
SQLWKS> commit;
SQL> select avg(distinct sal) from gao.table3;
AVG(DISTINCTSAL)
----------------
3333.33
SQL> select avg(all sal) from gao.table3;
AVG(ALLSAL)
-----------
2592.59
61.MAX(DISTINCT|ALL)
求最大?ALL表示Ҏ有的值求最大?DISTINCT表示对不同的值求最大?相同的只取一?
SQL> select max(distinct sal) from scott.emp;
MAX(DISTINCTSAL)
----------------
5000
62.MIN(DISTINCT|ALL)
求最?ALL表示Ҏ有的值求最?DISTINCT表示对不同的值求最?相同的只取一?
SQL> select min(all sal) from gao.table3;
MIN(ALLSAL)
-----------
1111.11
63.STDDEV(distinct|all)
求标准差,ALL表示Ҏ有的值求标准?DISTINCT表示只对不同的值求标准?
SQL> select stddev(sal) from scott.emp;
STDDEV(SAL)
-----------
1182.5032
SQL> select stddev(distinct sal) from scott.emp;
STDDEV(DISTINCTSAL)
-------------------
1229.951
64.VARIANCE(DISTINCT|ALL)
求协方差
SQL> select variance(sal) from scott.emp;
VARIANCE(SAL)
-------------
1398313.9
65.GROUP BY
主要用来对一l数q行l计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;
DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
10 3 8750
20 5 10875
30 6 9400
66.HAVING
对分l统计再加限制条?
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;
DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;
DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400
67.ORDER BY
用于Ҏ询到的结果进行排序输?
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;
DEPTNO ENAME SAL
--------- ---------- ---------
10 KING 5000
10 CLARK 2450
10 MILLER 1300
20 SCOTT 3000
20 FORD 3000
20 JONES 2975
20 ADAMS 1100
20 SMITH 800
30 BLAKE 2850
30 ALLEN 1600
30 TURNER 1500
30 WARD 1250
30 MARTIN 1250
30 JAMES 950
SQL语句先前写的时候,很容易把一些特D的用法忘记Q特此整理了一下SQL语句操作Q方便写SQL时方便一点!
一、基
1、说明:创徏数据?br />CREATE DATABASE database-name
2、说明:删除数据?br />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],..)
Ҏ已有的表创徏新表Q?
AQcreate table tab_new like tab_old (使用旧表创徏新表)
BQcreate 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中列加上后数据类型也不能改变Q唯一能改变的是增加varcharcd的长度?br />7、说明:d主键Q?Alter table tabname add primary key(col)
说明Q删除主键: Alter table tabname drop primary key(col)
8、说明:创徏索引Qcreate [unique] index idxname on tabname(col?)
删除索引Qdrop index idxname
注:索引是不可更改的Q想更改必须删除重新建?br />9、说明:创徏视图Qcreate view viewname as select statement
删除视图Qdrop view viewname
10、说明:几个单的基本的sql语句
选择Qselect * from table1 where 范围
插入Qinsert into table1(field1,field2) values(value1,value2)
删除Qdelete from table1 where 范围
更新Qupdate table1 set field1=value1 where 范围
查找Qselect * from table1 where field1 like ?value1%?---like的语法很_֦Q查资料!
排序Qselect * from table1 order by field1,field2 [desc]
LQselect count as totalcount from table1
求和Qselect sum(field1) as sumvalue from table1
q_Qselect avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最:select min(field1) as minvalue from table1
11、说明:几个高查询q算?br />AQ?UNION q算W?
UNION q算W通过l合其他两个l果表(例如 TABLE1 ?TABLE2Qƈ消去表中M重复行而派生出一个结果表。当 ALL ?UNION 一起用时Q即 UNION ALLQ,不消除重复行。两U情况下Q派生表的每一行不是来?TABLE1 是来自 TABLE2?
BQ?EXCEPT q算W?
EXCEPT q算W通过包括所有在 TABLE1 中但不在 TABLE2 中的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?EXCEPT 一起用时 (EXCEPT ALL)Q不消除重复行?
CQ?INTERSECT q算W?br />INTERSECT q算W通过只包?TABLE1 ?TABLE2 中都有的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?INTERSECT 一起用时 (INTERSECT ALL)Q不消除重复行?
注:使用q算词的几个查询l果行必L一致的?
12、说明:使用外连?
A、left outer joinQ?
左外q接Q左q接Q:l果集几包括q接表的匚w行,也包括左q接表的所有行?
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
BQright outer join:
叛_q接(双?Q结果集既包括连接表的匹配连接行Q也包括双接表的所有行?
CQfull outer joinQ?
全外q接Q不仅包括符可接表的匹配行Q还包括两个q接表中的所有记录?/p>
二、提?/p>
1、说明:复制?只复制结?源表名:a 新表名:b) (Access可用)
法一Qselect * into b from a where 1<>1
法二Qselect top 0 * into b from a
2、说明:拯?拯数据,源表名:a 目标表名Qb) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拯(具体数据使用l对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库?where 条g
例子Q?.from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查?表名1Qa 表名2Qb)
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、说明:昄文章、提交h和最后回复时?br />select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查?表名1Qa 表名2Qb)
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、说明:在线视图查询(表名1Qa )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用?between限制查询数据范围时包括了边界?not between不包?br />select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数? and 数?
9、说明:in 的用方?br />select * from table1 where a [not] in (‘??’??’??’??
10、说明:两张兌表,删除主表中已l在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题Q?br />select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提?
SQL: select * from 日程安排 where datediff('minute',f开始时?getdate())>5
13、说明:一条sql 语句搞定数据库分?br />select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:?0条记?br />select top 10 * form table1 where 范围
15、说明:选择在每一lb值相同的数据中对应的a最大的记录的所有信?cMq样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成l排?{等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行ƈ消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数?br />select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段Q以type字段排列Qcase可以方便地实现多重选择Q类似select 中的case?br />select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
昄l果Q?br />type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择?0?5的记?br />select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
三、技?/p>
1?=1Q?=2的用,在SQL语句l合时用的较?/p>
“where 1=1?是表C选择全部 “where 1=2”全部不选,
如:
if @strWhere !=''
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
我们可以直接写成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
2、收~数据库
--重徏索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收羃数据和日?br />DBCC SHRINKDB
DBCC SHRINKFILE
3、压~数据库
dbcc shrinkdatabase(dbname)
4、{UL据库l新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
7、日志清?br />SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文g?br />@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想讑֮的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
8、说明:更改某个?br />exec sp_changeobjectowner 'tablename','dbo'
9、存储更改全部表
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
10、SQL SERVER中直接@环写入数?br />declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
作ؓ动词Q它表示两个或多个表的内容l合在一起ƈ产生一个结果集Q该l果集对每个表的列和行进行合q。表的联接一般都使用它们共有的数据。例如,您可以对有一个共?pub_id 列的 titles 表和 publishers 表联接,产生一个包含书名信息和出版商信息的l果集?/p>
作ؓ名词Q表C对表进行联接的q程或结果,如在术语"内部联接"中表C对表联接的一U特D的Ҏ?/p>
一个比较子句,它指定了表是如何通过它们的联接字D늛联系的。最普通的联接条g是相{(一个等联接Q,在等联接中联接字D늚值必ȝ同。例如,您可以通过?titles 表和 publishers 表的 pub_id 列中查找相匹配的D接这两个表。然而,M比较q算W都可以是比较条件的一部分?/p>
一个联接,在该联接中只有当联接字段的值满x些特定的准则时才两个表的记录进行结合ƈdC个查询结果中。例如,在查询设计器视图中,表之间的~省联接是一个内部联接,它只有当联接字段的值相{时才从两个表中选择记录?/p>
一个联接,该联接还包括那些和联接表中记录不相关的记录。您可以创徏一个外部联接的三种变Ş来指定所包括的不匚w行:左外部联接、右外部联接和完全外部联接?/p>
一U外部联接类型,在该联接中包括第一个命名表Q左边的表,它出现在 JOIN 子句的最左边Q的所有行。右边表中没有匹配的行不出现。例如,您可以在 titles 表和 publishers 表之间创Z个左外部联接Q以包括所有的书名Q不Z名有无出版商的信息?/p>
一U外部联接,在该联接中包括第二个命名表(双的表Q出现在 JOIN 子句中的最双Q的所有行。不包括左边表中没有匚w的行。例如,titles 表和 publishers 表之间的一个右外部联接包括所有的出版商,甚至包括那些?titles 表中没有书名的出版商?/p>
以上是MSDN中对链接的定义。现在我们就从这四种链接所使用的不同方法来看他们的l果有什么不同?/p>
titles 表sh(书号) ph(出版商编?232342 0010432 00382478123 005
publishers ?br />ph(出版商编? mc(出版商名U?
001 U虎
002 rmh
003 hazl
现要把这两个表的内容合成如下的表l构Q?/p>
sh(书号) ph(出版商编? mc(出版商名U?
现在看看采用四种链接Ҏ的结果会有什么不同。先说说他们的命令:
内联接:
sele titles.sh,publishers.ph,publishers.mc ;
from titles inner join publishers ; &&内联接中的inner是可以省略的
on titles.ph=publishers.ph
外联接:
sele titles.sh,publishers.ph,publishers.mc ;
from titles outer join publishers ;
on titles.ph=publishers.ph
左联接:
sele titles.sh,publishers.ph,publishers.mc ;
from titles left join publishers ;
on titles.ph=publishers.ph
双接:
sele titles.sh,publishers.ph,publishers.mc ;
from titles right join publishers ;
on titles.ph=publishers.ph
大家可能看到Q除了在join之前的那个关键字不同之外Q其他地Ҏ一模一LQ链接条?即on那一部分)也是一L。结果:
内链接:
232342 001 U虎0432 003 hazl
全链接:
232342 001 001 U虎Null Null 002 rmh0432 003 003 hazl82478123 005 Null Null
左链接:
232342 001 001 U虎0432 003 003 hazl82478123 005 Null Null
右链接:
232342 001 001 U虎Null Null 002 rmh0432 003 003 hazl
所以我们很ҎCQ?/p>
1、左链接Q就是以join的左辚w个表??Q以titles.ph=publishers.ph为判断标准,不管双的表有没有对应的记录Q都要把左边表的记录攑֜l果中去Q但双表没有相应的记录那应该放个什么数D去?{案是就放个NullQ表C没有。在左链接中Q某记录在右边表Q却不在左边表,那是不放q去l果ȝQ原因是左边表才??Q要不要攄它决定:它有的,׃定放q去Q它没有的,׃要了?/p>
2、右链接Q和左链接一P只不qؓ"?的一方调q来了,换成是由双???/p>
3、内链接Q和左、右链接不同Q它一定要左、右两边都有的记录才会放q结果,如果有某个记录不存在于Q何一边,那这个记录是不会出现在结果中ȝ?/p>
4、外链接Q跟内联接相Q反Q相当于左、右链接的合qӞ不管什么情况,只要某个记录出现在这两个表,׃定会出现在结果中去,然后象左、右链接的处理方法一P用Null来填充没有对应值的字段?/p>
注:以上说的"??没有"Q意思是以titles.ph=publishers.ph为判断标准来下决定的。比如当前titles表的ph?002"Q而在publishers中,没有一个记录的ph的值是"002"的,所以就?002"q个值在titles有,在publisher中没有,q样titles.ph?002"的记录就会被选中Q最后放在结果中厅R?/strong>
@与@@的区别是什么?
@{于start命oQ用来运行一个sql脚本文g?br />@命o调用当前目录下的Q或指定全\径,或可以通过SQLPATH环境变量搜寻到的脚本文g。该命o使用是一般要指定要执行的文g的全路径Q否则从~省路径(可用SQLPATH变量指定)下读取指定的文g?br />@@用在sql脚本文g中,用来说明用@@执行的sql脚本文g与@@所在的文g在同一目录下,而不用指定要执行sql脚本文g的全路径Q也不是从SQLPATH环境变量指定的\径中Lsql脚本文gQ该命o一般用在脚本文件中?br />如:在c:\temp目录下有文gstart.sql和nest_start.sqlQstart.sql脚本文g的内容ؓQ?br />@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql
则我们在sql*plus中,q样执行Q?br />SQL> @ c:\temp\start.sql
2. 对当前的输入q行~辑
SQL>edit
3. 重新q行上一ơ运行的sql语句
SQL>/
4. 显C的内容输出到指定文?
SQL> SPOOL file_name
在屏q上的所有内定w包含在该文g中,包括你输入的sql语句?
5. 关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出Q才会在输出文g中看到输出的内容?
6Q显CZ个表的结?
SQL> desc table_name
7. COL命oQ?
主要格式化列的显CŞ式?
该命令有许多选项Q具体如下:
COL[UMN] [{ column|expr} [ option ...]]
Option选项可以是如下的子句:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE { expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
1). 改变~省的列标题
COLUMN column_name HEADING column_heading
For example:
Sql>select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- ---------
10 ACCOUNTING NEW YORK
sql>col LOC heading location
sql>select * from dept;
DEPTNO DNAME location
--------- ---------------------------- -----------
10 ACCOUNTING NEW YORK
2). 列名ENAME改ؓ新列名EMPLOYEE NAMEq将新列名放在两行上Q?
Sql>select * from emp
Department name Salary
---------- ---------- ----------
10 aaa 11
SQL> COLUMN ENAME HEADING ’Employee|Name?
Sql>select * from emp
Employee
Department name Salary
---------- ---------- ----------
10 aaa 11
note: the col heading turn into two lines from one line.
3). 改变列的昄长度Q?
FOR[MAT] format
Sql>select empno,ename,job from emp;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
Sql> col ename format a40
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
4). 讄列标题的寚w方式
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
SQL> col ename justify center
SQL> /
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
对于NUMBER型的列,列标题缺省在双Q其它类型的列标题缺省在左边
5). 不让一个列昄在屏q上
NOPRI[NT]|PRI[NT]
SQL> col job noprint
SQL> /
EMPNO ENAME
---------- ----------------------------------------
7369 SMITH
7499 ALLEN
7521 WARD
6). 格式化NUMBERcd列的昄Q?
SQL> COLUMN SAL FORMAT $99,990
SQL> /
Employee
Department Name Salary Commission
---------- ---------- --------- ----------
30 ALLEN $1,600 300
7). 昄列值时Q如果列gؓNULL|用textg替NULL?
COMM NUL[L] text
SQL>COL COMM NUL[L] text
8). 讄一个列的回l方?
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
COL1
--------------------
HOW ARE YOU?
SQL>COL COL1 FORMAT A5
SQL>COL COL1 WRAPPED
COL1
-----
HOW A
RE YO
U?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW
ARE
YOU?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW A
9). 昄列的当前的显C属性?
SQL> COLUMN column_name
10). 所有列的显C属性设为缺省?
SQL> CLEAR COLUMNS
8. 屏蔽掉一个列中显C的相同的?
BREAK ON break_column
SQL> BREAK ON DEPTNO
SQL> SELECT DEPTNO, ENAME, SAL
FROM EMP
WHERE SAL < 2500
ORDER BY DEPTNO;
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
9. 在上面屏蔽掉一个列中显C的相同的值的昄中,每当列值变化时在值变化之前插入n个空行?
BREAK ON break_column SKIP n
SQL> BREAK ON DEPTNO SKIP 1
SQL> /
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
10. 昄对BREAK的设|?
SQL> BREAK
11. 删除6?的设|?
SQL> CLEAR BREAKS
12. Set 命oQ?
该命令包含许多子命oQ?
SET system_variable value
system_variable value 可以是如下的子句之一Q?
APPI[NFO]{ON|OFF|text}
ARRAY[SIZE] {15|n}
AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
AUTOP[RINT] {ON|OFF}
AUTORECOVERY [ON|OFF]
AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
BLO[CKTERMINATOR] {.|c}
CMDS[EP] {;|c|ON|OFF}
COLSEP {_|text}
COM[PATIBILITY]{V7|V8|NATIVE}
CON[CAT] {.|c|ON|OFF}
COPYC[OMMIT] {0|n}
COPYTYPECHECK {ON|OFF}
DEF[INE] {&|c|ON|OFF}
DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
ECHO {ON|OFF}
EDITF[ILE] file_name[.ext]
EMB[EDDED] {ON|OFF}
ESC[APE] {\|c|ON|OFF}
FEED[BACK] {6|n|ON|OFF}
FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
FLU[SH] {ON|OFF}
HEA[DING] {ON|OFF}
HEADS[EP] {||c|ON|OFF}
INSTANCE [instance_path|LOCAL]
LIN[ESIZE] {80|n}
LOBOF[FSET] {n|1}
LOGSOURCE [pathname]
LONG {80|n}
LONGC[HUNKSIZE] {80|n}
MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL
{ON|OFF}] [PRE[FORMAT] {ON|OFF}]
NEWP[AGE] {1|n|NONE}
NULL text
NUMF[ORMAT] format
NUM[WIDTH] {10|n}
PAGES[IZE] {24|n}
PAU[SE] {ON|OFF|text}
RECSEP {WR[APPED]|EA[CH]|OFF}
RECSEPCHAR {_|c}
SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
WRAPPED]|TRU[NCATED]}]
SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
SHOW[MODE] {ON|OFF}
SQLBL[ANKLINES] {ON|OFF}
SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
SQLCO[NTINUE] {> |text}
SQLN[UMBER] {ON|OFF}
SQLPRE[FIX] {#|c}
SQLP[ROMPT] {SQL>|text}
SQLT[ERMINATOR] {;|c|ON|OFF}
SUF[FIX] {SQL|text}
TAB {ON|OFF}
TERM[OUT] {ON|OFF}
TI[ME] {ON|OFF}
TIMI[NG] {ON|OFF}
TRIM[OUT] {ON|OFF}
TRIMS[POOL] {ON|OFF}
UND[ERLINE] {-|c|ON|OFF}
VER[IFY] {ON|OFF}
WRA[P] {ON|OFF}
1). 讄当前session是否对修改的数据q行自动提交
SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
2)Q在用start命o执行一个sql脚本Ӟ是否昄脚本中正在执行的SQL语句
SQL> SET ECHO {ON|OFF}
3).是否昄当前sql语句查询或修改的行数
SQL> SET FEED[BACK] {6|n|ON|OFF}
默认只有l果大于6行时才显C结果的行数。如果set feedback 1 Q则不管查询到多行都返回。当为off Ӟ一律不昄查询的行?
4).是否昄列标?
SQL> SET HEA[DING] {ON|OFF}
当set heading off Ӟ在每늚上面不显C列标题Q而是以空白行代替
5).讄一行可以容U的字符?
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于讄的一行可容纳的字W数Q则折行昄?
6).讄与之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 Ӟ会在每页的开头有一个小的黑Ҏ?
当set newpage n Ӟ会在和之间隔着n个空行?
当set newpage none Ӟ会在和之间没有Q何间隔?
7).昄Ӟ用textg替NULL?
SQL> SET NULL text
8).讄一|多少行数
SQL> SET PAGES[IZE] {24|n}
如果设ؓ0Q则所有的输出内容Zƈ且不昄列标?
9).是否昄用DBMS_OUTPUT.PUT_LINE包进行输出的信息?
SQL> SET SERVEROUT[PUT] {ON|OFF}
在编写存储过E时Q我们有时会用dbms_output.put_line必要的信息输出Q以便对存储q程q行调试Q只有将serveroutput变量设ؓon后,信息才能昄在屏q上?
10).当SQL语句的长度大于LINESIZEӞ是否在显C时截取SQL语句?
SQL> SET WRA[P] {ON|OFF}
当输出的行的长度大于讄的行的长度时Q用set linesize n命o讄Q,当set wrap onӞ输出行的多于的字W会另v一行显C,否则Q会输的多于字W切除,不予昄?
11).是否在屏q上昄输出的内容,主要用与SPOOLl合使用?
SQL> SET TERM[OUT] {ON|OFF}
在用spool命o一个大表中的内容输出到一个文件中Ӟ内容输出在屏幕上会耗费大量的时_讄set termspool off后,则输出的内容只会保存在输出文件中Q不会显C在屏幕上,极大的提高了spool的速度?
12).SPOOL输出中每行后面多余的I格L
SQL> SET TRIMS[OUT] {ON|OFF}
13)昄每个sql语句p的执行时?
set TIMING {ON|OFF}
14). 遇到I时不认ؓ语句已经l束Q从后箋行接着d?br />SET SQLBLANKLINES ON
Sql*plus? 不允许sql语句中间有空? q在从其它地Ҏ贝脚本到sql*plus中执行时很麻? 比如下面的脚?
select deptno, empno, ename
from emp
where empno = '7788';
如果拯到sql*plus中执? ׃出现错误。这个命令可以解册问题
15).讄DBMS_OUTPUT的输?br />SET SERVEROUTPUT ON BUFFER 20000
用dbms_output.put_line('strin_content');可以在存储过E中输出信息Q对存储q程q行调试
如果惌dbms_output.put_line(' abc');的输出显CZؓQ?br />SQL> abcQ而不是SQL>abcQ则在SET SERVEROUTPUT ON后加format wrapped参数?/p>
16). 输出的数据ؓhtml格式
set markup html
?.1.7版本(也许?16? 不太定)以后, sql*plus中有一个set markup html的命? 可以sql*plus的输Zhtml格式展现.
注意其中的spool on, 当在屏幕上输出的时? 我们看不Z不加spool on有什么区? 但是当我们用spool filename 输出到文件的时? 会看到spool文g中出C{tag.
14Q修改sql buffer中的当前行中Q第一个出现的字符?
C[HANGE] /old_value/new_value
SQL> l
1* select * from dept
SQL> c/dept/emp
1* select * from emp
15Q编辑sql buffer中的sql语句
EDI[T]
16Q显Csql buffer中的sql语句Qlist n昄sql buffer中的Wn行,qɽWn行成为当前行
L[IST] [n]
17Q在sql buffer的当前行下面加一行或多行
I[NPUT]
18Q将指定的文本加到sql buffer的当前行后面
A[PPEND]
SQL> select deptno,
2 dname
3 from dept;
DEPTNO DNAME
---------- --------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SQL> L 2
2* dname
SQL> a ,loc
2* dname,loc
SQL> L
1 select deptno,
2 dname,loc
3* from dept
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
19Q将sql buffer中的sql语句保存C个文件中
SAVE file_name
20Q将一个文件中的sql语句导入到sql buffer?
GET file_name
21Q再ơ执行刚才已l执行的sql语句
RUN
or
/
22Q执行一个存储过E?
EXECUTE procedure_name
23Q在sql*plus中连接到指定的数据库
CONNECT user_name/passwd@db_alias
24Q设|每个报表的剙标题
TTITLE
25Q设|每个报表的N标题
BTITLE
26Q写一个注?
REMARK [text]
27Q将指定的信息或一个空行输出到屏幕?
PROMPT [text]
28Q将执行的过E暂停,{待用户响应后l执?
PAUSE [text]
Sql>PAUSE Adjust paper and press RETURN to continue.
29Q将一个数据库中的一些数据拷贝到另外一个数据库Q如一个表的数据拷贝到另一个数据库Q?
COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
create emp_temp
USING SELECT * FROM EMP
30Q不退出sql*plusQ在sql*plus中执行一个操作系l命令:
HOST
Sql> host hostname
该命令在windows下可能被支持?
31Q在sql*plus中,切换到操作系l命令提C符下,q行操作pȝ命o后,可以再次切换回sql*plusQ?
!
sql>!
$hostname
$exit
sql>
该命令在windows下不被支持?
32Q显Csql*plus命o的帮?
HELP
如何安装帮助文gQ?
Sql>@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql
Sql>help index
33Q显Csql*pluspȝ变量的值或sql*plus环境变量的?
Syntax
SHO[W] option
where option represents one of the following terms or clauses:
system_variable
ALL
BTI[TLE]
ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|
TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
LNO
PARAMETERS [parameter_name]
PNO
REL[EASE]
REPF[OOTER]
REPH[EADER]
SGA
SPOO[L]
SQLCODE
TTI[TLE]
USER
1) . 昄当前环境变量的|
Show all
2) . 昄当前在创建函数、存储过E、触发器、包{对象的错误信息
Show error
当创Z个函数、存储过E等出错Ӟ变可以用该命令查看在那个地方出错及相应的出错信息Q进行修改后再次q行~译?
3) . 昄初始化参数的|
show PARAMETERS [parameter_name]
4) . 昄数据库的版本Q?
show REL[EASE]
5) . 昄SGA的大?
show SGA
6). 昄当前的用户名
show user
34.查询一个用户下的对?br />SQL>select * from tab;
SQL>select * from user_objects;
35.查询一个用户下的所有的?br />SQL>select * from user_tables;
36.查询一个用户下的所有的索引
SQL>select * from user_indexes;
37. 定义一个用户变?br />Ҏ有两个:
a. define
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
OLD_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
下面ҎU方式给予解释:
a. Syntax
DEF[INE] [variable]|[variable = text]
定义一个用户变量ƈ且可以分配给它一个CHAR倹{?/p>
assign the value MANAGER to the variable POS, type:
SQL> DEFINE POS = MANAGER
assign the CHAR value 20 to the variable DEPTNO, type:
SQL> DEFINE DEPTNO = 20
list the definition of DEPTNO, enter
SQL> DEFINE DEPTNO
――――――――――――――?br />DEFINE DEPTNO = ?0?(CHAR)
定义了用户变量POS后,可以在sql*plus中用&POS?amp;&POS来引用该变量的|sql*plus不会再提CZl变量输入倹{?/p>
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
NEW_V[ALUE] variable
指定一个变量容Ux询出的列倹{?br />?column col_name new_value var_name noprint
select col_name from table_name where …?.
下面查询出的col_name列的Dlvar_name变量.
一个综合的例子:
得到一个列值的两次查询之差(此例?0U之内共提交了多事?:
column redo_writes new_value commit_count
select sum(stat.value) redo_writes
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
-- {待一会儿(此处?0U?;
execute dbms_lock.sleep(10);
set veri off
select sum(stat.value) - &commit_count commits_added
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
38. 定义一个绑定变?br />VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]
定义一个绑定变量,该变量可以在pl/sql中引用?br />可以用print命o昄该绑定变量的信息?br />如:
column inst_num heading "Inst Num" new_value inst_num format 99999;
column inst_name heading "Instance" new_value inst_name format a12;
column db_name heading "DB Name" new_value db_name format a12;
column dbid heading "DB Id" new_value dbid format 9999999999 just c;
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
select d.dbid dbid
, d.name db_name
, i.instance_number inst_num
, i.instance_name inst_name
from v$database d,
v$instance i;
variable dbid number;
variable inst_num number;
begin
:dbid := &dbid;
:inst_num := &inst_num;
end;
/
说明Q?br />在sql*plus中,该绑定变量可以作Z个存储过E的参数Q也可以在匿名PL/SQL块中直接引用。ؓ了显C用VARIABLE命o创徏的绑定变量的|可以用print命o
注意Q?br />l定变量不同于变量:
1Q ?定义Ҏ不同
2Q ?引用Ҏ不同
l定变量Q?variable_name
变量Q?amp;variable_name or &&variable_name
3.在sql*plus中,可以定义同名的绑定变量与用户变量Q但是引用的Ҏ不同?/p>
39. &?amp;&的区?br />&用来创徏一个时变量,每当遇到q个临时变量Ӟ都会提示你输入一个倹{?br />&&用来创徏一个持久变量,像用用define命o或带new_vlaue字句的column命o创徏的持久变量一栗当?amp;&命o引用q个变量Ӟ不会每次遇到该变量就提示用户键入|而只是在W一ơ遇到时提示一ơ?/p>
如,下面三行语句存Z个脚本文Ӟq行该脚本文Ӟ会提CZơ,让输入deptnoval的|
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
下面三行语句存Z个脚本文Ӟq行该脚本文Ӟ则只会提CZơ,让输入deptnoval的|
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
40Q在输入sql语句的过E中临时先运行一个sql*plus命o(摘自http://www.itpub.com/)
#
有没有过q样的经? 在sql*plus中敲了很长的命o? H然发现想不h个列的名字了, 如果取消当前的命?待查询后再重? 那太痛苦? 当然你可以另开一个sql*plusH口q行查询, 但这里提供的Ҏ更简?
比如? 你想查工资大?000的员工的信息, 输入了下面的语句:
SQL> select deptno, empno, ename
2 from emp
3 where
q时, 你发C想不h工资的列名是什么了.
q种情况? 只要在下一行以#开? 可以执行一条sql*plus命o, 执行完后, 刚才的语句可以l输?/p>
SQL>> select deptno, empno, ename
2 from emp
3 where
6 #desc emp
Name Null? Type
----------------------------------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
6 sal > 4000;
DEPTNO EMPNO ENAME
---------- ---------- ----------
10 7839 KING
41. SQLPlus中的快速复制和_脓技?摘自http://www.cnoug.org/)
1) 鼠标U至惌复制内容的开?
2) 用右手食指按下鼠标左?
3) 向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一?
4) 内容选取完毕后(所选内容全部反显)Q鼠标左键按住不动,用右手中指按鼠标右键
5) q时Q所选内容会自动复制到SQL*Plus环境的最后一?/p>
游标 Q?span> 用来查询数据库,获取记录集合Q结果集Q的指针Q可以让开发者一ơ访问一行结果集Q在每条l果集上作操作?span>
静态游标: REF游标Q?br />是一U引用类型,cM于指针?/span>
昑ּ游标 Q?span>
CURSOR 游标名? 参数 ) [q回值类型] IS
1.打开游标(OPEN)
2.从游标中获取记录(FETCH INTO)
3.关闭游标(CLOSE)
l_emp employees%rowtype;
dbms_output.put_line('Getting employees from department 90');
隐式游标 Q?span>
不用明确建立游标变量Q分两种Q?span>
declare
declare
单独select
declare
游标属?/span> Q?span> %FOUNDQ变量最后从游标中获取记录的时候,在结果集中找C记录?br />%NOTFOUNDQ变量最后从游标中获取记录的时候,在结果集中没有找到记录?br />%ROWCOUNTQ当前时dl从游标中获取的记录数量?br />%ISOPENQ是否打开?/span>
昑ּ和隐式游标的区别 Q?span> 量使用隐式游标Q避免编写附加的游标控制代码Q声明,打开Q获取,关闭Q,也不需要声明变量来保存从游标中获取的数据?span>
REF CURSOR游标 Q?span>
动态游标,在运行的时候才能确定游标用的查询。分c:
declare
emp_job emp_job_rec;
fetch emp_refcur into emp_job; |