小巧的SQL和SQL SERVER 与ACCESS、EXCEL的数量导入导出转换

今举办只班转换 找到的好语句子  解决了自己之题目

图片 1    * 表达:复制表(只复制结构,源表名:a 新表名:b)
图片 2      select * into b from a where 1<>1
图片 3
图片 4    * 表达:拷贝表(拷贝数据,源表名:a 目的表名:b)
图片 5      insert into b(a, b, c) select d,e,f from b;
图片 6
图片 7    * 表明:显示作品、提交人与最后回复时间
图片 8      select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
图片 9
图片 10    * 表明:外接连查询(表名1:a 表名2:b)
图片 11      select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
图片 12
图片 13    * 表明:日程安排提前五分钟指示
图片 14      select * from 日程安排 where datediff(‘minute’,f起始日,getdate())>5
图片 15
图片 16    * 表明:两摆设关联表,删除主表中皆以副表中无的信息
图片 17      delete from info where not exists ( select * from infobz where info.infid=infobz.infid )
图片 18
图片 19    * 说明:–
图片 20
图片 21      SQL:
图片 22
图片 23      SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
图片 24
图片 25      FROM TABLE1,
图片 26
图片 27      (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
图片 28
图片 29      FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
图片 30
图片 31      FROM TABLE2
图片 32
图片 33      WHERE TO_CHAR(UPD_DATE,’YYYY/MM’) = TO_CHAR(SYSDATE, ‘YYYY/MM’)) X,
图片 34
图片 35      (SELECT NUM, UPD_DATE, STOCK_ONHAND
图片 36
图片 37      FROM TABLE2
图片 38
图片 39      WHERE TO_CHAR(UPD_DATE,’YYYY/MM’) =
图片 40
图片 41      TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, ‘YYYY/MM’) || ‘/01′,’YYYY/MM/DD’) – 1, ‘YYYY/MM’) ) Y,
图片 42
图片 43      WHERE X.NUM = Y.NUM (+)
图片 44
图片 45      AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B
图片 46
图片 47      WHERE A.NUM = B.NUM
图片 48
图片 49    * 说明:–
图片 50      select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='”&strdepartmentname&”‘ and 专业号='”&strprofessionname&”‘ order by 性别,生源地,高考总成绩
图片 51
图片 52    * 从数据库被去同年之每单位电话费总结(电话费定额贺电化肥清单两单表明来)
图片 53
图片 54      SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, ‘yyyy’) AS telyear,
图片 55
图片 56      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’01’, a.factration)) AS JAN,
图片 57
图片 58      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’02’, a.factration)) AS FRI,
图片 59
图片 60      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’03’, a.factration)) AS MAR,
图片 61
图片 62      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’04’, a.factration)) AS APR,
图片 63
图片 64      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’05’, a.factration)) AS MAY,
图片 65
图片 66      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’06’, a.factration)) AS JUE,
图片 67
图片 68      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’07’, a.factration)) AS JUL,
图片 69
图片 70      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’08’, a.factration)) AS AGU,
图片 71
图片 72      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’09’, a.factration)) AS SEP,
图片 73
图片 74      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’10’, a.factration)) AS OCT,
图片 75
图片 76      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’11’, a.factration)) AS NOV,
图片 77
图片 78      SUM(decode(TO_CHAR(a.telfeedate, ‘mm’), ’12’, a.factration)) AS DEC
图片 79
图片 80      FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration
图片 81
图片 82      FROM TELFEESTAND a, TELFEE b
图片 83
图片 84      WHERE a.tel = b.telfax) a
图片 85
图片 86      GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, ‘yyyy’)
图片 87
图片 88    * 表明:四表联查问题
图片 89      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 图片 90..
图片 91
图片 92    * 表达:得到表中异常小的无用的ID号
图片 93
图片 94    * SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID  FROM Handle WHERE NOT HandleID IN (SELECT a.HandleID – 1 FROM Handle a)
图片 95
图片 96    * 一个SQL语句的题目:行列转换
图片 97      select * from v_temp
图片 98      下边的视图结果如下:
图片 99      user_name role_name
图片 100      ————————-
图片 101      系统管理员 管理员
图片 102      feng 管理员
图片 103      feng 一般用户
图片 104      test 一般用户
图片 105      想管结果变成这样:
图片 106      user_name role_name
图片 107      —————————
图片 108      系统管理员 管理员
图片 109      feng 管理员,一般用户
图片 110      test 一般用户
图片 111      ===================
图片 112      create table a_test(name varchar(20),role2 varchar(20))
图片 113      insert into a_test values(‘李’,’管理员’)
图片 114      insert into a_test values(‘张’,’管理员’)
图片 115      insert into a_test values(‘张’,’一般用户’)
图片 116      insert into a_test values(‘常’,’一般用户’)
图片 117
图片 118      create function join_str(@content varchar(100))
图片 119      returns varchar(2000)
图片 120      as
图片 121      begin
图片 122      declare @str varchar(2000)
图片 123      set @str=”
图片 124      select @str=@str+’,’+rtrim(role2) from a_test where [name]=@content
图片 125      select @str=right(@str,len(@str)-1)
图片 126      return @str
图片 127      end
图片 128      go
图片 129
图片 130      –调用:
图片 131      select [name],dbo.join_str([name]) role2 from a_test group by [name]
图片 132
图片 133      –select distinct name,dbo.uf_test(name) from a_test
图片 134
图片 135    * 疾速相比结构同样的少数注脚
图片 136      结构同样之鲜发明,一表明出记录3万长条左右,一讲明有记录2万长左右,我怎么神速搜索两表底不比记录?
图片 137      ============================
图片 138      给您一个测试方法,从northwind中的orders表取数据。
图片 139      select * into n1 from orders
图片 140      select * into n2 from orders
图片 141
图片 142      select * from n1
图片 143      select * from n2
图片 144
图片 145      –添加主键,然后修改n1中多少字段的多少长度
图片 146      alter table n1 add constraint pk_n1_id primary key (OrderID)
图片 147      alter table n2 add constraint pk_n2_id primary key (OrderID)
图片 148
图片 149      select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) > 1
图片 150
图片 151      应该可以,而且将不同的笔录之ID显示出来。
图片 152      上面的适用于双方记录同一的事态,
图片 153
图片 154      select * from n1 where orderid in (select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) > 1)
图片 155      至于双方互不存在的笔录是比好处理的
图片 156      –删除n1,n2中多条记下
图片 157      delete from n1 where orderID in (‘10728′,’10730’)
图片 158      delete from n2 where orderID in (‘11000′,’11001’)
图片 159
图片 160      –*************************************************************
图片 161      — 双方都来该记录也休完全相同
图片 162      select * from n1 where orderid in(select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) > 1)
图片 163      union
图片 164      –n2备受存在不过于n1中无存的于10728,10730
图片 165      select * from n1 where OrderID not in (select OrderID from n2)
图片 166      union
图片 167      –n1遭到是而在n2中不存的于11000,11001
图片 168      select * from n2 where OrderID not in (select OrderID from n1)
图片 169
图片 170    * 四种情势取表里n到m条纪录:
图片 171
图片 172      1.
图片 173      select top m * into 临时表(或表变量) from tablename order by columnname — 将top m笔插入
图片 174      set rowcount n
图片 175      select * from 表变量 order by columnname desc
图片 176
图片 177
图片 178      2.
图片 179      select top n * from (select top m * from tablename order by columnname) a order by columnname desc
图片 180
图片 181
图片 182      3.如若tablename里不曾其他identity列,那么:
图片 183      select identity(int) id0,* into #temp from tablename
图片 184
图片 185      取n到m条的口舌为:
图片 186      select * from #temp where id0 >=n and id0 <= m
图片 187
图片 188      假若您于推行select identity(int) id0,* into #temp from tablename这漫漫告句的时报错,这是以你的DB中间的select into/bulkcopy属性没有打开要事先举行:
图片 189      exec sp_dboption 你的DB名字,’select into/bulkcopy’,true
图片 190
图片 191
图片 192      4.假若表里有identity属性,那么粗略:
图片 193      select * from tablename where identitycol between n and m
图片 194
图片 195    * 如何去一个表中重复的笔录?
图片 196      create table a_dist(id int,name varchar(20))
图片 197
图片 198      insert into a_dist values(1,’abc’)
图片 199      insert into a_dist values(1,’abc’)
图片 200      insert into a_dist values(1,’abc’)
图片 201      insert into a_dist values(1,’abc’)
图片 202
图片 203      exec up_distinct ‘a_dist’,’id’
图片 204
图片 205      select * from a_dist
图片 206
图片 207      create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))
图片 208      –f_key表示是劈组字段﹐就主键字段
图片 209      as
图片 210      begin
图片 211      declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer
图片 212      select @sql = ‘declare cur_rows cursor for select ‘+@f_key+’ ,count(*) from ‘ +@t_name +’ group by ‘ +@f_key +’ having count(*) > 1′
图片 213      exec(@sql)
图片 214      open cur_rows
图片 215      fetch cur_rows into @id,@max
图片 216      while @@fetch_status=0
图片 217      begin
图片 218      select @max = @max -1
图片 219      set rowcount @max
图片 220      select @type = xtype from syscolumns where id=object_id(@t_name) and name=@f_key
图片 221      if @type=56
图片 222      select @sql = ‘delete from ‘+@t_name+’ where ‘ + @f_key+’ = ‘+ @id
图片 223      if @type=167
图片 224      select @sql = ‘delete from ‘+@t_name+’ where ‘ + @f_key+’ = ‘+””+ @id +””
图片 225      exec(@sql)
图片 226      fetch cur_rows into @id,@max
图片 227      end
图片 228      close cur_rows
图片 229      deallocate cur_rows
图片 230      set rowcount 0
图片 231      end
图片 232
图片 233      select * from systypes
图片 234      select * from syscolumns where id = object_id(‘a_dist’)
图片 235
图片 236    * 查询数据的极致要命排序问题(只能用同一久告句子写)
图片 237      CREATE TABLE hard (qu char (11) ,co char (11) ,je numeric(3, 0))
图片 238
图片 239      insert into hard values (‘A’,’1′,3)
图片 240      insert into hard values (‘A’,’2′,4)
图片 241      insert into hard values (‘A’,’4′,2)
图片 242      insert into hard values (‘A’,’6′,9)
图片 243      insert into hard values (‘B’,’1′,4)
图片 244      insert into hard values (‘B’,’2′,5)
图片 245      insert into hard values (‘B’,’3′,6)
图片 246      insert into hard values (‘C’,’3′,4)
图片 247      insert into hard values (‘C’,’6′,7)
图片 248      insert into hard values (‘C’,’2′,3)
图片 249
图片 250
图片 251      要求查询出来的结果如下:
图片 252
图片 253      qu co je
图片 254      ———– ———– —–
图片 255      A 6 9
图片 256      A 2 4
图片 257      B 3 6
图片 258      B 2 5
图片 259      C 6 7
图片 260      C 3 4
图片 261
图片 262
图片 263      就是即便听从qu分组,每组中取je最要命的前2位!!
图片 264      而且只可以用同样句子sql语句!!!
图片 265      select * from hard a where je in (select top 2 je from hard b where a.qu=b.qu order by je)
图片 266
图片 267    * 求删除重复记录的sql语句?
图片 268      如何将具备相同字段的纪录删除,只留一条。
图片 269      例如,表test里有id,name字段
图片 270      假诺发生name相同的记录 只留下一条,其余的去除。
图片 271      name的始末无自然,相同的记录数不肯定。
图片 272      有没出这么的sql语句?
图片 273      ==============================
图片 274      A:一个一体化的解决方案:
图片 275
图片 276      将再次的笔录记入temp1表:
图片 277      select [标明字段id],count(*) into temp1 from [表名]
图片 278      group by [声明字段id]
图片 279      having count(*)>1
图片 280
图片 281      2、将不重复的笔录记入temp1表:
图片 282      insert temp1 select [标志字段id],count(*) from [表名] group by [标明字段id] having count(*)=1
图片 283
图片 284      3、作一个饱含有不还记录的表:
图片 285      select * into temp2 from [表名] where 标志字段id in(select 标志字段id from temp1)
图片 286
图片 287      4、删除重复表:
图片 288      delete [表名]
图片 289
图片 290      5、恢复表:
图片 291      insert [表名] select * from temp2
图片 292
图片 293      6、删除临时表:
图片 294      drop table temp1
图片 295      drop table temp2
图片 296      ================================
图片 297      B:
图片 298      create table a_dist(id int,name varchar(20))
图片 299
图片 300      insert into a_dist values(1,’abc’)
图片 301      insert into a_dist values(1,’abc’)
图片 302      insert into a_dist values(1,’abc’)
图片 303      insert into a_dist values(1,’abc’)
图片 304
图片 305      exec up_distinct ‘a_dist’,’id’
图片 306
图片 307      select * from a_dist
图片 308
图片 309      create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))
图片 310      –f_key表示是劈组字段﹐就主键字段
图片 311      as
图片 312      begin
图片 313      declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer
图片 314      select @sql = ‘declare cur_rows cursor for select ‘+@f_key+’ ,count(*) from ‘ +@t_name +’ group by ‘ +@f_key +’ having count(*) > 1′
图片 315      exec(@sql)
图片 316      open cur_rows
图片 317      fetch cur_rows into @id,@max
图片 318      while @@fetch_status=0
图片 319      begin
图片 320      select @max = @max -1
图片 321      set rowcount @max
图片 322      select @type = xtype from syscolumns where id=object_id(@t_name) and name=@f_key
图片 323      if @type=56
图片 324      select @sql = ‘delete from ‘+@t_name+’ where ‘ + @f_key+’ = ‘+ @id
图片 325      if @type=167
图片 326      select @sql = ‘delete from ‘+@t_name+’ where ‘ + @f_key+’ = ‘+””+ @id +””
图片 327      exec(@sql)
图片 328      fetch cur_rows into @id,@max
图片 329      end
图片 330      close cur_rows
图片 331      deallocate cur_rows
图片 332      set rowcount 0
图片 333      end
图片 334
图片 335      select * from systypes
图片 336      select * from syscolumns where id = object_id(‘a_dist’)
图片 337
图片 338    * 行列转换–普通
图片 339
图片 340      如若有张学生战绩表(CJ)如下
图片 341      Name Subject Result
图片 342      张三 语文 80
图片 343      张三 数学 90
图片 344      张三 物理 85
图片 345      李四 语文 85
图片 346      李四 数学 92
图片 347      李四 物理 82
图片 348
图片 349      想变成
图片 350      姓名 语文 数学 物理
图片 351      张三 80 90 85
图片 352      李四 85 92 82
图片 353
图片 354      declare @sql varchar(4000)
图片 355      set @sql = ‘select Name’
图片 356      select @sql = @sql + ‘,sum(case Subject when ”’+Subject+”’ then Result end) [‘+Subject+’]’
图片 357      from (select distinct Subject from CJ) as a
图片 358      select @sql = @sql+’ from test group by name’
图片 359      exec(@sql)
图片 360
图片 361      行列转换–合并
图片 362
图片 363      有表A,
图片 364      id pid
图片 365      1 1
图片 366      1 2
图片 367      1 3
图片 368      2 1
图片 369      2 2
图片 370      3 1
图片 371      咋样化成表B:
图片 372      id pid
图片 373      1 1,2,3
图片 374      2 1,2
图片 375      3 1
图片 376
图片 377      成立一个合并之函数
图片 378      create function fmerg(@id int)
图片 379      returns varchar(8000)
图片 380      as
图片 381      begin
图片 382      declare @str varchar(8000)
图片 383      set @str=”
图片 384      select @str=@str+’,’+cast(pid as varchar) from 表A where id=@id
图片 385      set @str=right(@str,len(@str)-1)
图片 386      return(@str)
图片 387      End
图片 388      go
图片 389
图片 390      –调用起定义函数获得结果
图片 391      select distinct id,dbo.fmerg(id) from 表A
图片 392
图片 393    * 怎么样获取一个数据表的有着列名
图片 394
图片 395      方法如下:先由SYSTEMOBJECT系统表明中拿走数据表的SYSTEMID,然后还SYSCOLUMN表中取得该数据表的拥有列名。
图片 396      SQL语句如下:
图片 397      declare @objid int,@objname char(40)
图片 398      set @objname = ‘tablename’
图片 399      select @objid = id from sysobjects where id = object_id(@objname)
图片 400      select ‘Column_name’ = name from syscolumns where id = @objid order by colid
图片 401
图片 402      或
图片 403
图片 404      SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =’users’
图片 405
图片 406    * 通过SQL语句来改用户之密码
图片 407
图片 408      修改别人的,需要sysadmin role
图片 409      EXEC sp_password NULL, ‘newpassword’, ‘User’
图片 410
图片 411      即便帐号为SA执行EXEC sp_password NULL, ‘newpassword’, sa
图片 412
图片 413    * 怎么判断暴发一个发明底哪字段不允为空?
图片 414
图片 415      select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE=’NO’ and TABLE_NAME=tablename
图片 416
图片 417    * 如何在数据库里找到含有相同字段的讲明?
图片 418      a. 查已知道列名的情形
图片 419      SELECT b.name as TableName,a.name as columnname
图片 420      From syscolumns a INNER JOIN sysobjects b
图片 421      ON a.id=b.id
图片 422      AND b.type=’U’
图片 423      AND a.name=’你的字段名字’
图片 424
图片 425    * 未明列名查所有在不同表出现过之列名
图片 426      Select o.name As tablename,s1.name As columnname
图片 427      From syscolumns s1, sysobjects o
图片 428      Where s1.id = o.id
图片 429      And o.type = ‘U’
图片 430      And Exists (
图片 431      Select 1 From syscolumns s2
图片 432      Where s1.name = s2.name
图片 433      And s1.id <> s2.id
图片 434      )
图片 435
图片 436    * 查询第xxx行数据
图片 437
图片 438      假设id是主键:
图片 439      select * from (select top xxx * from yourtable) aa where not exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.id=bb.id)
图片 440
图片 441      假诺以游标也是足以的
图片 442      fetch absolute [number] from [cursor_name]
图片 443      行数为相对行数
图片 444
图片 445    * SQL Server日期总括
图片 446      a. 一个月份之首先上
图片 447      SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
图片 448      b. 本周之周一
图片 449      SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
图片 450      c. 一年之首先上
图片 451      SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
图片 452      d. 季度的首先上
图片 453      SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
图片 454      e. 上个月之末尾一天
图片 455      SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
图片 456      f. 2018年的结尾一龙
图片 457      SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
图片 458      g. 本月首尾声一上
图片 459      SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
图片 460      h. 本月之率先只星期天
图片 461      select DATEADD(wk, DATEDIFF(wk,0,
图片 462      dateadd(dd,6-datepart(day,getdate()),getdate())
图片 463      ), 0)
图片 464      i. 本年的末段一上
图片 465      SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
图片 466
图片 467    * 获取表结构[把 ‘sysobjects’ 替换 成 ‘tablename’ 即可]
图片 468
图片 469      SELECT CASE IsNull(I.name, ”)
图片 470      When ” Then ”
图片 471      Else ‘*’
图片 472      End as IsPK,
图片 473      Object_Name(A.id) as t_name,
图片 474      A.name as c_name,
图片 475      IsNull(SubString(M.text, 1, 254), ”) as pbc_init,
图片 476      T.name as F_DataType,
图片 477      CASE IsNull(TYPEPROPERTY(T.name, ‘Scale’), ”)
图片 478      WHEN ” Then Cast(A.prec as varchar)
图片 479      ELSE Cast(A.prec as varchar) + ‘,’ + Cast(A.scale as varchar)
图片 480      END as F_Scale,
图片 481      A.isnullable as F_isNullAble
图片 482      FROM Syscolumns as A
图片 483      JOIN Systypes as T
图片 484      ON (A.xType = T.xUserType AND A.Id = Object_id(‘sysobjects’) )
图片 485      LEFT JOIN ( SysIndexes as I
图片 486      JOIN Syscolumns as A1
图片 487      ON ( I.id = A1.id and A1.id = object_id(‘sysobjects’) and (I.status & 0x800) = 0x800 AND A1.colid <= I.keycnt) )
图片 488      ON ( A.id = I.id AND A.name = index_col(‘sysobjects’, I.indid, A1.colid) )
图片 489      LEFT JOIN SysComments as M
图片 490      ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, ‘IsConstraint’) = 1 )
图片 491      ORDER BY A.Colid ASC
图片 492
图片 493    * 提取数据库内所有表的字段详细表明的SQL语句
图片 494
图片 495      SELECT
图片 496      (case when a.colorder=1 then d.name else ” end) N’表名’,
图片 497      a.colorder N’字段序号’,
图片 498      a.name N’字段名’,
图片 499      (case when COLUMNPROPERTY( a.id,a.name,’IsIdentity’)=1 then ‘√’else ”
图片 500      end) N’标识’,
图片 501      (case when (SELECT count(*)
图片 502      FROM sysobjects
图片 503      WHERE (name in
图片 504      (SELECT name
图片 505      FROM sysindexes
图片 506      WHERE (id = a.id) AND (indid in
图片 507      (SELECT indid
图片 508      FROM sysindexkeys
图片 509      WHERE (id = a.id) AND (colid in
图片 510      (SELECT colid
图片 511      FROM syscolumns
图片 512      WHERE (id = a.id) AND (name = a.name))))))) AND
图片 513      (xtype = ‘PK’))>0 then ‘√’ else ” end) N’主键’,
图片 514      b.name N’类型’,
图片 515      a.length N’占用字节数’,
图片 516      COLUMNPROPERTY(a.id,a.name,’PRECISION’) as N’长度’,
图片 517      isnull(COLUMNPROPERTY(a.id,a.name,’Scale’),0) as N’小数号数’,
图片 518      (case when a.isnullable=1 then ‘√’else ” end) N’允许空’,
图片 519      isnull(e.text,”) N’默认值’,
图片 520      isnull(g.[value],”) AS N’字段表明’
图片 521      FROM syscolumns a
图片 522      left join systypes b
图片 523      on a.xtype=b.xusertype
图片 524      inner join sysobjects d
图片 525      on a.id=d.id and d.xtype=’U’ and d.name<>’dtproperties’
图片 526      left join syscomments e
图片 527      on a.cdefault=e.id
图片 528      left join sysproperties g
图片 529      on a.id=g.id AND a.colid = g.smallid
图片 530      order by object_name(a.id),a.colorder
图片 531
图片 532    * 疾速得到表test的记录总数[本着老容量表至极实惠]
图片 533
图片 534      连忙得到表test的笔录总数:
图片 535      select rows from sysindexes where id = object_id(‘test’) and indid in (0,1)
图片 536
图片 537      update 2 set KHXH=(ID+1)\2 2行递增编号
图片 538      update [23] set id1 = ‘No.’+right(‘00000000’+id,6) where id not like ‘No%’ //递增
图片 539      update [23] set id1= ‘No.’+right(‘00000000’+replace(id1,’No.’,”),6) //补位递增
图片 540      delete from [1] where (id%2)=1
图片 541      奇数
图片 542
图片 543    * 替换表名字段
图片 544      update [1] set domurl = replace(domurl,’Upload/Imgswf/’,’Upload/Photo/’) where domurl like ‘%Upload/Imgswf/%’
图片 545
图片 546    * 截位
图片 547      SELECT LEFT(表名, 5)
图片 548

图片 549熟习SQL SERVER 2000底数据库管理员都知晓,其DTS可以展开数量的导入导出,其实,我们也得以用Transact-SQL语句举办导入导出操作。在 Transact-SQL语句被,我们要用OpenDataSource函数、OPENROWSET 函数,关于函数的详实表达,请参考SQL联机协理。利用下述方法,能够老便于地实现SQL SERVER、ACCESS、EXCEL数据易,详细表明如下:
图片 550
图片 551一如既往、SQL SERVER 和ACCESS的数额导入导出
图片 552
图片 553例行的多寡导入导出:
图片 554使用DTS向导迁移你的Access数据及SQL Server,你可以使这些手续:
图片 555  ○1以SQL SERVER集团管理器中之Tools(工具)菜单上,采取Data Transformation
图片 556  ○2瑟维斯(Service)s(数据易服务),然后接纳  czdImport Data(导入数据)。
图片 557  ○3在Choose a Data Source(选拔数据源)对话框中精选Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件增添名)的文书称或通过浏览寻找该公文。
图片 558  ○4在Choose a Destination(采纳对象)对话框中,选取Microsoft OLE DB Prov ider for SQL Server,采纳数据库服务器,然后单击必要的征格局。
图片 559  ○5于Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。
图片 560    ○6在Select Source Tables(选拔来表格)对话框中,单击Select All(全部选定)。下一样步,完成。
图片 561
图片 562Transact-SQL语句举办导入导出:
图片 5631.在SQL SERVER里查询access数据:
图片 564
图片 565SELECT * FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\DB.mdb”;User ID=Admin;Password=’)图片 566表名
图片 567
图片 5682.将access导入SQL server
图片 569在SQL SERVER 里运行:
图片 570SELECT * INTO newtable FROM OPENDATASOURCE (‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\DB.mdb”;User ID=Admin;Password=’ )图片 571表名
图片 572
图片 5733.用SQL SERVER表里的多寡插入到Access表中
图片 574在SQL SERVER 里运行:
图片 575insert into OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=” c:\DB.mdb”;User ID=Admin;Password=’)图片 576表名 (列名1,列名2) select 列名1,列名2  from  sql表
图片 577
图片 578实例:
图片 579insert into  OPENROWSET(‘Microsoft.Jet.OLEDB.4.0′,’C:\db.mdb’;’admin’;”, Test) select id,name from Test
图片 580
图片 581
图片 582INSERT INTO OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, ‘c:\trade.mdb’; ‘admin’; ”, 表名) SELECT * FROM sqltablename
图片 583
图片 584亚、SQL SERVER 和EXCEL的数量导入导出
图片 585
图片 5861、在SQL SERVER里查询Excel数据:
图片 587
图片 588SELECT * FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\book1.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)图片 589[Sheet1$]
图片 590
图片 591下是独查询的言传身教,它经过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
图片 592SELECT * FROM OpenDataSource ( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\Finance\account.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)图片 593xactions
图片 594
图片 5952、将Excel的多寡导入SQL server :
图片 596SELECT * into newtable FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\book1.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)图片 597[Sheet1$]
图片 598
图片 599实例:
图片 600SELECT * into newtable FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\Finance\account.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)图片 601xactions
图片 602
图片 6033、将SQL SERVER中查询到之数导成一个Excel文件
图片 604T-SQL代码:
图片 605EXEC master..xp_cmdshell ‘bcp 库名.dbo.表名out c:\Temp.xls -c -q -S”servername” -U”sa” -P””‘
图片 606参数:S 是SQL服务器名;U是用户;P是密码
图片 607表明:还得导出文本文件等又格式
图片 608
图片 609实例:EXEC master..xp_cmdshell ‘bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S”pmserver” -U”sa” -P”sa”‘
图片 610
图片 611EXEC master..xp_cmdshell ‘bcp “SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname” queryout C:\ authors.xls -c -Sservername -Usa -Ppassword’
图片 612
图片 613每当VB6遭到采取ADO导出EXCEL文件代码:
图片 614Dim cn  As New ADODB.Connection
图片 615cn.open “Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;”
图片 616cn.execute “master..xp_cmdshell ‘bcp “SELECT col1, col2 FROM 库名.dbo.表名” queryout E:\DT.xls -c -Sservername -Usa -Ppassword'”
图片 617
图片 618
图片 6194、在SQL SERVER里往Excel插入数据:
图片 620
图片 621insert into OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0′,’Data Source=”c:\Temp.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)图片 622table1 (A1,A2,A3) values (1,2,3)
图片 623
图片 624T-SQL代码:
图片 625INSERT INTO 
图片 626 OPENDATASOURCE(‘Microsoft.JET.OLEDB.4.0′,’Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls’)图片 627[Filiale1$]  (bestand, produkt) VALUES (20, ‘Test’) 
图片 628
图片 629总计:利用上述语句,大家能够便宜地拿SQL SERVER、ACCESS和EXCEL电子表格软件面临之数据开展转移,为我们提供了庞然大物便利!

相关文章