千家信息网

SQL Server基础语句讲解

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select into b from a where 1<>1(仅用于SQlServer)法二:select top
千家信息网最后更新 2026年11月03日SQL Server基础语句讲解

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select into b from a where 1<>1(仅用于SQlServer)
法二:select top 0
into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from a;

select * into b from a

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from a in '具体数据库' where 条件
例子:..from a in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法
select * from table1 where a [not] in ('值1','值2','值4','值6')

10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:
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 .....

12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
具体实现:
关于数据库分页:

declare @start int,@end int

@sql nvarchar(600)

set @sql='select top'+str(@end-@start+1)+'+from T where rid not in(select top'+str(@str-1)+'Rid from T where Rid>-1)'

exec sp_executesql @sql
注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

14、说明:前10条记录
select top 10 * form table1 where 范围

15、说明:选择从10到15的记录
select top 5 from (select top 15 from table order by id asc) table_别名 order by id desc

select from (select top 5 from (select top 15 * from table order by id asc) table_别名order by id desc) table_别名order by id asc

16、说明:随机取出10条数据
select top 10 * from tablename order by newid()

17、说明:随机选择记录
select newid()

生成多个Guid:

--CREATE TABLE #GuidList (Id int,Gid uniqueidentifier)

-- GO

--循环执行次

--INSERT INTO #GuidList(Gid) SELECT newid()

--GO 100

--select * from #GuidList

18、记录搜索:
开头到N条记录
Select Top N * From 表

N到M条记录(要有主索引ID)
Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc

N到结尾记录
Select Top N * From 表 Order by ID Desc
案例
例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句, 找出表的第31到第40个记录。

select top 10 recid from A where recid not in(select top 30 recid from A)

分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。

select top 10 recid from A where……是从索引中查找,而后面的select top 30 recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。

解决方案

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

19、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

20、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by typ

数据 字段 查询 索引 数据库 选择 一致 别名 拷贝 数据表 逻辑 问题 排序 语句 信息 实际 数值 日程 日程安排 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 保险科技 互联网保险 互联网科技活动banner 互联网核心科技是什么 互联网 科技创业 北京互联网络科技有限公司 互联网女皇 腾讯科技 赫美联合互联网科技 互联网时代科技改变生活 荆州市昕露互联网络科技有限公司 阿大互联网科技有限公司 互联网媒体平台算高科技产业 燊美集互联网科技有限公司 世界互联网领先科技成果获奖 富国互联网科技002692 萌小萌互联网科技河南有限公司 版纳互联网科技选哪家 众联互联网络科技 第三届互联网大会安防黑科技 互联网 科技节活动 微视频大赛 互联网科技财经 疫情对互联网科技公司影响 致骋互联网科技 艾特科技互联网 央行互联网金融科技公司 互联网金融科技公司的优势 雨阳互联网卡科技有限公司 云南省自由互联网科技有限公司 科技互联网行业投资研究 美国五大互联网科技公司市值多少
0