sql一些常用的方法

阅读更多

 

1 :执行另一服务器上的存储过程

exec   OPENDATASOURCE (
         
' SQLOLEDB ' ,
         
' Data Source=远程ip;User ID=sa;Password=密码 '
         ).库名.dbo.存储过程名

2 :将资料插入另一服务器上的表中

select   *   into  本地库名..表名  from   OPENDATASOURCE (
         
' SQLOLEDB ' ,
         
' Data Source=远程ip;User ID=sa;Password=密码 '
         ).库名.dbo.表名

insert  本地库名..表名  select   *   from   OPENDATASOURCE (
         
' SQLOLEDB ' ,
         
' Data Source=远程ip;User ID=sa;Password=密码 '
         ).库名.dbo.表名

或使用联结服务器:
EXEC  sp_addlinkedserver  ' 别名 ' , '' , ' MSDASQL ' , NULL , NULL , ' DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码; '


exec  sp_addlinkedsrvlogin   @rmtsrvname = ' 别名 ' , @useself = ' false ' , @locallogin = ' sa ' , @rmtuser = ' sa ' , @rmtpassword = ' 密码 '
GO

(请注意上面的两步要同时运行)


然后你就可以如下:
select   *   from  别名.库名.dbo.表名
insert  库名.dbo.表名  select   *   from  别名.库名.dbo.表名
select   *   into  库名.dbo.新表名  from  别名.库名.dbo.表名
go


 

3 :

如果在事务里使用连接服务器要加上

分布式事务:
两边启动dtc

set   XACT_ABORT  on
set  ANSI_NULL_DFLT_ON  on
set  ANSI_WARNINGS  on  

BEGIN   DISTRIBUTED   TRANSACTION
select   *    from   OPENDATASOURCE ( ' MSDASQL ' , ' DRIVER={SQL Server};SERVER=ip;UID=sa;PWD=密码; ' ).pubs.dbo.jobs
commit   tran
 

select  stockinid,stockindt  from  stockin  as  a  where  a.stockinid  in  ( select  b.stockinid  from  stockindta  as  b)
CONVERT ( varchar ,p.end_date, 121 )
  函数 
CONVERT ( ) 带有两个变量。第一个变量指定了数据类型和长度。第二个变量指定了要进行转换的字段。
  
SELECT   CONVERT ( varchar ( 30 ), getdate (), 101 ) now

  
< ! -- StartFragment-->CONVERT的使用方法:

////////////////////////////////////////////////////////////////////////////////////////

格式:
CONVERT (data_type,expression [ ,style ] )

说明:
此样式一般在时间类型(
datetime , smalldatetime )与字符串类型( nchar , nvarchar , char , varchar )
相互转换的时候才用到.

例子:
SELECT   CONVERT ( varchar ( 30 ), getdate (), 101 ) now
结果为
now
-- -------------------------------------
09 / 15 / 2001

/////////////////////////////////////////////////////////////////////////////////////

style数字在转换时间时的含义如下

-- -----------------------------------------------------------------------------------------------
Style(2位表示年份)    |   Style(4位表示年份)     |    输入输出格式                                    
-- -----------------------------------------------------------------------------------------------
-                      |    0   or   100                |    mon dd yyyy hh:miAM(或PM)              
-- -----------------------------------------------------------------------------------------------
1                      |    101                     |    mm / dd / yy                                       
-- -----------------------------------------------------------------------------------------------
2                      |    102                     |    yy - mm - dd                                        
-- -----------------------------------------------------------------------------------------------
3                      |    103                     |    dd / mm / yy                                       
-- -----------------------------------------------------------------------------------------------
4                      |    104                     |    dd - mm - yy                                        
-- -----------------------------------------------------------------------------------------------
5                      |    105                     |    dd - mm - yy                                        
-- -----------------------------------------------------------------------------------------------
6                      |    106                     |    dd mon yy                                        
-- -----------------------------------------------------------------------------------------------
7                      |    107                     |    mon dd,yy                                        
-- -----------------------------------------------------------------------------------------------
8                      |    108                     |    hh:mm:ss                                         
-- -----------------------------------------------------------------------------------------------
-                      |    9   or   109                |    mon dd yyyy hh:mi:ss:mmmmAM(或PM)
-- -----------------------------------------------------------------------------------------------
10                     |    110                     |    mm - dd - yy                                         
-- -----------------------------------------------------------------------------------------------
11                     |    111                     |    yy / mm / dd                                        
-- -----------------------------------------------------------------------------------------------
12                     |    112                     |    yymmdd                                           
-- -----------------------------------------------------------------------------------------------
-                      |    13   or   113               |    dd mon yyyy hh:mi:ss:mmm(24小时制)  
-- -----------------------------------------------------------------------------------------------
14                     |    114                     |    hh:mi:ss:mmm(24小时制)                    
-- -----------------------------------------------------------------------------------------------
-                      |    20   or   120               |       yyyy - mm - dd hh:mi:ss(24小时制)         
-- -----------------------------------------------------------------------------------------------
-                      |    21   or   121               |       yyyy - mm - dd hh:mi:ss:mmm(24小时制) 
-- -----------------------------------------------------------------------------------------------

-- ------数学函数 
   1 .绝对值 
  S:
select   abs ( - 1 ) value
  O:
select   abs ( - 1 ) value  from  dual

  
2 .取整(大) 
  S:
select   ceiling ( - 1.001 ) value 
  O:
select  ceil( - 1.001 ) value  from  dual

  
3 .取整(小) 
  S:
select   floor ( - 1.001 ) value 
  O:
select   floor ( - 1.001 ) value  from  dual

  
4 .取整(截取)
  S:
select   cast ( - 1.002   as   int ) value 
  O:
select  trunc( - 1.002 ) value  from  dual 

  
5 .四舍五入
  S:
select   round ( 1.23456 , 4 ) value  1.23460
  O:
select   round ( 1.23456 , 4 ) value  from  dual  1.2346

  
6 .e为底的幂 
  S:
select   Exp ( 1 ) value  2.7182818284590451  
  O:
select   Exp ( 1 ) value  from  dual  2.71828182

  
7 .取e为底的对数
  S:
select   log ( 2.7182818284590451 ) value  1
  O:
select  ln( 2.7182818284590451 ) value  from  dual;  1

  
8 .取10为底对数
  S:
select   log10 ( 10 ) value  1
  O:
select   log ( 10 , 10 ) value  from  dual;  1

  
9 .取平方
  S:
select   SQUARE ( 4 ) value  16
  O:
select   power ( 4 , 2 ) value  from  dual  16

  
10 .取平方根
  S:
select   SQRT ( 4 ) value  2
  O:
select   SQRT ( 4 ) value  from  dual  2

  
11 .求任意数为底的幂
  S:
select   power ( 3 , 4 ) value  81
  O:
select   power ( 3 , 4 ) value  from  dual  81

  
12 .取随机数
  S:
select   rand () value 
  O:
select  sys.dbms_random.value( 0 , 1 ) value  from  dual;

  
13 .取符号
  S:
select   sign ( - 8 ) value  - 1
  O:
select   sign ( - 8 ) value  from  dual  - 1
  
-- --------数学函数

  
14 .圆周率
  S:
SELECT   PI () value  3.1415926535897931
  O:不知道

  
15 . sin , cos , tan  参数都以弧度为单位
  例如:
select   sin ( PI () / 2 ) value 得到1(SQLServer)

  
16 . Asin , Acos , Atan ,Atan2 返回弧度

  
17 .弧度角度互换(SQLServer,Oracle不知道)
  
DEGREES :弧度 - 〉角度
  
RADIANS :角度 - 〉弧度

  
-- -------数值间比较

  
18 . 求集合最大值
  S:
select   max (value) value  from  
  (
select   1  value
  
union
  
select   - 2  value
  
union
  
select   4  value
  
union
  
select   3  value)a

  O:
select  greatest( 1 , - 2 , 4 , 3 ) value  from  dual

  
19 . 求集合最小值
  S:
select   min (value) value  from  
  (
select   1  value
  
union
  
select   - 2  value
  
union
  
select   4  value
  
union
  
select   3  value)a

  O:
select  least( 1 , - 2 , 4 , 3 ) value  from  dual

  
20 .如何处理null值(F2中的null以10代替)
  S:
select  F1, IsNull (F2, 10

你可能感兴趣的:(SQL,SQL,Server,Oracle,Go)