1、用order by select top 30 recid from A order by ricid 

 

如果该字段不是自增长,就会出现问题

 

2、在那个子查询中也加条件:select top 30 recid from A where recid>-1

 

例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。

set @s = 'select top 1 * from T   where pid not in (select top ' + str(@count-1) + ' pid  from  T)'

print @s      exec  sp_executesql  @s

 

3、获取当前数据库中的所有用户表

 

select Name from sysobjects where xtype='u' and status>=0

 

4、获取某一个表的所有字段

 

select name from syscolumns where id=object_id('表名')

select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')

两种方式的效果相同

 

5、查看与某一个表相关的视图、存储过程、函数

 

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

 

6、查看当前数据库中所有存储过程

 

select name as 存储过程名称 from sysobjects where xtype='P'

 

7、询用户创建的所有数据库

 

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

 

8、查询某一个表的字段和数据类型

 

select column_name,data_type from information_schema.columns

where table_name = '表名'

 

9、不同服务器数据库之间的数据操作

 

--创建链接服务器

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 '

 

--查询示例

 

select * from ITSV.数据库名.dbo.表名

 

--导入示例

 

select * into 表 from ITSV.数据库名.dbo.表名

 

--以后不再使用时删除链接服务器

 

exec sp_dropserver  'ITSV ', 'droplogins '

 

--连接远程/局域网数据(openrowset/openquery/opendatasource)

--1、openrowset

 

--查询示例

select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

 

--生成本地表

select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

 

--把本地表导入远程表

 

insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名

select *from 本地表

 

--更新本地表

 

update b

set b.列A=a.列A

from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b

on a.column1=b.column1

 

--openquery用法需要创建一个连接

 

--首先创建一个连接创建链接服务器

 

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

 

--查询

 

select * FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')

 

--把本地表导入远程表

 

insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')

select * from 本地表

 

--更新本地表

 

update b

set b.列B=a.列B

FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a 

inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset

SELECT   *  FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta

 

--把本地表导入远程表

 

insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名

select * from 本地表 

 

 

 


 

 SQL相关链接:

SQL语句大全 —《基础》:https://www.songqinnet.com/article/916

SQL语句大全 —《提升》:https://www.songqinnet.com/article/917

SQL语句大全 —《技巧》:https://www.songqinnet.com/article/920

SQL语句大全 —《解决方案》:https://www.songqinnet.com/article/923