关于作者

我收藏的Transact_SQL手册

上一篇 / 下一篇  2007-05-29 20:35:15 / 个人分类:Sybase

*******************Transact_SQL********************

--语 句                                功 能CNOUG博客首页`8n!^.XZ:A~
--数据操作
jv6u(r7S{)o0SELECT      --从数据库表中检索数据行和列
6h_y,F } `6D|"u0INSERT      --向数据库表添加新数据行
@-m%\[3k/t%x:l Ze V0DELETE      --从数据库表中删除数据行
)L!M(]!j7L0UPDATE      --更新数据库表中的数据CNOUG博客首页 \p#\G+C{MQ.A+U g+U V
--数据定义
)]E,S!`H@6t(k0CREATE TABLE    --创建一个数据库表
f y%Z,Li6G5Q6_N8?0DROP TABLE     --从数据库中删除表CNOUG博客首页D*a9fm'{#U3y
ALTER TABLE     --修改数据库表结构CNOUG博客首页7U8D x\H1x/\1vIt
CREATE VIEW     --创建一个视图
p4H Ly0u!g,gJl0DROP VIEW     --从数据库中删除视图
?EC^U0CREATE INDEX    --为数据库表创建一个索引
*I3a4d E,l,S n0DROP INDEX     --从数据库中删除索引CNOUG博客首页"q:MI\2`:ov%v[G c
CREATE PROCEDURE   --创建一个存储过程CNOUG博客首页AFA8X+Zi7}k
DROP PROCEDURE    --从数据库中删除存储过程
o0R4P"Kr|i}5r7O0CREATE TRIGGER    --创建一个触发器
1CNu2c { \KxI'T0DROP TRIGGER    --从数据库中删除触发器
Cvw I|G M#b0CREATE SCHEMA    --向数据库添加一个新模式
8E/Mqyr!rp0DROP SCHEMA     --从数据库中删除一个模式CNOUG博客首页 Wv[byj j
CREATE DOMAIN    --创建一个数据值域CNOUG博客首页+[ wkMP
ALTER DOMAIN    --改变域定义CNOUG博客首页!@k#i,e*`2AY6d
DROP DOMAIN     --从数据库中删除一个域CNOUG博客首页$QKwSA/ic
--数据控制
-?+U3Ua-gv D(d0GRANT      --授予用户访问权限
k*N2a;a-\0DENY      --拒绝用户访问
#x\\Bn"C n2H)i0REVOKE      --解除用户访问权限
u!Q!G#dq si0--事务控制CNOUG博客首页I%HVb5xV-W`
COMMIT      --结束当前事务CNOUG博客首页W"z+M,['M5u Yz
ROLLBACK     --中止当前事务CNOUG博客首页/i_!d7d.m5q"J
SET TRANSACTION    --定义当前事务数据访问特征
%jj:Ie0j.O0--程序化SQL
NlK'mef0DECLARE      --为查询设定游标
F#{2D${#C$T0EXPLAN      --为查询描述数据访问计划
g5F*Fe/aX[0OPEN      --检索查询结果打开一个游标
X&}fm9l3NZ0FETCH      --检索一行查询结果CNOUG博客首页S aA | c.IQi$^
CLOSE      --关闭游标CNOUG博客首页,U.x#Y8w&J6O.x%B
PREPARE      --为动态执行准备SQL 语句CNOUG博客首页2^1j.vL s
EXECUTE      --动态地执行SQL 语句CNOUG博客首页S_Gp)bXdO J
DESCRIBE     --描述准备好的查询

---局部变量CNOUG博客首页,en nuN
declare @id char(10)
7^'x b.uh,e(y3Z0--set @id = '10010001'CNOUG博客首页:e$U Z-B~OY)`3G
select @id = '10010001'

---全局变量CNOUG博客首页&]+J.F&I)s8n x:mt!xz
---必须以@@开头

--IF ELSE
m&[WdF4P4bN*I0declare @x int @y int @z int
x?Iy AJx0select @x = 1 @y = 2 @z=3
,ldt3RORel0if @x > @y
JYe}k8}@0 print 'x > y' --打印字符串'x > y'
@*Ga#M!X5F#_:p0else if @y > @zCNOUG博客首页.kgvxq#{lw
 print 'y > z'
bD!s5^5zI.q,C PM0else print 'z > y'

--CASE
\"r(A B/tq0use panguCNOUG博客首页:l`6rT3[xj}
update employee
)SI,w MQln-R0set e_wage =CNOUG博客首页{8JoU!ZL/K1C;o
 case
)`k{ H@'tA0  when job_level = ’1’ then e_wage*1.08CNOUG博客首页"m#V8g6[({7pO
  when job_level = ’2’ then e_wage*1.07CNOUG博客首页.JI8T5Ws,]
  when job_level = ’3’ then e_wage*1.06CNOUG博客首页z)p ].N{0}/^ |
  else e_wage*1.05CNOUG博客首页+?'cy^%bG
 end

--WHILE CONTINUE BREAKCNOUG博客首页qa$G{2c+`Zks
declare @x int @y int @c intCNOUG博客首页z1M?V ld2b eM|
select @x = 1 @y=1CNOUG博客首页 z1CZ/I8]b^:f
while @x < 3
#@jwPj1\y"Q5F0 begin
W"l-y)],{0  print @x --打印变量x 的值
'q Z-j0B/AA0  while @y < 3CNOUG博客首页7d)e6Q9RUTX
   begin
+v DpQ7g3G;W n0    select @c =100*@x+ @y
P [s;U/D;|0    print @c --打印变量c 的值CNOUG博客首页5t q*`;C&G!]l
    select @y = @y + 1CNOUG博客首页6? }5L"d-d:h
   endCNOUG博客首页&Vgd2N g&p)k
  select @x = @x + 1
y${RLZ~0U0  select @y = 1
F+e1r5Qm$KK0 end

--WAITFORCNOUG博客首页Ic,E3}2o In^
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
f XE!v`)C U0waitfor delay ’01:02:03’CNOUG博客首页6at$z+v'J|
select * from employeeCNOUG博客首页hz,VL|j
--例 等到晚上11 点零8 分后才执行SELECT 语句
,qm1y'Y6h#J&l0waitfor time ’23:08:00’CNOUG博客首页7RJ?4xFG
select * from employee

 

***SELECT***

   select *(列名) from table_name(表名) where column_name operator valueCNOUG博客首页%W|(t6_O,K
   ex:(宿主)
*ELV C8O&C!RC0  select * from stock_information where stockid   = str(nid)
0^d ^N)m)z&J0     stockname = 'str_name'CNOUG博客首页R8S }Rv!K Ln
     stockname like '% find this %'CNOUG博客首页UAS@Wa^u$G
     stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
8A Qd)T#gz i5S#k0     stockname like '[^F-M]%'   --------- (^排除指定范围)
3q$K:uzV$nM m2o0     --------- 只能在使用like关键字的where子句中使用通配符)CNOUG博客首页&h{"L,`0M
     or stockpath = 'stock_path'CNOUG博客首页!ul`{0Z(t0`
     or stocknumber < 1000CNOUG博客首页*anQ"e)Vx:MD7Pal.S I
     and stockindex = 24CNOUG博客首页p d3s9Vca(r$Z8a
     not stocksex = 'man'CNOUG博客首页j US,j p+_
     stocknumber between 20 and 100CNOUG博客首页 omS;_7rei ^:g
     stocknumber in(10,20,30)CNOUG博客首页2w!e,Q+KV j}Ex
     order by stockid desc(asc) --------- 排序,desc-降序,asc-升序CNOUG博客首页 }`$w0u$ue-I(oJ
     order by 1,2 --------- by列号
+W&k [vl3v;sXS0     stockname = (select stockname from stock_information  where stockid  = 4)
.q:T m5b"O0     --------- 子查询CNOUG博客首页IT"\$@]FKJ"m
     --------- 除非能确保内层select只返回一个行的值,CNOUG博客首页+G6TL9^\Ra5Q0TS
     --------- 否则应在外层where子句中用一个in限定符CNOUG博客首页8uet.s^
  select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
)zkSy]C;vSg|0  select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameCNOUG博客首页%R y h)D?)Q/w4R,A
  select stockname , "stocknumber" = count(*) from table_name group by stockname
5eT/B/xAj ]7H0                                      --------- group by 将表按行分组,指定列中有相同的值CNOUG博客首页$`3I\!_5dn!y
          having count(*) = 2  ---------  having选定指定的组CNOUG博客首页ww.[(VgBAvT
       CNOUG博客首页Y,a?#f_f!WN
  select *CNOUG博客首页 o-@4r B\)a ] {
  from table1, table2                 CNOUG博客首页3FED a \;NQgf
  where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
.SS*C:PZ-aSL0     table1.id =* table2.id -------- 右外部连接

  select stockname from table1CNOUG博客首页_^7mf'mpL#M;?
  union [all]  -----  union合并查询结果集,all-保留重复行
9N-l~ DU j)z8T0  select stockname from table2

***insert***

  insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")CNOUG博客首页 nYGmb.b$vZH
              value (select Stockname , Stocknumber from Stock_table2)---value为select语句

***update***

  update table_name set Stockname = "xxx" [where Stockid = 3]CNOUG博客首页*Z2?xR4P
         Stockname = default
S[M6b!l|W2s%f+U0         Stockname = null
3~1GOE'R2P]EF0         Stocknumber = Stockname + 4

***delete***

  delete from table_name where Stockid = 3CNOUG博客首页%TGk EW8?!\y)^f1x
  truncate table_name ----------- 删除表中所有行,仍保持表的完整性
eHYT6Zhg$T0  drop table table_name --------------- 完全删除表

***alter table*** --- 修改数据库表结构

  alter table database.owner.table_name add column_name char(2) null .....
.WDPH)A2L0  sp_help table_name ---- 显示表已有特征
i5eY9Oq+lo0  create table table_name (name char(20), age smallint, lname varchar(30))CNOUG博客首页2Yt/j`2U
  insert into table_name select ......... ----- 实现删除列的方法(创建新表)
6JJ wUjf F f0  alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束CNOUG博客首页a8m t Ux:aTz
   
C Ve YXx#B.N0***function(/*常用函数*/)***

----统计函数----CNOUG博客首页| z ?2n0H4_ a
AVG    --求平均值
vC VK(U)yC&G0COUNT   --统计数目CNOUG博客首页(t7Ycd(lpa1B
MAX    --求最大值CNOUG博客首页0TB4w"^V1D3P@9h
MIN    --求最小值
O,Z5WG \R,z|h_0SUM    --求和

--AVG
7x4U8tXvE4|k*t ^ \0use panguCNOUG博客首页-_PC%T*H
select avg(e_wage) as dept_avgWageCNOUG博客首页7c [(R.eej)a
from employeeCNOUG博客首页/]j(C-Q8pk|`#P
group by dept_id

--MAXCNOUG博客首页+?rJ*\ l&g C
--求工资最高的员工姓名
/]-n#Nu8\*u9hMgm0use pangu
9b-]F.h7p0?0select e_name
!LR G3_1ZW(L0from employee
B2} u&B/V*ze0where e_wage =
{$k }\8rjS,BN0 (select max(e_wage)CNOUG博客首页d l4tO(WR#y
  from employee)

--STDEV()CNOUG博客首页CY%|]7iF6x#b
--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()
q~ EkJm | x B|J0--STDEVP()函数返回总体标准差

--VAR()
j8~w-|Y3R? _ @1r0--VAR()函数返回表达式中所有值的统计变异数

--VARP()
6^n1|J wd iQm3A0--VARP()函数返回总体变异数

----算术函数----

/***三角函数***/CNOUG博客首页#@1V RA%nl;^I q
SIN(float_expression) --返回以弧度表示的角的正弦CNOUG博客首页/[9}gY YTl%|
COS(float_expression) --返回以弧度表示的角的余弦
y$Q8z$Z.YG4_G0TAN(float_expression) --返回以弧度表示的角的正切
{8Wd }'J0COT(float_expression) --返回以弧度表示的角的余切CNOUG博客首页N9Qx M*mq
/***反三角函数***/
1Ea1A J)f!z0ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角CNOUG博客首页9B/i4JfX8y5xtx
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
E2q!V@xGUgE0ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
,`_Ze l5e(hf0ATAN2(float_expression1,float_expression2)
K/n%G;Ij/w }.j0        --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
)[A&AY}W$i%c0DEGREES(numeric_expression)CNOUG博客首页5S4X1f6f _Z1r*]1F U9i
                       --把弧度转换为角度返回与表达式相同的数据类型可为
+KoU yrDv8r a0        --INTEGER/MONEY/REAL/FLOAT 类型CNOUG博客首页z I}]NO)z D+`R:Q
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为CNOUG博客首页{;I6A9yh?{$rt:m
        --INTEGER/MONEY/REAL/FLOAT 类型CNOUG博客首页F%K3{*Z-Kr(\;y
EXP(float_expression)  --返回表达式的指数值
3@zh e;`-t_K q0LOG(float_expression)  --返回表达式的自然对数值
y7rlpwnv0LOG10(float_expression)--返回表达式的以10 为底的对数值
5Gs ~6s0Mm,rXk0SQRT(float_expression) --返回表达式的平方根
$zE7h}2b N8S0/***取近似值函数***/CNOUG博客首页0a Bbq tAT.O5d[
CEILING(numeric_expression)  --返回>=表达式的最小整数返回的数据类型与表达式相同可为
B~;j7u8O#Z!q0        --INTEGER/MONEY/REAL/FLOAT 类型CNOUG博客首页7?}2LiP;s p4g
FLOOR(numeric_expression)    --返回<=表达式的最小整数返回的数据类型与表达式相同可为
M0o-tn)j6G0        --INTEGER/MONEY/REAL/FLOAT 类型CNOUG博客首页jIQ)n%h G8|
ROUND(numeric_expression)    --返回以integer_expression 为精度的四舍五入值返回的数据
`.`Ev(al^ GRh0        --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
/NTn9Nt8D O5F0ABS(numeric_expression)      --返回表达式的绝对值返回的数据类型与表达式相同可为CNOUG博客首页Y{0s#F ]
        --INTEGER/MONEY/REAL/FLOAT 类型
f R E"zV |k0SIGN(numeric_expression)     --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型CNOUG博客首页f0AT j}DB
        --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型CNOUG博客首页 ~6n9C.ip J3?
PI()       --返回值为π 即3.1415926535897936
zC1?-{B$}}0RAND([integer_expression])   --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数

CNOUG博客首页.@k5B%G t@p'Mz6yF
----字符串函数----
q2V(Mc:V C5] ?\4s0ASCII()         --函数返回字符表达式最左端字符的ASCII 码值CNOUG博客首页] ZmK+f+Q;U0by1jQ
CHAR()   --函数用于将ASCII 码转换为字符
`/NpPmY)NJ;[ a0    --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
-_Al7~{ c#F9C0LOWER()   --函数把字符串全部转换为小写CNOUG博客首页t M+v{Y
UPPER()   --函数把字符串全部转换为大写CNOUG博客首页2YP-a+[.m(G
STR()   --函数把数值型数据转换为字符型数据
\};V5q._'{0LTRIM()   --函数把字符串头部的空格去掉CNOUG博客首页3H7d-n?3v(LM&p
RTRIM()   --函数把字符串尾部的空格去掉CNOUG博客首页 yUz1A-O
LEFT(),RIGHT(),SUBSTRING()  --函数返回部分字符串CNOUG博客首页%G ~'KxA;u6X|)f
CHARINDEX(),PATINDEX()  --函数返回字符串中某个指定的子串出现的开始位置
6A$Y+mOA*\I l~0SOUNDEX()  --函数返回一个四位字符码
I C[H3J b0    --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值    
cF#\I4F"Y0DIFFERENCE()    --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异CNOUG博客首页Aj$OBY:D HOP
    --0 两个SOUNDEX 函数返回值的第一个字符不同CNOUG博客首页;ZR cgx8Ko
    --1 两个SOUNDEX 函数返回值的第一个字符相同CNOUG博客首页%E;]8` j3y8ZZ
    --2 两个SOUNDEX 函数返回值的第一二个字符相同CNOUG博客首页TKXS:l
    --3 两个SOUNDEX 函数返回值的第一二三个字符相同
[i!A*RRE[0    --4 两个SOUNDEX 函数返回值完全相同CNOUG博客首页!]1[5g/|!RQX'k2l
                                      

QUOTENAME()  --函数返回被特定字符括起来的字符串
7{7B0|!P PY#g0/*select quotename('abc', '{') quotename('abc')CNOUG博客首页4V U&t wI8de3F:q
运行结果如下
'V _"y s4v7z0----------------------------------{CNOUG博客首页;Oo7a1SEUJ
{abc} [abc]*/

REPLICATE()     --函数返回一个重复character_expression 指定次数的字符串CNOUG博客首页YpN!r&gh
/*select replicate('abc', 3) replicate( 'abc', -2)CNOUG博客首页 p"Gh*G.^(S
运行结果如下
g:l.aGY(B`0----------- -----------
H8M%Y.M0P&c*u0abcabcabc NULL*/

REVERSE()       --函数将指定的字符串的字符排列顺序颠倒
:L(w)cO$m0q(k1c0REPLACE()       --函数返回被替换了指定子串的字符串CNOUG博客首页4mca G EO(P3^H
/*select replace('abc123g', '123', 'def')
bR?otB*Iy*u \0运行结果如下CNOUG博客首页]|k [,I,I`^c
----------- -----------CNOUG博客首页 J.I?O Xn-g
abcdefg*/

SPACE()   --函数返回一个有指定长度的空白字符串
]F/|&T2v0STUFF()   --函数用另一子串替换字符串指定位置长度的子串


/AR Ma/namlFH:O@x0----数据类型转换函数----
/{#pzmfW0CAST() 函数语法如下
6PlE(G6p7r/^Im0CAST() (<expression> AS <data_ type>[ length ])CNOUG博客首页 DVD8mg9@
CONVERT() 函数语法如下CNOUG博客首页)@^2YC+[am/R
CONVERT() (<data_ type>[ length ], <expression> [, style])

select cast(100+99 as char) convert(varchar(12), getdate())CNOUG博客首页o-i,_9w{ ]
运行结果如下
-L(gqH iB0------------------------------ ------------
vS[n `e4nw0199   Jan 15 2000

----日期函数----CNOUG博客首页Z*rC(dz BG
DAY()   --函数返回date_expression 中的日期值
1eb aj;yu0MONTH()   --函数返回date_expression 中的月份值CNOUG博客首页5o)ak9L Cj6m
YEAR()   --函数返回date_expression 中的年份值CNOUG博客首页J^HC2z;w
DATEADD(<datepart> ,<number> ,<date>)
_ D x/ZV0    --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期CNOUG博客首页%YhN {"`3B'EyT
DATEDIFF(<datepart> ,<number> ,<date>)CNOUG博客首页E4C |j)@-fb
    --函数返回两个指定日期在datepart 方面的不同之处CNOUG博客首页|,]*Tp5Gtw LI
DATENAME(<datepart> , <date>)  --函数以字符串的形式返回日期的指定部分CNOUG博客首页VZoAE&\9]%U(g
DATEPART(<datepart> , <date>)  --函数以整数值的形式返回日期的指定部分
I l2R B)ysh0GETDATE()  --函数以DATETIME 的缺省格式返回系统当前的日期和时间

----系统函数----CNOUG博客首页?{$o'~P
APP_NAME()      --函数返回当前执行的应用程序的名称
$Y0`*{g&N/O+c]0COALESCE()  --函数返回众多表达式中第一个非NULL 表达式的值CNOUG博客首页`:Rc9^ L3X Sv
COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值CNOUG博客首页9? U+BgH3L,n
COL_NAME(<table_id>, <column_id>)   --函数返回表中指定字段的名称即列名CNOUG博客首页 O1{fcGo`Yn
DATALENGTH() --函数返回数据表达式的数据的实际长度CNOUG博客首页;L)PP+VF.j]0s
DB_ID(['database_name']) --函数返回数据库的编号CNOUG博客首页Xk6O3Q:F ]Of
DB_NAME(database_id)  --函数返回数据库的名称CNOUG博客首页W&J!V qpU{0o zjs
HOST_ID()     --函数返回服务器端计算机的名称
/}Wk)~'h4SN0HOST_NAME()     --函数返回服务器端计算机的名称CNOUG博客首页!iZ.B EYARc1f"h
IDENTITY(<data_type>[, seed increment]) [AS column_name])CNOUG博客首页8X]}3d rR[:M
 --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
3c'|0x0d7o#o1u0/*select identity(int, 1, 1) as column_name
!v'lQ? nk0 into newtableCNOUG博客首页TFx|a j&\bV
 from oldtable*/
TVvt~BB {P0ISDATE()  --函数判断所给定的表达式是否为合理日期
XgV ] KA|;n3q0ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换CNOUG博客首页r[y:ph q
ISNUMERIC()  --函数判断所给定的表达式是否为合理的数值CNOUG博客首页U8kzFT.Z
NEWID()   --函数返回一个UNIQUEIDENTIFIER 类型的数值
'o!I:x] w"ki!S$Of0NULLIF(<expression1>, <expression2>)CNOUG博客首页lk:MUlD
 --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值


相关阅读:

TAG: T-SQL Sybase

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)