一、定义变量
使用关键字declare申明变量:
declare @变量名 变量类型
/*简单赋值*/
declare @a int
set @a=5
print @a
/*select赋值*/
declare @b nvarchar(10)
select @b= stu_name from dbo.student where stu_id=6
print @b
/*update赋值*/
declare @c nvarchar(10)
update dbo.student set @c=stu_name where stu_id=5
print @c
运行结果:
ps:使用set赋值时,等式右边不可以用函数表达式。
二、临时表、表变量
临时表:
临时表的创建是在Tempdb中,在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在。临时表在创建的时候都会产生SQL Server的系统日志。在Tempdb中体现,在内存中分配,它们也支持物理的磁盘,但用户在指定的磁盘里看不到文件。
/*创建本地临时表#*/
create table #tablename()
/*创建全局临时表##*/
create table ##tablename()
/*创建一个临时表#student*/
create table #student(
id int,
username nvarchar(20),
sex nvarchar(2),
age int
)
/*向临时表中插入一条数据*/
insert into #student values(1,'Susan','女',18)
/*从student表查询数据,填充至新生成的临时表*/
1.select * into #student2 from student where stu_age>30
2.insert into #student select * from student where stu_age>30
由于手误,执行了两次,表中出现了重复项,且每一列值都相同
怎么删除完全重复的项的呢?
delete T from
(select ROW_NUMBER() over(partition by username order by id) as rownumber,
* from #student) T
WHERE T.rownumber>1
语法:ROW_NUMBER( ) OVER ( PARTITION BY 列1 ORDER BY 列2 )
根据COLUMN分组,在分组内部根据 COLUMN排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
函数“Row_Number”必须有 OVER 子句。OVER 子句必须有包含 ORDER BY
/*查询并联合两临时表*/
select * from #student where id >2 union select * from #student2
/*删除两临时表*/
drop table #student
drop table #student2
/*添加一列为int型自增长列*/