整理了一些t-sql技巧

MS - SQL数据库开发常用汇总  1 .按姓氏笔画排序:
整理了一些t-sql技巧
Select   *   From  TableName  Order   By  CustomerName Collate Chinese_PRC_Stroke_ci_as 
整理了一些t-sql技巧
2 .数据库加密:
整理了一些t-sql技巧
select  encrypt( ' 原始密码 ' )
整理了一些t-sql技巧
select  pwdencrypt( ' 原始密码 ' )
整理了一些t-sql技巧
select  pwdcompare( ' 原始密码 ' , ' 加密后密码 ' =   1 -- 相同;否则不相同 encrypt('原始密码')
整理了一些t-sql技巧
select  pwdencrypt( ' 原始密码 ' )
整理了一些t-sql技巧
select  pwdcompare( ' 原始密码 ' , ' 加密后密码 ' =   1 -- 相同;否则不相同
整理了一些t-sql技巧
3 .取回表中字段:
整理了一些t-sql技巧
declare   @list   varchar ( 1000 ), @sql   nvarchar ( 1000
整理了一些t-sql技巧
select   @list = @list + ' , ' + b.name  from  sysobjects a,syscolumns b  where  a.id = b.id  and  a.name = ' 表A '
整理了一些t-sql技巧
set   @sql = ' select  ' + right ( @list , len ( @list ) - 1 ) + '  from 表A '  
整理了一些t-sql技巧
exec  ( @sql )
整理了一些t-sql技巧
4 .查看硬盘分区:
整理了一些t-sql技巧
EXEC  master..xp_fixeddrives
整理了一些t-sql技巧
5 .比较A,B表是否相等:
整理了一些t-sql技巧
if  ( select  checksum_agg(binary_checksum( * ))  from  A)
整理了一些t-sql技巧
=
整理了一些t-sql技巧(
select  checksum_agg(binary_checksum( * ))  from  B)
整理了一些t-sql技巧
print   ' 相等 '
整理了一些t-sql技巧
else
整理了一些t-sql技巧
print   ' 不相等 '
整理了一些t-sql技巧
6 .杀掉所有的事件探察器进程:
整理了一些t-sql技巧
DECLARE  hcforeach  CURSOR  GLOBAL  FOR   SELECT   ' kill  ' + RTRIM (spid)  FROM  master.dbo.sysprocesses
整理了一些t-sql技巧
WHERE  program_name  IN ( ' SQL profiler ' ,N ' SQL 事件探查器 ' )
整理了一些t-sql技巧
EXEC  sp_msforeach_worker  ' ? '
整理了一些t-sql技巧
7 .记录搜索:
整理了一些t-sql技巧开头到N条记录
整理了一些t-sql技巧
Select   Top  N  *   From  表
整理了一些t-sql技巧
-- -----------------------------
整理了一些t-sql技巧
N到M条记录(要有主索引ID)
整理了一些t-sql技巧
Select   Top  M - *   From  表  Where  ID  in  ( Select   Top  M ID  From  表)  Order   by  ID  Desc
整理了一些t-sql技巧
-- --------------------------------
整理了一些t-sql技巧
N到结尾记录
整理了一些t-sql技巧
Select   Top  N  *   From  表  Order   by  ID  Desc
整理了一些t-sql技巧
8 .如何修改数据库的名称:
整理了一些t-sql技巧sp_renamedb 
' old_name ' ' new_name '  
整理了一些t-sql技巧
9 :获取当前数据库中的所有用户表
整理了一些t-sql技巧
select  Name  from  sysobjects  where  xtype = ' u '   and  status >= 0
整理了一些t-sql技巧
10 :获取某一个表的所有字段
整理了一些t-sql技巧
select  name  from  syscolumns  where  id = object_id ( ' 表名 ' )
整理了一些t-sql技巧
11 :查看与某一个表相关的视图、存储过程、函数
整理了一些t-sql技巧
select  a. *   from  sysobjects a, syscomments b  where  a.id  =  b.id  and  b. text   like   ' %表名% '
整理了一些t-sql技巧
12 :查看当前数据库中所有存储过程
整理了一些t-sql技巧
select  name  as  存储过程名称  from  sysobjects  where  xtype = ' P '
整理了一些t-sql技巧
13 :查询用户创建的所有数据库
整理了一些t-sql技巧
select   *   from  master..sysdatabases D  where  sid  not   in ( select  sid  from  master..syslogins  where  name = ' sa ' )
整理了一些t-sql技巧或者
整理了一些t-sql技巧
select  dbid, name  AS   DB_NAME   from  master..sysdatabases  where  sid < >   0x01
整理了一些t-sql技巧
14 :查询某一个表的字段和数据类型
整理了一些t-sql技巧
select  column_name,data_type  from  information_schema.columns
整理了一些t-sql技巧
where  table_name  =   ' 表名 '  
整理了一些t-sql技巧
[ n ] . [ 标题 ] :
整理了一些t-sql技巧
Select   *   From  TableName  Order   By  CustomerName 
整理了一些t-sql技巧
[ n ] . [ 标题 ] :
整理了一些t-sql技巧
来自 http://dev.csdn.net/develop/article/83/83138.shtm

一、 只复制一个表结构,不复制数据

 

整理了一些t-sql技巧 select   top   0   *   into   [ t1 ]   from   [ t2 ]


二、 获取数据库中某个对象的创建脚本

1、 先用下面的脚本创建一个函数

整理了一些t-sql技巧 if   exists ( select   1   from  sysobjects  where  id = object_id ( ' fgetscript ' and   objectproperty (id, ' IsInlineFunction ' ) = 0 )
整理了一些t-sql技巧 
drop   function  fgetscript
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
create   function  fgetscript(
整理了一些t-sql技巧 
@servername   varchar ( 50 )      -- 服务器名
整理了一些t-sql技巧
 , @userid   varchar ( 50 ) = ' sa '      -- 用户名,如果为nt验证方式,则为空
整理了一些t-sql技巧
 , @password   varchar ( 50 ) = ''      -- 密码
整理了一些t-sql技巧
 , @databasename   varchar ( 50 )     -- 数据库名称
整理了一些t-sql技巧
 , @objectname   varchar ( 250 )     -- 对象名
整理了一些t-sql技巧

整理了一些t-sql技巧
returns   varchar ( 8000 )
整理了一些t-sql技巧
as
整理了一些t-sql技巧
begin
整理了一些t-sql技巧 
declare   @re   varchar ( 8000 )         -- 返回脚本
整理了一些t-sql技巧
  declare   @srvid   int , @dbsid   int         -- 定义服务器、数据库集id
整理了一些t-sql技巧
  declare   @dbid   int , @tbid   int          -- 数据库、表id
整理了一些t-sql技巧
  declare   @err   int , @src   varchar ( 255 ),  @desc   varchar ( 255 -- 错误处理变量
整理了一些t-sql技巧

整理了一些t-sql技巧
-- 创建sqldmo对象
整理了一些t-sql技巧
  exec   @err = sp_oacreate  ' sqldmo.sqlserver ' , @srvid  output
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 连接服务器
整理了一些t-sql技巧
  if   isnull ( @userid , '' ) = ''   -- 如果是 Nt验证方式
整理了一些t-sql技巧
  begin
整理了一些t-sql技巧  
exec   @err = sp_oasetproperty  @srvid , ' loginsecure ' , 1
整理了一些t-sql技巧  
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧  
exec   @err = sp_oamethod  @srvid , ' connect ' , null , @servername
整理了一些t-sql技巧 
end
整理了一些t-sql技巧 
else
整理了一些t-sql技巧  
exec   @err = sp_oamethod  @srvid , ' connect ' , null , @servername , @userid , @password
整理了一些t-sql技巧
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 获取数据库集
整理了一些t-sql技巧
  exec   @err = sp_oagetproperty  @srvid , ' databases ' , @dbsid  output
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 获取要取得脚本的数据库id
整理了一些t-sql技巧
  exec   @err = sp_oamethod  @dbsid , ' item ' , @dbid  output, @databasename
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 获取要取得脚本的对象id
整理了一些t-sql技巧
  exec   @err = sp_oamethod  @dbid , ' getobjectbyname ' , @tbid  output, @objectname
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 取得脚本
整理了一些t-sql技巧
  exec   @err = sp_oamethod  @tbid , ' script ' , @re  output
整理了一些t-sql技巧 
if   @err <> 0   goto  lberr
整理了一些t-sql技巧
整理了一些t-sql技巧 
-- print @re
整理了一些t-sql技巧
  return ( @re )
整理了一些t-sql技巧
整理了一些t-sql技巧lberr:
整理了一些t-sql技巧 
exec  sp_oageterrorinfo  NULL @src  out,  @desc  out 
整理了一些t-sql技巧 
declare   @errb   varbinary ( 4 )
整理了一些t-sql技巧 
set   @errb = cast ( @err   as   varbinary ( 4 ))
整理了一些t-sql技巧 
exec  master..xp_varbintohexstr  @errb , @re  out
整理了一些t-sql技巧 
set   @re = ' 错误号:  ' + @re
整理了一些t-sql技巧   
+ char ( 13 ) + ' 错误源:  ' + @src
整理了一些t-sql技巧   
+ char ( 13 ) + ' 错误描述:  ' + @desc
整理了一些t-sql技巧 
return ( @re )
整理了一些t-sql技巧
end
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧

2、 用法如下
用法如下,

整理了一些t-sql技巧 print  dbo.fgetscript( ' 服务器名 ' , ' 用户名 ' , ' 密码 ' , ' 数据库名 ' , ' 表名或其它对象名 ' )
整理了一些t-sql技巧

3、 如果要获取库里所有对象的脚本,如如下方式

整理了一些t-sql技巧 declare   @name   varchar ( 250 )
整理了一些t-sql技巧
declare  #aa  cursor   for
整理了一些t-sql技巧 
select  name  from  sysobjects  where  xtype  not   in ( ' S ' , ' PK ' , ' D ' , ' X ' , ' L ' )
整理了一些t-sql技巧
open  #aa
整理了一些t-sql技巧
fetch   next   from  #aa  into   @name
整理了一些t-sql技巧
while   @@fetch_status = 0
整理了一些t-sql技巧
begin
整理了一些t-sql技巧 
print  dbo.fgetscript( ' onlytiancai ' , ' sa ' , ' sa ' , ' database ' , @name )
整理了一些t-sql技巧 
fetch   next   from  #aa  into   @name
整理了一些t-sql技巧
end
整理了一些t-sql技巧
close  #aa
整理了一些t-sql技巧
deallocate  #aa
整理了一些t-sql技巧

4、 声明,此函数是csdn邹建邹老大提供的
三、 分隔字符串
如果有一个用逗号分割开的字符串,比如说"a,b,c,d,1,2,3,4",如何用t-sql获取这个字符串有几个元素,获取第几个元素的值是多少呢?因为t-sql里没有split函数,也没有数组的概念,所以只能自己写几个函数了。
1、 获取元素个数的函数

整理了一些t-sql技巧 create   function  getstrarrlength ( @str   varchar ( 8000 ))
整理了一些t-sql技巧
returns   int
整理了一些t-sql技巧
as
整理了一些t-sql技巧
begin
整理了一些t-sql技巧  
declare   @int_return   int
整理了一些t-sql技巧  
declare   @start   int
整理了一些t-sql技巧  
declare   @next   int
整理了一些t-sql技巧  
declare   @location   int
整理了一些t-sql技巧  
select   @str   = ' , ' +   @str   + ' , '
整理了一些t-sql技巧  
select   @str = replace ( @str , ' ,, ' , ' , ' )
整理了一些t-sql技巧  
select   @start   = 1
整理了一些t-sql技巧  
select   @next   = 1  
整理了一些t-sql技巧  
select   @location   =   charindex ( ' , ' , @str , @start )
整理了一些t-sql技巧  
while  ( @location   <> 0 )
整理了一些t-sql技巧  
begin
整理了一些t-sql技巧    
select   @start   =   @location   + 1
整理了一些t-sql技巧    
select   @location   =   charindex ( ' , ' , @str , @start )
整理了一些t-sql技巧    
select   @next   = @next   + 1
整理了一些t-sql技巧  
end
整理了一些t-sql技巧 
select   @int_return   =   @next - 2
整理了一些t-sql技巧 
return   @int_return
整理了一些t-sql技巧
end
整理了一些t-sql技巧

2、 获取指定索引的值的函数

整理了一些t-sql技巧 create   function  getstrofindex ( @str   varchar ( 8000 ), @index   int   = 0 )
整理了一些t-sql技巧
returns   varchar ( 8000 )
整理了一些t-sql技巧
as
整理了一些t-sql技巧
begin
整理了一些t-sql技巧  
declare   @str_return   varchar ( 8000 )
整理了一些t-sql技巧  
declare   @start   int
整理了一些t-sql技巧  
declare   @next   int
整理了一些t-sql技巧  
declare   @location   int
整理了一些t-sql技巧  
select   @start   = 1
整理了一些t-sql技巧  
select   @next   = 1   -- 如果习惯从0开始则select @next =0
整理了一些t-sql技巧
   select   @location   =   charindex ( ' , ' , @str , @start )
整理了一些t-sql技巧  
while  ( @location   <> 0   and   @index   >   @next  )
整理了一些t-sql技巧  
begin
整理了一些t-sql技巧    
select   @start   =   @location   + 1
整理了一些t-sql技巧    
select   @location   =   charindex ( ' , ' , @str , @start )
整理了一些t-sql技巧    
select   @next   = @next   + 1
整理了一些t-sql技巧  
end
整理了一些t-sql技巧  
if   @location   = 0   select   @location   = len ( @str ) + 1   -- 如果是因为没有逗号退出,则认为逗号在字符串后
整理了一些t-sql技巧
   select   @str_return   =   substring ( @str , @start , @location   - @start -- @start肯定是逗号之后的位置或者就是初始值1
整理了一些t-sql技巧
   if  ( @index   <>   @next  )  select   @str_return   =   ''   -- 如果二者不相等,则是因为逗号太少,或者@index小于@next的初始值1。
整理了一些t-sql技巧
   return   @str_return
整理了一些t-sql技巧
end
整理了一些t-sql技巧

3、 测试

整理了一些t-sql技巧 SELECT   [ dbo ] . [ getstrarrlength ] ( ' 1,2,3,4,a,b,c,d ' )
整理了一些t-sql技巧
SELECT   [ dbo ] . [ getstrofindex ] ( ' 1,2,3,4,a,b,c,d ' , 5 )
整理了一些t-sql技巧

四、 一条语句执行跨越若干个数据库
我要在一条语句里操作不同的服务器上的不同的数据库里的不同的表,怎么办呢?
第一种方法:

整理了一些t-sql技巧 select   *   from   OPENDATASOURCE ( ' SQLOLEDB ' , ' Data Source=远程ip;User ID=sa;Password=密码 ' ).库名.dbo.表名
整理了一些t-sql技巧

第二种方法:
先使用联结服务器:

整理了一些t-sql技巧 EXEC  sp_addlinkedserver  ' 别名 ' , '' , ' MSDASQL ' , NULL , NULL , ' DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码; '
整理了一些t-sql技巧
exec  sp_addlinkedsrvlogin   @rmtsrvname = ' 别名 ' , @useself = ' false ' , @locallogin = ' sa ' , @rmtuser = ' sa ' , @rmtpassword = ' 密码 '
整理了一些t-sql技巧
GO
整理了一些t-sql技巧

然后你就可以如下:

整理了一些t-sql技巧 select   *   from  别名.库名.dbo.表名
整理了一些t-sql技巧
insert  库名.dbo.表名  select   *   from  别名.库名.dbo.表名
整理了一些t-sql技巧
select   *   into  库名.dbo.新表名  from  别名.库名.dbo.表名
整理了一些t-sql技巧
go
整理了一些t-sql技巧

五、 怎样获取一个表中所有的字段信息
蛙蛙推荐:怎样获取一个表中所有字段的信息
先创建一个视图

整理了一些t-sql技巧 Create   view  fielddesc    
整理了一些t-sql技巧
as
整理了一些t-sql技巧
select  o.name  as  table_name,c.name  as  field_name,t.name  as  type,c.length  as  
整理了一些t-sql技巧
整理了一些t-sql技巧length,c.isnullable 
as  isnullable, convert ( varchar ( 30 ),p.value)  as  desp 
整理了一些t-sql技巧
from  syscolumns c  
整理了一些t-sql技巧
join  systypes t  on  c.xtype  =  t.xusertype
整理了一些t-sql技巧
join  sysobjects o  on  o.id = c.id 
整理了一些t-sql技巧
left   join     sysproperties p  on  p.smallid = c.colid  and  p.id = o.id    
整理了一些t-sql技巧
where  o.xtype = ' U '
整理了一些t-sql技巧
整理了一些t-sql技巧

查询时:

整理了一些t-sql技巧 Select   *   from  fielddesc  where  table_name  =   ' 你的表名 '

 

还有个更强的语句,是邹建写的,也写出来吧

整理了一些t-sql技巧 SELECT  
整理了一些t-sql技巧 (
case   when  a.colorder = 1   then  d.name  else   ''   end ) N ' 表名 ' ,
整理了一些t-sql技巧 a.colorder N
' 字段序号 ' ,
整理了一些t-sql技巧 a.name N
' 字段名 ' ,
整理了一些t-sql技巧 (
case   when   COLUMNPROPERTY ( a.id,a.name, ' IsIdentity ' ) = 1   then   ' ' else   ''   end ) N ' 标识 ' ,
整理了一些t-sql技巧 (
case   when  ( SELECT   count ( * )
整理了一些t-sql技巧 
FROM  sysobjects
整理了一些t-sql技巧 
WHERE  (name  in
整理了一些t-sql技巧           (
SELECT  name
整理了一些t-sql技巧          
FROM  sysindexes
整理了一些t-sql技巧          
WHERE  (id  =  a.id)  AND  (indid  in
整理了一些t-sql技巧                    (
SELECT  indid
整理了一些t-sql技巧                   
FROM  sysindexkeys
整理了一些t-sql技巧                   
WHERE  (id  =  a.id)  AND  (colid  in
整理了一些t-sql技巧                             (
SELECT  colid
整理了一些t-sql技巧                            
FROM  syscolumns
整理了一些t-sql技巧                            
WHERE  (id  =  a.id)  AND  (name  =  a.name)))))))  AND
整理了一些t-sql技巧        (xtype 
=   ' PK ' )) > 0   then   ' '   else   ''   end ) N ' 主键 ' ,
整理了一些t-sql技巧 b.name N
' 类型 ' ,
整理了一些t-sql技巧 a.length N
' 占用字节数 ' ,
整理了一些t-sql技巧 
COLUMNPROPERTY (a.id,a.name, ' PRECISION ' as  N ' 长度 ' ,
整理了一些t-sql技巧 
isnull ( COLUMNPROPERTY (a.id,a.name, ' Scale ' ), 0 as  N ' 小数位数 ' ,
整理了一些t-sql技巧 (
case   when  a.isnullable = 1   then   ' ' else   ''   end ) N ' 允许空 ' ,
整理了一些t-sql技巧 
isnull (e. text , '' ) N ' 默认值 ' ,
整理了一些t-sql技巧 
isnull (g. [ value ] , '' AS  N ' 字段说明 '
整理了一些t-sql技巧
-- into ##tx
整理了一些t-sql技巧

整理了一些t-sql技巧
FROM   syscolumns  a  left   join  systypes b 
整理了一些t-sql技巧
on   a.xtype = b.xusertype
整理了一些t-sql技巧
inner   join  sysobjects d 
整理了一些t-sql技巧
on  a.id = d.id   and   d.xtype = ' U '   and   d.name <> ' dtproperties '
整理了一些t-sql技巧
left   join  syscomments e
整理了一些t-sql技巧
on  a.cdefault = e.id
整理了一些t-sql技巧
left   join  sysproperties g
整理了一些t-sql技巧
on  a.id = g.id  AND  a.colid  =  g.smallid  
整理了一些t-sql技巧
order   by   object_name (a.id),a.colorder
整理了一些t-sql技巧
整理了一些t-sql技巧

六、 时间格式转换问题
因为新开发的软件需要用一些旧软件生成的一些数据,在时间格式上不统一,只能手工转换,研究了一下午写了三条语句,以前没怎么用过convert函数和case语句,还有"+"操作符在不同上下文环境也会起到不同的作用,把我搞晕了要,不过现在看来是差不多弄好了。

1、把所有"70.07.06"这样的值变成"1970-07-06"

整理了一些t-sql技巧 UPDATE  lvshi
整理了一些t-sql技巧
SET  shengri  =   ' 19 '   +   REPLACE (shengri,  ' . ' ' - ' )
整理了一些t-sql技巧
WHERE  (zhiyezheng  =   ' 139770070153 ' )

 

2、在"1970-07-06"里提取"70","07","06"

整理了一些t-sql技巧 SELECT   SUBSTRING (shengri,  3 2 AS   year SUBSTRING (shengri,  6 2 AS   month
整理了一些t-sql技巧      
SUBSTRING (shengri,  9 2 AS   day
整理了一些t-sql技巧
FROM  lvshi
整理了一些t-sql技巧
WHERE  (zhiyezheng  =   ' 139770070153 ' )
整理了一些t-sql技巧

3、把一个时间类型字段转换成"1970-07-06"

整理了一些t-sql技巧 UPDATE  lvshi
整理了一些t-sql技巧
SET  shenling  =   CONVERT ( varchar ( 4 ),  YEAR (shenling)) 
整理了一些t-sql技巧      
+   ' - '   +   CASE   WHEN   LEN ( MONTH (shenling))  =   1   THEN   ' 0 '   +   CONVERT ( varchar ( 2 ), 
整理了一些t-sql技巧      
month (shenling))  ELSE   CONVERT ( varchar ( 2 ),  month (shenling)) 
整理了一些t-sql技巧      
END   +   ' - '   +   CASE   WHEN   LEN ( day (shenling))  =   1   THEN   ' 0 '   +   CONVERT ( char ( 2 ), 
整理了一些t-sql技巧      
day (shenling))  ELSE   CONVERT ( varchar ( 2 ),  day (shenling))  END
整理了一些t-sql技巧
WHERE  (zhiyezheng  =   ' 139770070153 ' )
整理了一些t-sql技巧

七、 分区视图
分区视图是提高查询性能的一个很好的办法

整理了一些t-sql技巧 -- 看下面的示例
整理了一些t-sql技巧

整理了一些t-sql技巧
-- 示例表
整理了一些t-sql技巧
create   table  tempdb.dbo.t_10(
整理了一些t-sql技巧id 
int   primary   key   check (id  between   1   and   10 ),name  varchar ( 10 ))
整理了一些t-sql技巧
整理了一些t-sql技巧
create   table  pubs.dbo.t_20(
整理了一些t-sql技巧id 
int   primary   key   check (id  between   11   and   20 ),name  varchar ( 10 ))
整理了一些t-sql技巧
整理了一些t-sql技巧
create   table  northwind.dbo.t_30(
整理了一些t-sql技巧id 
int   primary   key   check (id  between   21   and   30 ),name  varchar ( 10 ))
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 分区视图
整理了一些t-sql技巧
create   view  v_t
整理了一些t-sql技巧
as
整理了一些t-sql技巧
select   *   from  tempdb.dbo.t_10
整理了一些t-sql技巧
union   all
整理了一些t-sql技巧
select   *   from  pubs.dbo.t_20
整理了一些t-sql技巧
union   all
整理了一些t-sql技巧
select   *   from  northwind.dbo.t_30
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 插入数据
整理了一些t-sql技巧
insert  v_t  select   1  , ' aa '
整理了一些t-sql技巧
union    all   select   2  , ' bb '
整理了一些t-sql技巧
union    all   select   11 , ' cc '
整理了一些t-sql技巧
union    all   select   12 , ' dd '
整理了一些t-sql技巧
union    all   select   21 , ' ee '
整理了一些t-sql技巧
union    all   select   22 , ' ff '
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 更新数据
整理了一些t-sql技巧
update  v_t  set  name = name + ' _更新 '   where   right (id, 1 ) = 1
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 删除测试
整理了一些t-sql技巧
delete   from  v_t  where   right (id, 1 ) = 2
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 显示结果
整理了一些t-sql技巧
select   *   from  v_t
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 删除测试
整理了一些t-sql技巧
drop   table  northwind.dbo.t_30,pubs.dbo.t_20,tempdb.dbo.t_10
整理了一些t-sql技巧
drop   view  v_t
整理了一些t-sql技巧
整理了一些t-sql技巧
/*--测试结果
整理了一些t-sql技巧
整理了一些t-sql技巧id          name       
整理了一些t-sql技巧----------- ---------- 
整理了一些t-sql技巧1           aa_更新
整理了一些t-sql技巧11          cc_更新
整理了一些t-sql技巧21          ee_更新
整理了一些t-sql技巧
整理了一些t-sql技巧(所影响的行数为 3 行)
整理了一些t-sql技巧==
*/

整理了一些t-sql技巧
整理了一些t-sql技巧


八、 树型的实现
整理了一些t-sql技巧

整理了一些t-sql技巧 -- 参考
整理了一些t-sql技巧

整理了一些t-sql技巧
-- 树形数据查询示例
整理了一些t-sql技巧--
作者: 邹建
整理了一些t-sql技巧

整理了一些t-sql技巧
-- 示例数据
整理了一些t-sql技巧
create   table   [ tb ] ( [ id ]   int   identity ( 1 , 1 ), [ pid ]   int ,name  varchar ( 20 ))
整理了一些t-sql技巧
insert   [ tb ]   select   0 , ' 中国 '
整理了一些t-sql技巧
union    all    select   0 , ' 美国 '
整理了一些t-sql技巧
union    all    select   0 , ' 加拿大 '
整理了一些t-sql技巧
union    all    select   1 , ' 北京 '
整理了一些t-sql技巧
union    all    select   1 , ' 上海 '
整理了一些t-sql技巧
union    all    select   1 , ' 江苏 '
整理了一些t-sql技巧
union    all    select   6 , ' 苏州 '
整理了一些t-sql技巧
union    all    select   7 , ' 常熟 '
整理了一些t-sql技巧
union    all    select   6 , ' 南京 '
整理了一些t-sql技巧
union    all    select   6 , ' 无锡 '
整理了一些t-sql技巧
union    all    select   2 , ' 纽约 '
整理了一些t-sql技巧
union    all    select   2 , ' 旧金山 '
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 查询指定id的所有子
整理了一些t-sql技巧
create   function  f_cid(
整理了一些t-sql技巧
@id   int
整理了一些t-sql技巧)
returns   @re   table ( [ id ]   int , [ level ]   int )
整理了一些t-sql技巧
as
整理了一些t-sql技巧
begin
整理了一些t-sql技巧 
declare   @l   int
整理了一些t-sql技巧 
set   @l = 0
整理了一些t-sql技巧 
insert   @re   select   @id , @l
整理了一些t-sql技巧 
while   @@rowcount > 0
整理了一些t-sql技巧 
begin
整理了一些t-sql技巧  
set   @l = @l + 1
整理了一些t-sql技巧  
insert   @re   select  a. [ id ] , @l
整理了一些t-sql技巧  
from   [ tb ]  a, @re  b
整理了一些t-sql技巧  
where  a. [ pid ] = b. [ id ]   and  b. [ level ] = @l - 1
整理了一些t-sql技巧 
end
整理了一些t-sql技巧
/**/ /*--如果只显示最明细的子(下面没有子),则加上这个删除
整理了一些t-sql技巧 delete a from @re a
整理了一些t-sql技巧 where exists(
整理了一些t-sql技巧  select 1 from [tb] where [pid]=a.[id])
整理了一些t-sql技巧--
*/

整理了一些t-sql技巧 
return
整理了一些t-sql技巧
end
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 调用(查询所有的子)
整理了一些t-sql技巧
select  a. * ,层次 = b. [ level ]   from   [ tb ]  a,f_cid( 2 )b  where  a. [ id ] = b. [ id ]
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 删除测试
整理了一些t-sql技巧
drop   table   [ tb ]
整理了一些t-sql技巧
drop   function  f_cid
整理了一些t-sql技巧
go
整理了一些t-sql技巧
整理了一些t-sql技巧

 

九、 排序问题

整理了一些t-sql技巧 CREATE   TABLE   [ t ]  (
整理了一些t-sql技巧 
[ id ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
整理了一些t-sql技巧 
[ GUID ]   [ uniqueidentifier ]   NULL  
整理了一些t-sql技巧
ON   [ PRIMARY ]
整理了一些t-sql技巧
GO


下面这句执行5次

整理了一些t-sql技巧 insert  t  values  ( newid ())


查看执行结果

整理了一些t-sql技巧 select   *   from  t


1、 第一种

整理了一些t-sql技巧 select   *   from  t
整理了一些t-sql技巧 
order   by   case  id  when   4   then   1
整理了一些t-sql技巧                  
when   5   then   2
整理了一些t-sql技巧                  
when   1   then   3
整理了一些t-sql技巧                  
when   2   then   4
整理了一些t-sql技巧                  
when   3   then   5   end


2、 第二种

整理了一些t-sql技巧 select   *   from  t  order   by  (id + 2 ) % 6


3、 第三种

整理了一些t-sql技巧 select   *   from  t  order   by   charindex ( cast (id  as   varchar ), ' 45123 ' )


4、 第四种

整理了一些t-sql技巧 select   *   from  t
整理了一些t-sql技巧
WHERE  id  between   0   and   5
整理了一些t-sql技巧
order   by   charindex ( cast (id  as   varchar ), ' 45123 ' )


5、 第五种

整理了一些t-sql技巧 select   *   from  t  order   by   case   when  id  > 3   then  id - 5   else  id  end


6、 第六种

整理了一些t-sql技巧 select   *   from  t  order   by  id  /   4   desc ,id  asc

 

十、 一条语句删除一批记录
首先id列是int标识类类型,然后删除ID值为5,6,8,9,10,11的列,这里的cast函数不能用convert函数代替,而且转换的类型必须是varchar,而不能是char,否则就会执行出你不希望的结果,这里的"5,6,8,9,10,11"可以是你在页面上获取的一个chkboxlist构建成的值,然后用下面的一句就全部删
除了,比循环用多条语句高效吧应该。

整理了一些t-sql技巧 delete   from   [ fujian ]   where   charindex ( ' , ' + cast ( [ id ]   as   varchar ) + ' , ' , ' , ' + ' 5,6,8,9,10,11, ' + ' , ' ) > 0


还有一种就是

整理了一些t-sql技巧 delete   from  table1  where  id  in ( 1 , 2 , 3 , 4  整理了一些t-sql技巧)


十一、获取子表内的一列数据的组合字符串
下面这个函数获取05年已经注册了的某个所的律师,唯一一个参数就是事务所的名称,然后返回zhuce字段里包含05字样的所有律师。

整理了一些t-sql技巧 CREATE     FUNCTION  fn_Get05LvshiNameBySuo  ( @p_suo   Nvarchar ( 50 ))
整理了一些t-sql技巧
RETURNS   Nvarchar ( 2000 )
整理了一些t-sql技巧
AS
整理了一些t-sql技巧
BEGIN   
整理了一些t-sql技巧 
DECLARE   @LvshiNames   varchar ( 2000 ),  @name   varchar ( 50 )
整理了一些t-sql技巧 
select   @LvshiNames = ''
整理了一些t-sql技巧 
DECLARE  lvshi_cursor  CURSOR   FOR

数据库里有1,2,3,4,5 共5条记录,要用一条sql语句让其排序,使它排列成4,5,1,2,3,怎么写?
整理了一些t-sql技巧    -- 数据操作 
整理了一些t-sql技巧

整理了一些t-sql技巧   
SELECT   -- 从数据库表中检索数据行和列 
整理了一些t-sql技巧
       INSERT   -- 向数据库表添加新数据行 
整理了一些t-sql技巧
       DELETE   -- 从数据库表中删除数据行 
整理了一些t-sql技巧
       UPDATE   -- 更新数据库表中的数据 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- 数据定义 
整理了一些t-sql技巧

整理了一些t-sql技巧   
CREATE   TABLE   -- 创建一个数据库表 
整理了一些t-sql技巧
       DROP   TABLE   -- 从数据库中删除表 
整理了一些t-sql技巧
       ALTER   TABLE   -- 修改数据库表结构 
整理了一些t-sql技巧
       CREATE   VIEW   -- 创建一个视图 
整理了一些t-sql技巧
       DROP   VIEW   -- 从数据库中删除视图 
整理了一些t-sql技巧
       CREATE   INDEX   -- 为数据库表创建一个索引 
整理了一些t-sql技巧
       DROP   INDEX   -- 从数据库中删除索引 
整理了一些t-sql技巧
       CREATE   PROCEDURE   -- 创建一个存储过程 
整理了一些t-sql技巧
       DROP   PROCEDURE   -- 从数据库中删除存储过程 
整理了一些t-sql技巧
       CREATE   TRIGGER   -- 创建一个触发器 
整理了一些t-sql技巧
       DROP   TRIGGER   -- 从数据库中删除触发器 
整理了一些t-sql技巧
       CREATE   SCHEMA   -- 向数据库添加一个新模式 
整理了一些t-sql技巧
       DROP   SCHEMA   -- 从数据库中删除一个模式 
整理了一些t-sql技巧
       CREATE  DOMAIN  -- 创建一个数据值域 
整理了一些t-sql技巧
       ALTER  DOMAIN  -- 改变域定义 
整理了一些t-sql技巧
       DROP  DOMAIN  -- 从数据库中删除一个域 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- 数据控制 
整理了一些t-sql技巧

整理了一些t-sql技巧   
GRANT   -- 授予用户访问权限 
整理了一些t-sql技巧
       DENY   -- 拒绝用户访问 
整理了一些t-sql技巧
       REVOKE   -- 解除用户访问权限 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- 事务控制 
整理了一些t-sql技巧

整理了一些t-sql技巧   
COMMIT   -- 结束当前事务 
整理了一些t-sql技巧
       ROLLBACK   -- 中止当前事务 
整理了一些t-sql技巧
       SET   TRANSACTION   -- 定义当前事务数据访问特征 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- 程序化SQL 
整理了一些t-sql技巧

整理了一些t-sql技巧   
DECLARE   -- 为查询设定游标 
整理了一些t-sql技巧
      EXPLAN  -- 为查询描述数据访问计划 
整理了一些t-sql技巧
       OPEN   -- 检索查询结果打开一个游标 
整理了一些t-sql技巧
       FETCH   -- 检索一行查询结果 
整理了一些t-sql技巧
       CLOSE   -- 关闭游标 
整理了一些t-sql技巧
       PREPARE   -- 为动态执行准备SQL 语句 
整理了一些t-sql技巧
       EXECUTE   -- 动态地执行SQL 语句 
整理了一些t-sql技巧
      DESCRIBE  -- 描述准备好的查询   
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- -局部变量 
整理了一些t-sql技巧

整理了一些t-sql技巧   
declare   @id   char ( 10
整理了一些t-sql技巧      
-- set @id = '10010001' 
整理了一些t-sql技巧
       select   @id   =   ' 10010001 '    
整理了一些t-sql技巧
整理了一些t-sql技巧  
-- -全局变量 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- -必须以@@开头   
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- IF ELSE 
整理了一些t-sql技巧

整理了一些t-sql技巧  
declare   @x   int   @y   int   @z   int  
整理了一些t-sql技巧      
select   @x   =   1   @y   =   2   @z = 3  
整理了一些t-sql技巧      
if   @x   >   @y  
整理了一些t-sql技巧       
print   ' x > y '   -- 打印字符串'x > y' 
整理了一些t-sql技巧
       else   if   @y   >   @z  
整理了一些t-sql技巧       
print   ' y > z '  
整理了一些t-sql技巧      
else   print   ' z > y '  
整理了一些t-sql技巧      
-- CASE 
整理了一些t-sql技巧
       use  pangu 
整理了一些t-sql技巧      
update  employee 
整理了一些t-sql技巧      
set  e_wage  =  
整理了一些t-sql技巧       
case  
整理了一些t-sql技巧       
when  job_level  =  ’ 1 ’  then  e_wage * 1.08  
整理了一些t-sql技巧       
when  job_level  =  ’ 2 ’  then  e_wage * 1.07  
整理了一些t-sql技巧       
when  job_level  =  ’ 3 ’  then  e_wage * 1.06  
整理了一些t-sql技巧       
else  e_wage * 1.05  
整理了一些t-sql技巧       
end  
整理了一些t-sql技巧      
-- WHILE CONTINUE BREAK 
整理了一些t-sql技巧
       declare   @x   int   @y   int   @c   int  
整理了一些t-sql技巧      
select   @x   =   1   @y = 1  
整理了一些t-sql技巧      
while   @x   <   3  
整理了一些t-sql技巧       
begin  
整理了一些t-sql技巧       
print   @x   -- 打印变量x 的值 
整理了一些t-sql技巧
        while   @y   <   3  
整理了一些t-sql技巧       
begin  
整理了一些t-sql技巧       
select   @c   =   100 * @x   +   @y  
整理了一些t-sql技巧       
print   @c   -- 打印变量c 的值 
整理了一些t-sql技巧
        select   @y   =   @y   +   1  
整理了一些t-sql技巧       
end  
整理了一些t-sql技巧       
select   @x   =   @x   +   1  
整理了一些t-sql技巧       
select   @y   =   1  
整理了一些t-sql技巧       
end  
整理了一些t-sql技巧      
-- WAITFOR 
整理了一些t-sql技巧

整理了一些t-sql技巧  
-- 例 等待1 小时2 分零3 秒后才执行SELECT 语句 
整理了一些t-sql技巧

整理了一些t-sql技巧  
waitfor  delay ’ 01 : 02 : 03 ’ 
整理了一些t-sql技巧      
select   *   from  employee 
整理了一些t-sql技巧
整理了一些t-sql技巧    
-- 例 等到晚上11 点零8 分后才执行SELECT 语句 
整理了一些t-sql技巧

整理了一些t-sql技巧    
waitfor  time ’ 23 : 08 : 00 ’ 
整理了一些t-sql技巧
整理了一些t-sql技巧
整理了一些t-sql技巧
SELECT    
整理了一些t-sql技巧
整理了一些t-sql技巧   
select   * (列名)  from  table_name(表名)  where  column_name operator value ex宿主) 
整理了一些t-sql技巧     
select   *   from  stock_information  where  stockid  =   str (nid) 
整理了一些t-sql技巧     stockname 
=   ' str_name '  
整理了一些t-sql技巧     stockname 
like   ' % find this % '  
整理了一些t-sql技巧     stockname 
like   ' [a-zA-Z]% '   -- ------- ([]指定值的范围) 
整理了一些t-sql技巧
     stockname  like   ' [^F-M]% '   -- ------- (^排除指定范围) 
整理了一些t-sql技巧
      -- ------- 只能在使用like关键字的where子句中使用通配符) 
整理了一些t-sql技巧
      or  stockpath  =   ' stock_path '  
整理了一些t-sql技巧     
or  stocknumber  <   1000  
整理了一些t-sql技巧     
and  stockindex  =   24  
整理了一些t-sql技巧     
not  stocksex  =   ' man '  
整理了一些t-sql技巧     stocknumber 
between   20   and   100  
整理了一些t-sql技巧     stocknumber 
in ( 10 , 20 , 30
整理了一些t-sql技巧     
order   by  stockid  desc ( asc -- ------- 排序,desc-降序,asc-升序 
整理了一些t-sql技巧
      order   by   1 , 2   -- ------- by列号 
整理了一些t-sql技巧
     stockname  =  ( select  stockname  from  stock_information  where  stockid  =   4
整理了一些t-sql技巧     
-- ------- 子查询 
整理了一些t-sql技巧
      -- ------- 除非能确保内层select只返回一个行的值 
整理了一些t-sql技巧
      -- ------- 否则应在外层where子句中用一个in限定符 
整理了一些t-sql技巧
      select   distinct  column_name form table_name 
整理了一些t-sql技巧   
-- ------- distinct指定检索独有的列值,不重复 
整理了一些t-sql技巧
      select  stocknumber ,"stocknumber  +   10 =  stocknumber  +   10   from  table_name 
整理了一些t-sql技巧     
select  stockname , "stocknumber"  =   count ( * from  table_name  group   by  stockname 
整理了一些t-sql技巧     
-- ------- group by 将表按行分组,指定列中有相同的值 
整理了一些t-sql技巧
      having   count ( * =   2   -- ------- having选定指定的组 
整理了一些t-sql技巧

整理了一些t-sql技巧   
select   *  
整理了一些t-sql技巧     
from  table1, table2 
整理了一些t-sql技巧
where  table1.id  *=  table2.id  -- ------ 左外部连接,table1中有的而table2中没有得以null表示 
整理了一些t-sql技巧
     table1.id  =*  table2.id  -- ------ 右外部连接 
整理了一些t-sql技巧
      select  stockname  from  table1 
整理了一些t-sql技巧     
union   [ all ]   -- ------ union合并查询结果集,all-保留重复行 
整理了一些t-sql技巧
      select  stockname  from  table2  
整理了一些t-sql技巧
整理了一些t-sql技巧   
insert   
整理了一些t-sql技巧
整理了一些t-sql技巧   
insert   into  table_name (Stock_name,Stock_number) value ("xxx","xxxx" 
整理了一些t-sql技巧   value (
select  Stockname , Stocknumber  from  Stock_table2) 
整理了一些t-sql技巧   
-- -----value为select语句   
整理了一些t-sql技巧

整理了一些t-sql技巧   
update    
整理了一些t-sql技巧
整理了一些t-sql技巧   
update  table_name  set  Stockname  =  "xxx"  [ where Stockid = 3 ]  
整理了一些t-sql技巧   Stockname 
=   default  
整理了一些t-sql技巧   Stockname 
=   null  
整理了一些t-sql技巧   Stocknumber 
=  Stockname  +   4    
整理了一些t-sql技巧
整理了一些t-sql技巧   
delete    
整理了一些t-sql技巧
整理了一些t-sql技巧   
delete   from  table_name  where  Stockid  =   3  
整理了一些t-sql技巧   
truncate  table_name  -- ------- 删除表中所有行,仍保持表的完整性 
整理了一些t-sql技巧
    drop   table  table_name  -- ------- 完全删除表  
整理了一些t-sql技巧

整理了一些t-sql技巧   
alter   table   -- ------ 修改数据库表结构   
整理了一些t-sql技巧

整理了一些t-sql技巧   
alter   table   database .owner.table_name  add  column_name  char ( 2 null  .. 
整理了一些t-sql技巧   sp_help table_name 
-- ------ 显示表已有特征 
整理了一些t-sql技巧
    create   table  table_name (name  char ( 20 ), age  smallint , lname  varchar ( 30 )) 
整理了一些t-sql技巧   
insert   into  table_name  select   -- ------ 实现删除列的方法(创建新表) 
整理了一些t-sql技巧
    alter   table  table_name  drop   constraint  Stockname_default 
整理了一些t-sql技巧   
-- ------- 删除Stockname的default约束 
整理了一些t-sql技巧

整理了一些t-sql技巧
整理了一些t-sql技巧
整理了一些t-sql技巧
整理了一些t-sql技巧常用函数(
function )   
整理了一些t-sql技巧
整理了一些t-sql技巧    转换函数
整理了一些t-sql技巧
整理了一些t-sql技巧    
convert (数据类型,值,格式)
整理了一些t-sql技巧
整理了一些t-sql技巧  统计函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
AVG   -- 求平均值 
整理了一些t-sql技巧
   COUNT   -- 统计数目 
整理了一些t-sql技巧
   MAX   -- 求最大值 
整理了一些t-sql技巧
   MIN   -- 求最小值 
整理了一些t-sql技巧
   SUM   -- 求和  
整理了一些t-sql技巧

整理了一些t-sql技巧  
AVG  
整理了一些t-sql技巧
整理了一些t-sql技巧  
use  pangu 
整理了一些t-sql技巧  
select   avg (e_wage)  as  dept_avgWage 
整理了一些t-sql技巧  
from  employee 
整理了一些t-sql技巧  
group   by  dept_id   
整理了一些t-sql技巧
整理了一些t-sql技巧  
MAX  
整理了一些t-sql技巧
整理了一些t-sql技巧  
-- 求工资最高的员工姓名 
整理了一些t-sql技巧
   use  pangu 
整理了一些t-sql技巧  
select  e_name 
整理了一些t-sql技巧  
from  employee 
整理了一些t-sql技巧  
where  e_wage  =  
整理了一些t-sql技巧   (
select   max (e_wage) 
整理了一些t-sql技巧   
from  employee)   
整理了一些t-sql技巧
整理了一些t-sql技巧  
STDEV () 
整理了一些t-sql技巧
整理了一些t-sql技巧  
-- STDEV()函数返回表达式中所有数据的标准差 
整理了一些t-sql技巧
   -- STDEVP() 
整理了一些t-sql技巧
   -- STDEVP()函数返回总体标准差   
整理了一些t-sql技巧

整理了一些t-sql技巧  
VAR () 
整理了一些t-sql技巧
整理了一些t-sql技巧  
-- VAR()函数返回表达式中所有值的统计变异数   
整理了一些t-sql技巧

整理了一些t-sql技巧  
VARP () 
整理了一些t-sql技巧
整理了一些t-sql技巧  
-- VARP()函数返回总体变异数   
整理了一些t-sql技巧

整理了一些t-sql技巧  算术函数   
整理了一些t-sql技巧
整理了一些t-sql技巧  三角函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
SIN (float_expression)  -- 返回以弧度表示的角的正弦 
整理了一些t-sql技巧
   COS (float_expression)  -- 返回以弧度表示的角的余弦 
整理了一些t-sql技巧
   TAN (float_expression)  -- 返回以弧度表示的角的正切 
整理了一些t-sql技巧
   COT (float_expression)  -- 返回以弧度表示的角的余切 
整理了一些t-sql技巧

整理了一些t-sql技巧  反三角函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
ASIN (float_expression)  -- 返回正弦是FLOAT 值的以弧度表示的角 
整理了一些t-sql技巧
   ACOS (float_expression)  -- 返回余弦是FLOAT 值的以弧度表示的角 
整理了一些t-sql技巧
   ATAN (float_expression)  -- 返回正切是FLOAT 值的以弧度表示的角 
整理了一些t-sql技巧
  ATAN2(float_expression1,float_expression2) 
整理了一些t-sql技巧   
-- ----返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 
整理了一些t-sql技巧
   DEGREES (numeric_expression) 
整理了一些t-sql技巧   
-- ----把弧度转换为角度返回与表达式相同的数据类型可为 
整理了一些t-sql技巧
    -- ----INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   RADIANS (numeric_expression) 
整理了一些t-sql技巧
-- ----把角度转换为弧度返回与表达式相同的数据类型可为 
整理了一些t-sql技巧

整理了一些t-sql技巧   
-- ----INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   EXP (float_expression)  -- 返回表达式的指数值 
整理了一些t-sql技巧
   LOG (float_expression)  -- 返回表达式的自然对数值 
整理了一些t-sql技巧
   LOG10 (float_expression) -- 返回表达式的以10 为底的对数值 
整理了一些t-sql技巧
   SQRT (float_expression)  -- 返回表达式的平方根 
整理了一些t-sql技巧

整理了一些t-sql技巧  取近似值函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
CEILING (numeric_expression) 
整理了一些t-sql技巧
-- -----返回>=表达式的最小整数返回的数据类型与表达式相同可为 
整理了一些t-sql技巧
    -- -----INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   FLOOR (numeric_expression) 
整理了一些t-sql技巧
-- -----返回<=表达式的最小整数返回的数据类型与表达式相同可为 
整理了一些t-sql技巧
    -- -----INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   ROUND (numeric_expression) 
整理了一些t-sql技巧
-- -----返回以integer_expression 为精度的四舍五入值返回的数据 
整理了一些t-sql技巧
    -- -----类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   ABS (numeric_expression) 
整理了一些t-sql技巧
-- -----返回表达式的绝对值返回的数据类型与表达式相同可为 
整理了一些t-sql技巧
    -- -----INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   SIGN (numeric_expression) 
整理了一些t-sql技巧
-- -----测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型 
整理了一些t-sql技巧
    -- -----与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
整理了一些t-sql技巧
   PI ()  -- -----返回值为π 即3.1415926535897936 
整理了一些t-sql技巧
   RAND ( [ integer_expression ]
整理了一些t-sql技巧
-- -----用任选的[integer_expression]做种子值得出0-1 间的随机浮点数
整理了一些t-sql技巧

整理了一些t-sql技巧
整理了一些t-sql技巧字符串函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
ASCII ()  -- ----函数返回字符表达式最左端字符的ASCII 码值 
整理了一些t-sql技巧
   CHAR ()  -- ----函数用于将ASCII 码转换为字符 
整理了一些t-sql技巧
    -- ----如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 
整理了一些t-sql技巧
   LOWER ()  -- ----函数把字符串全部转换为小写 
整理了一些t-sql技巧
   UPPER ()  -- ----函数把字符串全部转换为大写 
整理了一些t-sql技巧
   STR ()  -- ----函数把数值型数据转换为字符型数据 
整理了一些t-sql技巧
   LTRIM ()  -- ----函数把字符串头部的空格去掉 
整理了一些t-sql技巧
   RTRIM ()  -- ----函数把字符串尾部的空格去掉 
整理了一些t-sql技巧
   LEFT (), RIGHT (), SUBSTRING ()  -- 函数返回部分字符串 
整理了一些t-sql技巧
   CHARINDEX (), PATINDEX ()  -- 函数返回字符串中某个指定的子串出现的开始位置 
整理了一些t-sql技巧
   SOUNDEX ()  -- ----函数返回一个四位字符码 
整理了一些t-sql技巧
    -- ----SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 
整理了一些t-sql技巧
   DIFFERENCE ()  -- ----函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异 
整理了一些t-sql技巧
    -- ----0 两个SOUNDEX 函数返回值的第一个字符不同 
整理了一些t-sql技巧
    -- ----1 两个SOUNDEX 函数返回值的第一个字符相同 
整理了一些t-sql技巧
    -- ----2 两个SOUNDEX 函数返回值的第一二个字符相同 
整理了一些t-sql技巧
    -- ----3 两个SOUNDEX 函数返回值的第一二三个字符相同 
整理了一些t-sql技巧
    -- ----4 两个SOUNDEX 函数返回值完全相同同 
整理了一些t-sql技巧
   QUOTENAME ()  -- ----函数返回被特定字符括起来的字符串 
整理了一些t-sql技巧

整理了一些t-sql技巧  
/**/ /*select quotename('abc', '{') quotename('abc') 
整理了一些t-sql技巧  运行结果如下 
整理了一些t-sql技巧
整理了一些t-sql技巧  { 
整理了一些t-sql技巧  {abc} [abc]
*/
 
整理了一些t-sql技巧  
REPLICATE ()  -- ----函数返回一个重复character_expression 指定次数的字符串 
整理了一些t-sql技巧
   /**/ /*select replicate('abc', 3) replicate( 'abc', -2) 
整理了一些t-sql技巧
整理了一些t-sql技巧  运行结果如下 
整理了一些t-sql技巧
整理了一些t-sql技巧  abcabcabc NULL
*/
 
整理了一些t-sql技巧  
REVERSE ()  -- ----函数将指定的字符串的字符排列顺序颠倒 
整理了一些t-sql技巧
   REPLACE ()  -- ----函数返回被替换了指定子串的字符串 
整理了一些t-sql技巧
   /**/ /*select replace('abc123g', '123', 'def') 
整理了一些t-sql技巧
整理了一些t-sql技巧  运行结果如下 
整理了一些t-sql技巧   
整理了一些t-sql技巧  abcdefg
*/
   
整理了一些t-sql技巧
整理了一些t-sql技巧  
SPACE ()  -- ----函数返回一个有指定长度的空白字符串 
整理了一些t-sql技巧
   STUFF ()  -- ----函数用另一子串替换字符串指定位置长度的子串   
整理了一些t-sql技巧

整理了一些t-sql技巧  数据类型转换函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
CAST () 函数语法如下 
整理了一些t-sql技巧  
CAST () (  AS   [  length  ]
整理了一些t-sql技巧  
CONVERT () 函数语法如下 
整理了一些t-sql技巧  
CONVERT () ( [  length  ] [ , style ]
整理了一些t-sql技巧  
select   cast ( 100 + 99   as   char convert ( varchar ( 12 ),  getdate ()) 
整理了一些t-sql技巧
整理了一些t-sql技巧  运行结果如下 
整理了一些t-sql技巧  
199  Jan  15   2000   
整理了一些t-sql技巧
整理了一些t-sql技巧  日期函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
DAY ()  -- ----函数返回date_expression 中的日期值 
整理了一些t-sql技巧
   MONTH ()  -- ----函数返回date_expression 中的月份值 
整理了一些t-sql技巧
   YEAR ()  -- ----函数返回date_expression 中的年份值 
整理了一些t-sql技巧
   DATEADD ( , ,) 
整理了一些t-sql技巧   
-- ---函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 
整理了一些t-sql技巧
   DATEDIFF ( , ,) 
整理了一些t-sql技巧   
-- ---函数返回两个指定日期在datepart 方面的不同之处 
整理了一些t-sql技巧

整理了一些t-sql技巧  
DATENAME ( ,   -- ----函数以字符串的形式返回日期的指定部分 
整理了一些t-sql技巧
   DATEPART ( ,   -- ----函数以整数值的形式返回日期的指定部分 
整理了一些t-sql技巧
   GETDATE ()  -- ----函数以DATETIME 的缺省格式返回系统当前的日期和时间   
整理了一些t-sql技巧

整理了一些t-sql技巧  系统函数 
整理了一些t-sql技巧
整理了一些t-sql技巧  
APP_NAME ()  -- ----函数返回当前执行的应用程序的名称 
整理了一些t-sql技巧
   COALESCE ()  -- ---函数返回众多表达式中第一个非NULL 表达式的值 
整理了一些t-sql技巧
   COL_LENGTH ( < ' table_name ' > < ' column_name ' >   -- --函数返回表中指定字段的长度值 
整理了一些t-sql技巧
   COL_NAME (,   -- --函数返回表中指定字段的名称即列名 
整理了一些t-sql技巧
   DATALENGTH ()  -- ---函数返回数据表达式的数据的实际长度 
整理了一些t-sql技巧
   DB_ID ( [ 'database_name' ] -- ----函数返回数据库的编号 
整理了一些t-sql技巧
   DB_NAME (database_id)  -- ----函数返回数据库的名称 
整理了一些t-sql技巧
   HOST_ID ()  -- ---函数返回服务器端计算机的名称 
整理了一些t-sql技巧
   HOST_NAME ()  -- ---函数返回服务器端计算机的名称 
整理了一些t-sql技巧
   IDENTITY ( [ , seed increment ] [ AS column_name ]
整理了一些t-sql技巧   
-- IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中 
整理了一些t-sql技巧
   /**/ /*select identity(int, 1, 1) as column_name 
整理了一些t-sql技巧   into newtable 
整理了一些t-sql技巧   from oldtable
*/
 
整理了一些t-sql技巧
整理了一些t-sql技巧  
ISDATE ()  -- --函数判断所给定的表达式是否为合理日期 
整理了一些t-sql技巧
   ISNULL (,   -- 函数将表达式中的NULL 值用指定值替换 
整理了一些t-sql技巧
   ISNUMERIC ()  -- --函数判断所给定的表达式是否为合理的数值 
整理了一些t-sql技巧
   NEWID ()  -- --函数返回一个UNIQUEIDENTIFIER 类型的数值 
整理了一些t-sql技巧
   NULLIF (,  
整理了一些t-sql技巧   
-- --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回xpression1 的值 
整理了一些t-sql技巧 ******************* Transact_SQL ********************
整理了一些t-sql技巧
整理了一些t-sql技巧
-- 语 句                                功 能
整理了一些t-sql技巧--
数据操作
整理了一些t-sql技巧
SELECT        -- 从数据库表中检索数据行和列
整理了一些t-sql技巧
INSERT        -- 向数据库表添加新数据行
整理了一些t-sql技巧
DELETE        -- 从数据库表中删除数据行
整理了一些t-sql技巧
UPDATE        -- 更新数据库表中的数据
整理了一些t-sql技巧--
数据定义
整理了一些t-sql技巧
CREATE   TABLE      -- 创建一个数据库表
整理了一些t-sql技巧
DROP   TABLE       -- 从数据库中删除表
整理了一些t-sql技巧
ALTER   TABLE       -- 修改数据库表结构
整理了一些t-sql技巧
CREATE   VIEW       -- 创建一个视图
整理了一些t-sql技巧
DROP   VIEW       -- 从数据库中删除视图
整理了一些t-sql技巧
CREATE   INDEX      -- 为数据库表创建一个索引
整理了一些t-sql技巧
DROP   INDEX       -- 从数据库中删除索引
整理了一些t-sql技巧
CREATE   PROCEDURE     -- 创建一个存储过程
整理了一些t-sql技巧
DROP   PROCEDURE      -- 从数据库中删除存储过程
整理了一些t-sql技巧
CREATE   TRIGGER      -- 创建一个触发器
整理了一些t-sql技巧
DROP   TRIGGER      -- 从数据库中删除触发器
整理了一些t-sql技巧
CREATE   SCHEMA      -- 向数据库添加一个新模式
整理了一些t-sql技巧
DROP   SCHEMA       -- 从数据库中删除一个模式
整理了一些t-sql技巧
CREATE  DOMAIN     -- 创建一个数据值域
整理了一些t-sql技巧
ALTER  DOMAIN     -- 改变域定义
整理了一些t-sql技巧
DROP  DOMAIN      -- 从数据库中删除一个域
整理了一些t-sql技巧--
数据控制
整理了一些t-sql技巧
GRANT        -- 授予用户访问权限
整理了一些t-sql技巧
DENY        -- 拒绝用户访问
整理了一些t-sql技巧
REVOKE        -- 解除用户访问权限
整理了一些t-sql技巧--
事务控制
整理了一些t-sql技巧
COMMIT        -- 结束当前事务
整理了一些t-sql技巧
ROLLBACK       -- 中止当前事务
整理了一些t-sql技巧
SET   TRANSACTION      -- 定义当前事务数据访问特征
整理了一些t-sql技巧--
程序化SQL
整理了一些t-sql技巧
DECLARE        -- 为查询设定游标
整理了一些t-sql技巧
EXPLAN       -- 为查询描述数据访问计划
整理了一些t-sql技巧
OPEN        -- 检索查询结果打开一个游标
整理了一些t-sql技巧
FETCH        -- 检索一行查询结果
整理了一些t-sql技巧
CLOSE        -- 关闭游标
整理了一些t-sql技巧
PREPARE        -- 为动态执行准备SQL 语句
整理了一些t-sql技巧
EXECUTE        -- 动态地执行SQL 语句
整理了一些t-sql技巧
DESCRIBE      -- 描述准备好的查询
整理了一些t-sql技巧

整理了一些t-sql技巧
-- -局部变量
整理了一些t-sql技巧
declare   @id   char ( 10 )
整理了一些t-sql技巧
-- set @id = '10010001'
整理了一些t-sql技巧
select   @id   =   ' 10010001 '
整理了一些t-sql技巧
整理了一些t-sql技巧
-- -全局变量
整理了一些t-sql技巧--
-必须以@@开头
整理了一些t-sql技巧

整理了一些t-sql技巧
-- IF ELSE
整理了一些t-sql技巧
declare   @x   int   @y   int   @z   int
整理了一些t-sql技巧
select   @x   =   1   @y   =   2   @z = 3
整理了一些t-sql技巧
if   @x   >   @y
整理了一些t-sql技巧 
print   ' x > y '   -- 打印字符串'x > y'
整理了一些t-sql技巧
else   if   @y   >   @z
整理了一些t-sql技巧 
print   ' y > z '
整理了一些t-sql技巧
else   print   ' z > y '
整理了一些t-sql技巧
整理了一些t-sql技巧
-- CASE
整理了一些t-sql技巧
use  pangu
整理了一些t-sql技巧
update  employee
整理了一些t-sql技巧
set  e_wage  =
整理了一些t-sql技巧 
case
整理了一些t-sql技巧  
when  job_level  =  ’ 1 ’  then  e_wage * 1.08
整理了一些t-sql技巧  
when  job_level  =  ’ 2 ’  then  e_wage * 1.07
整理了一些t-sql技巧  
when  job_level  =  ’ 3 ’  then  e_wage * 1.06
整理了一些t-sql技巧  
else  e_wage * 1.05
整理了一些t-sql技巧 
end
整理了一些t-sql技巧
整理了一些t-sql技巧
-- WHILE CONTINUE BREAK
整理了一些t-sql技巧
declare   @x   int   @y   int   @c   int
整理了一些t-sql技巧
select   @x   =   1   @y = 1
整理了一些t-sql技巧
while   @x   <   3
整理了一些t-sql技巧 
begin
整理了一些t-sql技巧  
print   @x   -- 打印变量x 的值
整理了一些t-sql技巧
   while   @y   <   3
整理了一些t-sql技巧   
begin
整理了一些t-sql技巧    
select   @c   =   100 * @x   +   @y
整理了一些t-sql技巧    
print   @c   -- 打印变量c 的值
整理了一些t-sql技巧
     select   @y   =   @y   +   1
整理了一些t-sql技巧   
end
整理了一些t-sql技巧  
select   @x   =   @x   +   1
整理了一些t-sql技巧  
select   @y   =   1
整理了一些t-sql技巧 
end
整理了一些t-sql技巧
整理了一些t-sql技巧
-- WAITFOR
整理了一些t-sql技巧--
例 等待1 小时2 分零3 秒后才执行SELECT 语句
整理了一些t-sql技巧
waitfor  delay ’ 01 : 02 : 03
整理了一些t-sql技巧
select   *   from  employee
整理了一些t-sql技巧
-- 例 等到晚上11 点零8 分后才执行SELECT 语句
整理了一些t-sql技巧
waitfor  time ’ 23 : 08 : 00
整理了一些t-sql技巧
select   *   from  employee
整理了一些t-sql技巧
整理了一些t-sql技巧 
整理了一些t-sql技巧
整理了一些t-sql技巧
*** SELECT ***
整理了一些t-sql技巧
整理了一些t-sql技巧   
select   * (列名)  from  table_name(表名)  where  column_name operator value
整理了一些t-sql技巧   ex:(宿主)
整理了一些t-sql技巧  
select   *   from  stock_information  where  stockid    =   str (nid)
整理了一些t-sql技巧     stockname 
=   ' str_name '  
整理了一些t-sql技巧     stockname 
like   ' % find this % '  
整理了一些t-sql技巧     stockname 
like   ' [a-zA-Z]% '   -- ------- ([]指定值的范围)
整理了一些t-sql技巧
     stockname  like   ' [^F-M]% '     -- ------- (^排除指定范围)
整理了一些t-sql技巧
      -- ------- 只能在使用like关键字的where子句中使用通配符)
整理了一些t-sql技巧
      or  stockpath  =   ' stock_path '
整理了一些t-sql技巧     
or  stocknumber  <   1000
整理了一些t-sql技巧     
and  stockindex  =   24
整理了一些t-sql技巧     
not  stocksex  =   ' man '
整理了一些t-sql技巧     stocknumber 
between   20   and   100
整理了一些t-sql技巧     stocknumber 
in ( 10 , 20 , 30 )
整理了一些t-sql技巧     
order   by  stockid  desc ( asc -- ------- 排序,desc-降序,asc-升序
整理了一些t-sql技巧
      order   by   1 , 2   -- ------- by列号
整理了一些t-sql技巧
     stockname  =  ( select  stockname  from  stock_information   where  stockid   =   4 )
整理了一些t-sql技巧     
-- ------- 子查询
整理了一些t-sql技巧
      -- ------- 除非能确保内层select只返回一个行的值,
整理了一些t-sql技巧
      -- ------- 否则应在外层where子句中用一个in限定符
整理了一些t-sql技巧
   select   distinct  column_name form table_name  -- ------- distinct指定检索独有的列值,不重复
整理了一些t-sql技巧
   select  stocknumber ,"stocknumber  +   10 =  stocknumber  +   10   from  table_name
整理了一些t-sql技巧  
select  stockname , "stocknumber"  =   count ( * from  table_name  group   by  stockname
整理了一些t-sql技巧                                      
-- ------- group by 将表按行分组,指定列中有相同的值
整理了一些t-sql技巧
           having   count ( * =   2    -- -------  having选定指定的组
整理了一些t-sql技巧
        
整理了一些t-sql技巧  
select   *  
整理了一些t-sql技巧  
from  table1, table2                  
整理了一些t-sql技巧  
where  table1.id  *=  table2.id  -- ------ 左外部连接,table1中有的而table2中没有得以null表示
整理了一些t-sql技巧
     table1.id  =*  table2.id  -- ------ 右外部连接 
整理了一些t-sql技巧

整理了一些t-sql技巧  
select  stockname  from  table1
整理了一些t-sql技巧  
union   [ all ]    -- ---  union合并查询结果集,all-保留重复行
整理了一些t-sql技巧
   select  stockname  from  table2
整理了一些t-sql技巧
整理了一些t-sql技巧
*** insert ***
整理了一些t-sql技巧
整理了一些t-sql技巧  
insert   into  table_name (Stock_name,Stock_number) value ("xxx","xxxx")
整理了一些t-sql技巧              value (
select  Stockname , Stocknumber  from  Stock_table2) -- -value为select语句
整理了一些t-sql技巧

整理了一些t-sql技巧
*** update ***
整理了一些t-sql技巧
整理了一些t-sql技巧  
update  table_name  set  Stockname  =  "xxx"  [ where Stockid = 3 ]
整理了一些t-sql技巧         Stockname 
=   default
整理了一些t-sql技巧         Stockname 
=   null
整理了一些t-sql技巧         Stocknumber 
=  Stockname  +   4
整理了一些t-sql技巧
整理了一些t-sql技巧
*** delete ***
整理了一些t-sql技巧
整理了一些t-sql技巧  
delete   from  table_name  where  Stockid  =   3
整理了一些t-sql技巧  
truncate  table_name  -- --------- 删除表中所有行,仍保持表的完整性
整理了一些t-sql技巧
   drop   table  table_name  -- ------------- 完全删除表
整理了一些t-sql技巧

整理了一些t-sql技巧
*** alter   table ***   -- - 修改数据库表结构
整理了一些t-sql技巧

整理了一些t-sql技巧  
alter   table   database .owner.table_name  add  column_name  char ( 2 null  整理了一些t-sql技巧..
整理了一些t-sql技巧  sp_help table_name 
-- -- 显示表已有特征
整理了一些t-sql技巧
   create   table  table_name (name  char ( 20 ), age  smallint , lname  varchar ( 30 ))
整理了一些t-sql技巧  
insert   into  table_name  select  整理了一些t-sql技巧整理了一些t-sql技巧整理了一些t-sql技巧  -- --- 实现删除列的方法(创建新表)
整理了一些t-sql技巧
   alter   table  table_name  drop   constraint  Stockname_default  -- -- 删除Stockname的default约束
整理了一些t-sql技巧
    
整理了一些t-sql技巧
*** function ( /*常用函数*/ ) ***
整理了一些t-sql技巧
整理了一些t-sql技巧
-- --统计函数----
整理了一些t-sql技巧
AVG      -- 求平均值
整理了一些t-sql技巧
COUNT     -- 统计数目
整理了一些t-sql技巧
MAX      -- 求最大值
整理了一些t-sql技巧
MIN      -- 求最小值
整理了一些t-sql技巧
SUM      -- 求和
整理了一些t-sql技巧

整理了一些t-sql技巧
-- AVG
整理了一些t-sql技巧
use  pangu
整理了一些t-sql技巧
select   avg (e_wage)  as  dept_avgWage
整理了一些t-sql技巧
from  employee
整理了一些t-sql技巧
group   by  dept_id
整理了一些t-sql技巧
整理了一些t-sql技巧
-- MAX
整理了一些t-sql技巧--
求工资最高的员工姓名
整理了一些t-sql技巧
use  pangu
整理了一些t-sql技巧
select  e_name
整理了一些t-sql技巧
from  employee
整理了一些t-sql技巧
where  e_wage  =
整理了一些t-sql技巧 (
select   max (e_wage)
整理了一些t-sql技巧  
from  employee)
整理了一些t-sql技巧
整理了一些t-sql技巧
-- STDEV()
整理了一些t-sql技巧--
STDEV()函数返回表达式中所有数据的标准差
整理了一些t-sql技巧

整理了一些t-sql技巧
-- STDEVP()
整理了一些t-sql技巧--
STDEVP()函数返回总体标准差
整理了一些t-sql技巧

整理了一些t-sql技巧
-- VAR()
整理了一些t-sql技巧--
VAR()函数返回表达式中所有值的统计变异数
整理了一些t-sql技巧

整理了一些t-sql技巧
-- VARP()
整理了一些t-sql技巧--
VARP()函数返回总体变异数
整理了一些t-sql技巧

整理了一些t-sql技巧
-- --算术函数----
整理了一些t-sql技巧

整理了一些t-sql技巧
/***三角函数***/
整理了一些t-sql技巧
SIN (float_expression)  -- 返回以弧度表示的角的正弦
整理了一些t-sql技巧
COS (float_expression)  -- 返回以弧度表示的角的余弦
整理了一些t-sql技巧
TAN (float_expression)  -- 返回以弧度表示的角的正切
整理了一些t-sql技巧
COT (float_expression)  -- 返回以弧度表示的角的余切
整理了一些t-sql技巧
/***反三角函数***/
整理了一些t-sql技巧
ASIN (float_expression)  -- 返回正弦是FLOAT 值的以弧度表示的角
整理了一些t-sql技巧
ACOS (float_expression)  -- 返回余弦是FLOAT 值的以弧度表示的角
整理了一些t-sql技巧
ATAN (float_expression)  -- 返回正切是FLOAT 值的以弧度表示的角
整理了一些t-sql技巧
ATAN2(float_expression1,float_expression2) 
整理了一些t-sql技巧        
-- 返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
整理了一些t-sql技巧
DEGREES (numeric_expression)
整理了一些t-sql技巧                       
-- 把弧度转换为角度返回与表达式相同的数据类型可为
整理了一些t-sql技巧
         -- INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
RADIANS (numeric_expression)  -- 把角度转换为弧度返回与表达式相同的数据类型可为
整理了一些t-sql技巧
         -- INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
EXP (float_expression)   -- 返回表达式的指数值
整理了一些t-sql技巧
LOG (float_expression)   -- 返回表达式的自然对数值
整理了一些t-sql技巧
LOG10 (float_expression) -- 返回表达式的以10 为底的对数值
整理了一些t-sql技巧
SQRT (float_expression)  -- 返回表达式的平方根
整理了一些t-sql技巧
/***取近似值函数***/
整理了一些t-sql技巧
CEILING (numeric_expression)   -- 返回>=表达式的最小整数返回的数据类型与表达式相同可为
整理了一些t-sql技巧
         -- INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
FLOOR (numeric_expression)     -- 返回<=表达式的最小整数返回的数据类型与表达式相同可为
整理了一些t-sql技巧
         -- INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
ROUND (numeric_expression)     -- 返回以integer_expression 为精度的四舍五入值返回的数据
整理了一些t-sql技巧
         -- 类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
ABS (numeric_expression)       -- 返回表达式的绝对值返回的数据类型与表达式相同可为
整理了一些t-sql技巧
         -- INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
SIGN (numeric_expression)      -- 测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
整理了一些t-sql技巧
         -- 与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
整理了一些t-sql技巧
PI ()        -- 返回值为π 即3.1415926535897936
整理了一些t-sql技巧
RAND ( [ integer_expression ] )    -- 用任选的[integer_expression]做种子值得出0-1 间的随机浮点数
整理了一些t-sql技巧

整理了一些t-sql技巧
整理了一些t-sql技巧
-- --字符串函数----
整理了一些t-sql技巧
ASCII ()          -- 函数返回字符表达式最左端字符的ASCII 码值
整理了一些t-sql技巧
CHAR ()    -- 函数用于将ASCII 码转换为字符
整理了一些t-sql技巧
     -- 如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
整理了一些t-sql技巧
LOWER ()    -- 函数把字符串全部转换为小写
整理了一些t-sql技巧
UPPER ()    -- 函数把字符串全部转换为大写
整理了一些t-sql技巧
STR ()    -- 函数把数值型数据转换为字符型数据
整理了一些t-sql技巧
LTRIM ()    -- 函数把字符串头部的空格去掉
整理了一些t-sql技巧
RTRIM ()    -- 函数把字符串尾部的空格去掉
整理了一些t-sql技巧
LEFT (), RIGHT (), SUBSTRING ()   -- 函数返回部分字符串
整理了一些t-sql技巧
CHARINDEX (), PATINDEX ()   -- 函数返回字符串中某个指定的子串出现的开始位置
整理了一些t-sql技巧
SOUNDEX ()   -- 函数返回一个四位字符码 
整理了一些t-sql技巧
     -- SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值     
整理了一些t-sql技巧
DIFFERENCE ()     -- 函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
整理了一些t-sql技巧
     -- 0 两个SOUNDEX 函数返回值的第一个字符不同
整理了一些t-sql技巧
     -- 1 两个SOUNDEX 函数返回值的第一个字符相同
整理了一些t-sql技巧
     -- 2 两个SOUNDEX 函数返回值的第一二个字符相同
整理了一些t-sql技巧
     -- 3 两个SOUNDEX 函数返回值的第一二三个字符相同
整理了一些t-sql技巧
     -- 4 两个SOUNDEX 函数返回值完全相同
整理了一些t-sql技巧
                                       
整理了一些t-sql技巧
整理了一些t-sql技巧
QUOTENAME ()   -- 函数返回被特定字符括起来的字符串
整理了一些t-sql技巧
/*select quotename('abc', '{') quotename('abc')
整理了一些t-sql技巧运行结果如下
整理了一些t-sql技巧----------------------------------{
整理了一些t-sql技巧{abc} [abc]
*/

整理了一些t-sql技巧
整理了一些t-sql技巧
REPLICATE ()      -- 函数返回一个重复character_expression 指定次数的字符串
整理了一些t-sql技巧
/*select replicate('abc', 3) replicate( 'abc', -2)
整理了一些t-sql技巧运行结果如下
整理了一些t-sql技巧----------- -----------
整理了一些t-sql技巧abcabcabc NULL
*/

整理了一些t-sql技巧
整理了一些t-sql技巧
REVERSE ()        -- 函数将指定的字符串的字符排列顺序颠倒
整理了一些t-sql技巧
REPLACE ()        -- 函数返回被替换了指定子串的字符串
整理了一些t-sql技巧
/*select replace('abc123g', '123', 'def')
整理了一些t-sql技巧运行结果如下
整理了一些t-sql技巧----------- -----------
整理了一些t-sql技巧abcdefg
*/

整理了一些t-sql技巧
整理了一些t-sql技巧
SPACE ()    -- 函数返回一个有指定长度的空白字符串
整理了一些t-sql技巧
STUFF ()    -- 函数用另一子串替换字符串指定位置长度的子串
整理了一些t-sql技巧

整理了一些t-sql技巧
整理了一些t-sql技巧
-- --数据类型转换函数----
整理了一些t-sql技巧
CAST () 函数语法如下
整理了一些t-sql技巧
CAST () ( < expression >   AS   < data_ type > [  length  ] )
整理了一些t-sql技巧
CONVERT () 函数语法如下
整理了一些t-sql技巧
CONVERT () ( < data_ type > [  length  ] < expression >   [ , style ] )
整理了一些t-sql技巧
整理了一些t-sql技巧
select   cast ( 100 + 99   as   char convert ( varchar ( 12 ),  getdate ())
整理了一些t-sql技巧运行结果如下
整理了一些t-sql技巧
-- ---------------------------- ------------
整理了一些t-sql技巧
199    Jan  15   2000
整理了一些t-sql技巧
整理了一些t-sql技巧
-- --日期函数----
整理了一些t-sql技巧
DAY ()    -- 函数返回date_expression 中的日期值
整理了一些t-sql技巧
MONTH ()    -- 函数返回date_expression 中的月份值
整理了一些t-sql技巧
YEAR ()    -- 函数返回date_expression 中的年份值
整理了一些t-sql技巧
DATEADD ( < datepart >  , < number >  , < date >
整理了一些t-sql技巧    
-- 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
整理了一些t-sql技巧
DATEDIFF ( < datepart >  , < number >  , < date > )
整理了一些t-sql技巧    
-- 函数返回两个指定日期在datepart 方面的不同之处
整理了一些t-sql技巧
DATENAME ( < datepart >  ,  < date > )   -- 函数以字符串的形式返回日期的指定部分
整理了一些t-sql技巧
DATEPART ( < datepart >  ,  < date > )   -- 函数以整数值的形式返回日期的指定部分
整理了一些t-sql技巧
GETDATE ()   -- 函数以DATETIME 的缺省格式返回系统当前的日期和时间
整理了一些t-sql技巧

整理了一些t-sql技巧
-- --系统函数----
整理了一些t-sql技巧
APP_NAME ()       -- 函数返回当前执行的应用程序的名称
整理了一些t-sql技巧
COALESCE ()   -- 函数返回众多表达式中第一个非NULL 表达式的值
整理了一些t-sql技巧
COL_LENGTH ( < ' table_name ' > < ' column_name ' > -- 函数返回表中指定字段的长度值
整理了一些t-sql技巧
COL_NAME ( < table_id > < column_id > )    -- 函数返回表中指定字段的名称即列名
整理了一些t-sql技巧
DATALENGTH ()  -- 函数返回数据表达式的数据的实际长度
整理了一些t-sql技巧
DB_ID ( [ 'database_name' ] -- 函数返回数据库的编号
整理了一些t-sql技巧
DB_NAME (database_id)   -- 函数返回数据库的名称
整理了一些t-sql技巧
HOST_ID ()      -- 函数返回服务器端计算机的名称
整理了一些t-sql技巧
HOST_NAME ()      -- 函数返回服务器端计算机的名称
整理了一些t-sql技巧
IDENTITY ( < data_type > [ , seed increment ] [ AS column_name ] )
整理了一些t-sql技巧 
-- IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
整理了一些t-sql技巧
/*select identity(int, 1, 1) as column_name
整理了一些t-sql技巧 into newtable
整理了一些t-sql技巧 from oldtable
*/

整理了一些t-sql技巧
ISDATE ()   -- 函数判断所给定的表达式是否为合理日期
整理了一些t-sql技巧
ISNULL ( < check_expression > < replacement_value > -- 函数将表达式中的NULL 值用指定值替换
整理了一些t-sql技巧
ISNUMERIC ()   -- 函数判断所给定的表达式是否为合理的数值
整理了一些t-sql技巧
NEWID ()    -- 函数返回一个UNIQUEIDENTIFIER 类型的数值
整理了一些t-sql技巧
NULLIF ( < expression1 > < expression2 > )
整理了一些t-sql技巧 
-- NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值

//-----------------------------------------------------------------总结------------------------------------------------------------------------

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

--语 句                                功 能
--数据操作
SELECT      --从数据库表中检索数据行和列
INSERT      --向数据库表添加新数据行
DELETE      --从数据库表中删除数据行
UPDATE      --更新数据库表中的数据
--数据定义
CREATE TABLE    --创建一个数据库表
DROP TABLE     --从数据库中删除表
ALTER TABLE     --修改数据库表结构
CREATE VIEW     --创建一个视图
DROP VIEW     --从数据库中删除视图
CREATE INDEX    --为数据库表创建一个索引
DROP INDEX     --从数据库中删除索引
CREATE PROCEDURE   --创建一个存储过程
DROP PROCEDURE    --从数据库中删除存储过程
CREATE TRIGGER    --创建一个触发器
DROP TRIGGER    --从数据库中删除触发器
CREATE SCHEMA    --向数据库添加一个新模式
DROP SCHEMA     --从数据库中删除一个模式
CREATE DOMAIN    --创建一个数据值域
ALTER DOMAIN    --改变域定义
DROP DOMAIN     --从数据库中删除一个域
--数据控制
GRANT      --授予用户访问权限
DENY      --拒绝用户访问
REVOKE      --解除用户访问权限
--事务控制
COMMIT      --结束当前事务
ROLLBACK     --中止当前事务
SET TRANSACTION    --定义当前事务数据访问特征
--程序化SQL
DECLARE      --为查询设定游标
EXPLAN      --为查询描述数据访问计划
OPEN      --检索查询结果打开一个游标
FETCH      --检索一行查询结果
CLOSE      --关闭游标
PREPARE      --为动态执行准备SQL 语句
EXECUTE      --动态地执行SQL 语句
DESCRIBE     --描述准备好的查询

---局部变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'

---全局变量
---必须以@@开头

--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
 print 'x > y' --打印字符串'x > y'
else if @y > @z
 print 'y > z'
else print 'z > y'

--CASE
use pangu
update employee
set e_wage =
 case
  when job_level = ’1’ then e_wage*1.08
  when job_level = ’2’ then e_wage*1.07
  when job_level = ’3’ then e_wage*1.06
  else e_wage*1.05
 end

--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
 begin
  print @x --打印变量x 的值
  while @y < 3
   begin
    select @c = 100*@x + @y
    print @c --打印变量c 的值
    select @y = @y + 1
   end
  select @x = @x + 1
  select @y = 1
 end

--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee

 

***SELECT***

   select *(列名) from table_name(表名) where column_name operator value
   ex:(宿主)
  select * from stock_information where stockid   = str(nid)
     stockname = 'str_name'
     stockname like '% find this %'
     stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
     stockname like '[^F-M]%'   --------- (^排除指定范围)
     --------- 只能在使用like关键字的where子句中使用通配符)
     or stockpath = 'stock_path'
     or stocknumber < 1000
     and stockindex = 24
     not stocksex = 'man'
     stocknumber between 20 and 100
     stocknumber in(10,20,30)
     order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
     order by 1,2 --------- by列号
     stockname = (select stockname from stock_information  where stockid  = 4)
     --------- 子查询
     --------- 除非能确保内层select只返回一个行的值,
     --------- 否则应在外层where子句中用一个in限定符
  select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
  select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
  select stockname , "stocknumber" = count(*) from table_name group by stockname
                                      --------- group by 将表按行分组,指定列中有相同的值
          having count(*) = 2  ---------  having选定指定的组
       
  select *
  from table1, table2                 
  where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
     table1.id =* table2.id -------- 右外部连接

  select stockname from table1
  union [all]  -----  union合并查询结果集,all-保留重复行
  select stockname from table2

***insert***

  insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
              value (select Stockname , Stocknumber from Stock_table2)---value为select语句

***update***

  update table_name set Stockname = "xxx" [where Stockid = 3]
         Stockname = default
         Stockname = null
         Stocknumber = Stockname + 4

***delete***

  delete from table_name where Stockid = 3
  truncate table_name ----------- 删除表中所有行,仍保持表的完整性
  drop table table_name --------------- 完全删除表

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

  alter table database.owner.table_name add column_name char(2) null .....
  sp_help table_name ---- 显示表已有特征
  create table table_name (name char(20), age smallint, lname varchar(30))
  insert into table_name select ......... ----- 实现删除列的方法(创建新表)
  alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束
   
***function(/*常用函数*/)***

----统计函数----
AVG    --求平均值
COUNT   --统计数目
MAX    --求最大值
MIN    --求最小值
SUM    --求和

--AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id

--MAX
--求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
 (select max(e_wage)
  from employee)

--STDEV()
--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()
--STDEVP()函数返回总体标准差

--VAR()
--VAR()函数返回表达式中所有值的统计变异数

--VARP()
--VARP()函数返回总体变异数

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

/***三角函数***/
SIN(float_expression) --返回以弧度表示的角的正弦
COS(float_expression) --返回以弧度表示的角的余弦
TAN(float_expression) --返回以弧度表示的角的正切
COT(float_expression) --返回以弧度表示的角的余切
/***反三角函数***/
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
        --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
                       --把弧度转换为角度返回与表达式相同的数据类型可为
        --INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为
        --INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression)  --返回表达式的指数值
LOG(float_expression)  --返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10 为底的对数值
SQRT(float_expression) --返回表达式的平方根
/***取近似值函数***/
CEILING(numeric_expression)  --返回>=表达式的最小整数返回的数据类型与表达式相同可为
        --INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression)    --返回<=表达式的最小整数返回的数据类型与表达式相同可为
        --INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression)    --返回以integer_expression 为精度的四舍五入值返回的数据
        --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression)      --返回表达式的绝对值返回的数据类型与表达式相同可为
        --INTEGER/MONEY/REAL/FLOAT 类型
SIGN(numeric_expression)     --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
        --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
PI()       --返回值为π 即3.1415926535897936
RAND([integer_expression])   --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数


----字符串函数----
ASCII()         --函数返回字符表达式最左端字符的ASCII 码值
CHAR()   --函数用于将ASCII 码转换为字符
    --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
LOWER()   --函数把字符串全部转换为小写
UPPER()   --函数把字符串全部转换为大写
STR()   --函数把数值型数据转换为字符型数据
LTRIM()   --函数把字符串头部的空格去掉
RTRIM()   --函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING()  --函数返回部分字符串
CHARINDEX(),PATINDEX()  --函数返回字符串中某个指定的子串出现的开始位置
SOUNDEX()  --函数返回一个四位字符码
    --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值    
DIFFERENCE()    --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
    --0 两个SOUNDEX 函数返回值的第一个字符不同
    --1 两个SOUNDEX 函数返回值的第一个字符相同
    --2 两个SOUNDEX 函数返回值的第一二个字符相同
    --3 两个SOUNDEX 函数返回值的第一二三个字符相同
    --4 两个SOUNDEX 函数返回值完全相同
                                      

QUOTENAME()  --函数返回被特定字符括起来的字符串
/*select quotename('abc', '{') quotename('abc')
运行结果如下
----------------------------------{
{abc} [abc]*/

REPLICATE()     --函数返回一个重复character_expression 指定次数的字符串
/*select replicate('abc', 3) replicate( 'abc', -2)
运行结果如下
----------- -----------
abcabcabc NULL*/

REVERSE()       --函数将指定的字符串的字符排列顺序颠倒
REPLACE()       --函数返回被替换了指定子串的字符串
/*select replace('abc123g', '123', 'def')
运行结果如下
----------- -----------
abcdefg*/

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


----数据类型转换函数----
CAST() 函数语法如下
CAST() (<expression> AS <data_ type>[ length ])
CONVERT() 函数语法如下
CONVERT() (<data_ type>[ length ], <expression> [, style])

select cast(100+99 as char) convert(varchar(12), getdate())
运行结果如下
------------------------------ ------------
199   Jan 15 2000

----日期函数----
DAY()   --函数返回date_expression 中的日期值
MONTH()   --函数返回date_expression 中的月份值
YEAR()   --函数返回date_expression 中的年份值
DATEADD(<datepart> ,<number> ,<date>)
    --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
DATEDIFF(<datepart> ,<number> ,<date>)
    --函数返回两个指定日期在datepart 方面的不同之处
DATENAME(<datepart> , <date>)  --函数以字符串的形式返回日期的指定部分
DATEPART(<datepart> , <date>)  --函数以整数值的形式返回日期的指定部分
GETDATE()  --函数以DATETIME 的缺省格式返回系统当前的日期和时间

----系统函数----
APP_NAME()      --函数返回当前执行的应用程序的名称
COALESCE()  --函数返回众多表达式中第一个非NULL 表达式的值
COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值
COL_NAME(<table_id>, <column_id>)   --函数返回表中指定字段的名称即列名
DATALENGTH() --函数返回数据表达式的数据的实际长度
DB_ID(['database_name']) --函数返回数据库的编号
DB_NAME(database_id)  --函数返回数据库的名称
HOST_ID()     --函数返回服务器端计算机的名称
HOST_NAME()     --函数返回服务器端计算机的名称
IDENTITY(<data_type>[, seed increment]) [AS column_name])
 --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
/*select identity(int, 1, 1) as column_name
 into newtable
 from oldtable*/
ISDATE()  --函数判断所给定的表达式是否为合理日期
ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换
ISNUMERIC()  --函数判断所给定的表达式是否为合理的数值
NEWID()   --函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(<expression1>, <expression2>)
 --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值

你可能感兴趣的:(t-sql)