日度归档:2018年5月14日

mssql sqlserver 游标简介及优缺点


摘要:
下文主要讲述sqlserver中游标的功能及游标的优缺点说明


游标在sqlserver中,主要起到存储数据的作用,类似于程序编写中list对象,
每个游标,都在一组sql批处理中,拥有唯一的游标名称
将数据放入游标后,我们可以对数据进行遍历操作。
将数据放入游标,在sql脚本中,也达到了数据重用的目的,避免多次操作数据库。

在sqlserver数据库中,游标是一个非常重要的对象,
游标给我们编写代码带来很大的遍历性。
游标提供临时数据存储副本
游标是我们循环处理数据的一种方式
由于游标拥有循环功能,所以我们可以一行一行的处理数据

游标操作的基本语法结构



declare 变量1 数据类型,变量2 数据类型 ,变量3 数据类型,...... -----定义操作过程中使用的变量

declare 游标名 cursor for -----定义游标
select 字段1, row_number()over(order by id asc) %12 字段 2 -----通过row_number()函数对字段编号
from 表 where 条件


open 游标名 ------打开游标
fetch next from 游标名into 变量1,变量2 ------提取当前位置的下一行数据

while @@fetch_status = 0 -------提取成功,进行下一条数据的提取操作
begin

if @a >100
begin
set @a=@a+1
end

select 变量=字段 from 表 where 条件
update 表 set 字段= 变量 where 条件 -----操作内容

  fetch next from 游标名 into 变量1,变量2 -----移动游标
end

close 游标名 -----关闭游标
deallocate 游标名 -----释放游标

mssql sqlserver where关键字应用举例说明


摘要:
下文主要使用where 关键字对表数据进行检索过滤操作,如下所示:


  create table A(keyId int identity,name varchar(30))
go
insert into A(name)values('a'),('b'),('c'),('D'),(null)
go

---1 获取keyId等于指定值 
select * from A where keyId=3
go
---2 获取keyId不等于某值
select * from A where keyId <>3 
select * from A where keyId !=3 
---3 获取keyId between
select * from A where keyId between 1 and 2

---3 获取name为null的行
select * from A where name is null 

go
drop table A
mssql_sqlserver_where关键字应用

mssql_sqlserver_where关键字应用

mssql sqlserver union关键字写法注意事项


摘要:
union 关键字要求,进行组合的表,需拥有相同的列名,否则系统会产生相应的错误信息,

例:

   create table A(keyId int ,name varchar(20),nameC varchar(30))
create table B(keyIdB int,nameB varchar(20))
go

insert into A values(1,'A','c'),(2,'d','e')
insert into B values(3,'f'),(4,'g')
go

select * from A
union   
select * from B
 
go
drop table A
drop table B
 


消息 205,级别 16,状态 1,第 3 行
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。

注意事项:
最佳的union的写法应该为固定列名,这样在表结构升级时,不会导致异常产生:

  select keyId,name,nameC from A
union   
select keyIdB,nameB,null from B