一、定义变量
--简单赋值
declare @a int
set @a=5
print @a
--使用select语句赋值
declare @user1 nvarchar(50)
select @user1='张三'
print @user1
declare @user2 nvarchar(50)
select @user2 = Name from ST_User where ID=1
print @user2
--使用update语句赋值
declare @user3 nvarchar(50)
update ST_User set @user3 = Name where ID=1
print @user3
二、表、临时表、表变量
--创建临时表1
create table #DU_User1
(
[ID] [int] NOT NULL,
[Oid] [int] NOT NULL,
[Login] [nvarchar](50) NOT NULL,
[Rtx] [nvarchar](4) NOT NULL,
[Name] [nvarchar](5) NOT NULL,
[Password] [nvarchar](max) NULL,
[State] [nvarchar](8) NOT NULL
);
--向临时表1插入一条记录
insert into #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State) values (100,2,'LS','0000','临时','321','特殊');
--从ST_User查询数据,填充至新生成的临时表
select * into #DU_User2 from ST_User where ID<8
--查询并联合两临时表
select * from #DU_User2 where ID<3 union select * from #DU_User1
--删除两临时表
drop table #DU_User1
drop table #DU_User2 --创建临时表
CREATE TABLE #t
(
[ID] [int] NOT NULL,
[Oid] [int] NOT NULL,
[Login] [nvarchar](50) NOT NULL,
[Rtx] [nvarchar](4) NOT NULL,
[Name] [nvarchar](5) NOT NULL,
[Password] [nvarchar](max) NULL,
[State] [nvarchar](8) NOT NULL,
)
--将查询结果集(多条数据)插入临时表
insert into #t select * from ST_User
--不能这样插入
--select * into #t from dbo.ST_User
--添加一列,为int型自增长子段
alter table #t add [myid] int NOT NULL IDENTITY(1,1)
--添加一列,默认填充全球唯一标识
alter table #t add [myid1] uniqueidentifier NOT NULL default(newid())
select * from #t
drop table #t --给查询结果集增加自增长列
--无主键时:
select IDENTITY(int,1,1)as ID, Name,[Login],[Password] into #t from ST_User
select * from #t
--有主键时:
select (select SUM(1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID --定义表变量
declare @t table
(
id int not null,
msg nvarchar(50) null
)
insert into @t values(1,'1')
insert into @t values(2,'2')
select * from @t
三、循环
--while循环计算1到100的和
declare @a int
declare @sum int
set @a=1
set @sum=0
while @a<=100
begin
set @sum+=@a
set @a+=1
end
print @sum
四、条件语句
--if,else条件分支
if(1+1=2)
begin
print '对'
end
else
begin
print '错'
end
--when then条件分支
declare @today int
declare @week nvarchar(3)
set @today=3
set @week=case
when @today=1 then '星期一'
when @today=2 then '星期二'
when @today=3 then '星期三'
when @today=4 then '星期四'
when @today=5 then '星期五'
when @today=6 then '星期六'
when @today=7 then '星期日'
else '值错误'
end
print @week
五、游标
declare @ID int
declare @Oid int
declare @Login varchar(50)
--定义一个游标
declare user_cur cursor for select ID,Oid,[Login] from ST_User
--打开游标
open user_cur
while @@fetch_status=0
begin
--读取游标
fetch next from user_cur into @ID,@Oid,@Login
print @ID
--print @Login
end
close user_cur
--摧毁游标
deallocate user_cur
六、触发器
触发器中的临时表:
Inserted
存放进行insert和update 操作后的数据
Deleted
存放进行delete 和update操作前的数据
--创建触发器
Create trigger User_OnUpdate
On ST_User
for Update
As
declare @msg nvarchar(50)
--@msg记录修改情况
select @msg = N'姓名从“' + Deleted.Name + N'”修改为“' + Inserted.Name + '”' from Inserted,Deleted
--插入日志表
insert into [LOG](MSG)values(@msg)
--删除触发器
drop trigger User_OnUpdate
七、存储过程
--创建带output参数的存储过程
CREATE PROCEDURE PR_Sum
@a int,
@b int,
@sum int output
AS
BEGIN
set @sum=@a+@b
END
--创建Return返回值存储过程
CREATE PROCEDURE PR_Sum2
@a int,
@b int
AS
BEGIN
Return @a+@b
END
--执行存储过程获取output型返回值
declare @mysum int
execute PR_Sum 1,2,@mysum output
print @mysum
--执行存储过程获取Return型返回值
declare @mysum2 int
execute @mysum2= PR_Sum2 1,2
print @mysum2
八、自定义函数
函数的分类:
1)标量值函数
2)表值函数
a:内联表值函数
b:多语句表值函数
3)系统函数
--新建标量值函数
create function FUNC_Sum1
(
@a int,
@b int
)
returns int
as
begin
return @a+@b
end
--新建内联表值函数
create function FUNC_UserTab_1
(
@myId int
)
returns table
as
return (select * from ST_User where ID<@myId)
--新建多语句表值函数
create function FUNC_UserTab_2
(
@myId int
)
returns @t table
(
[ID] [int] NOT NULL,
[Oid] [int] NOT NULL,
[Login] [nvarchar](50) NOT NULL,
[Rtx] [nvarchar](4) NOT NULL,
[Name] [nvarchar](5) NOT NULL,
[Password] [nvarchar](max) NULL,
[State] [nvarchar](8) NOT NULL
)
as
begin
insert into @t select * from ST_User where ID<@myId
return
end
--调用表值函数
select * from dbo.FUNC_UserTab_1(15)
--调用标量值函数
declare @s int
set @s=dbo.FUNC_Sum1(100,50)
print @s
--删除标量值函数
drop function FUNC_Sum1
谈谈自定义函数与存储过程的区别:
一、自定义函数:
1. 可以返回表变量
2. 限制颇多,包括
·不能使用output参数;
·不能用临时表;
·函数内部的操作不能影响到外部环境;
·不能通过select返回结果集;
·不能update,delete,数据库表;
3. 必须return 一个标量值或表变量
自定义函数一般用在复用度高,功能简单单一,争对性强的地方。
二、存储过程
1. 不能返回表变量
2. 限制少,可以执行对数据库表的操作,可以返回数据集
3. 可以return一个标量值,也可以省略return
存储过程一般用在实现复杂的功能,数据操纵方面。
分享到:
相关推荐
"Excel+SQL+Server数据库管理技术详解"的主题涵盖了三个关键工具:Microsoft Excel、SQL(Structured Query Language)以及Microsoft SQL Server。这些工具的结合使用可以实现高效的数据存储、检索、分析和报告。 ...
在SQL Server 2008中,Transact-SQL(T-SQL)是核心的编程语言,用于数据库的管理和应用程序开发。T-SQL是SQL的扩展版本,它不仅遵循ANSI SQL标准,还包含了Microsoft特有的功能和增强。理解并熟练掌握T-SQL对于SQL ...
为了实现这些功能,开发者需要深入理解VC的编程语法,熟练掌握SQL SERVER的数据库设计和管理技巧,以及如何在两者之间建立有效的数据交互。这要求开发者具备扎实的编程基础,良好的数据库设计能力,以及一定的业务...
SQL Server高级查询与T-SQL编程是数据库管理与开发中的核心技能,涵盖了多个关键知识点。以下是对这些主题的详细说明: 1. **数据库设计**: - **需求分析**:这是设计过程的第一步,旨在理解用户的需求,确定系统...
综上所述,《SQL Server 2008编程入门经典(第3版)》一书全面覆盖了SQL Server 2008从基础概念到高级应用的多个方面,非常适合希望深入了解此数据库系统的开发者和数据库管理员阅读。通过学习这些核心知识点,读者...
SQL Server 存储过程的基本概念和语法汇总 存储过程是 SQL Server 中的一种重要概念,它可以将一些固定的操作集中起来由 SQL Server 数据库服务器来完成,以实现某个任务。存储过程是 SQL 语句和可选控制流语句的预...
接着,我们来看看"SQLServer数据库语法速成.rar"。这个压缩包可能包含了SQL Server的主要语法点,包括SELECT查询、JOIN操作、聚合函数(如COUNT、SUM、AVG)、子查询、分组和排序等。快速掌握这些语法对于初学者来说...
SQL Server语言参考大全是数据库管理员和开发者不可或缺的资源,它涵盖了SQL Server的广泛知识,包括查询、更新、插入和删除数据的基本语法,以及更高级的特性和功能,如存储过程、触发器、视图和索引。这本书籍的...
通过这本教程,读者可以深入理解数据库系统的基本原理,同时学会如何在PowerBuilder中设计和实现用户界面,以及如何与后台的SQL Server数据库进行有效交互。 在教程中,你将学习到以下关键知识点: 1. **Power...
SQL的语法在不同的数据库管理系统(DBMS)中可能会有些许差异,如MySQL、Oracle、SQL Server和PostgreSQL等。但大多数标准SQL特性在这些系统中都是通用的。熟练掌握SQL语言,无论在数据处理、数据分析还是业务应用中,...
SQL Server 2005数据库是...这些题目涵盖了SQL Server 2005数据库的基础知识,包括数据模型、查询语法、数据类型、约束、视图、游标等核心概念。考生需要理解和掌握这些知识点,才能在实际工作中有效管理和操作数据库。
【VB+SQL Server 2000 实现学生教务管理系统源码】是一个基于Visual Basic (VB)...通过深入学习和理解这个项目,开发者不仅可以掌握VB编程和SQL Server数据库管理,还能了解到如何将两者有效整合,实现实际的应用场景。
VB6.0学生成绩管理系统是一款基于Visual Basic 6.0编程语言和SQL Server 2008数据库技术开发的学生学业成绩管理软件。这个系统旨在帮助学校、教师或教育机构更加高效地管理学生的学习成绩,实现数据的录入、查询、...
T-SQL是微软SQL Server的扩展SQL语法,它是数据库管理员和开发者进行数据操作、管理数据库的核心工具。T-SQL不仅包含了标准的SQL语句,如SELECT、INSERT、UPDATE和DELETE,还提供了过程化编程元素,如变量、流程控制...
本文将深入探讨如何利用C#编程语言与Microsoft SQL Server数据库系统,开发出一套完整的考勤管理系统,以实现员工打卡、考勤记录、统计分析等功能。 C#是微软推出的一种面向对象的编程语言,它具有强大的类库支持,...
【VB.NET+SQL SERVER工资管理系统】是一个基于Visual Basic .NET(VB.NET)编程语言和Microsoft SQL Server数据库管理系统构建的应用程序,旨在实现企业内部的工资管理功能。该系统提供了全面的薪资计算、员工信息...
SQL Server是微软公司推出的一款关系型数据库管理系统(RDBMS),它提供了强大的数据存储、处理和分析功能。SQL Server广泛应用于企业级应用程序中,支持多种操作系统,并且具有高度的安全性和可扩展性。 **SQL语言...
此外,Oracle的扩展PL/SQL提供了更强大的过程编程能力,而SQLServer的Transact-SQL同样具备此功能,但语法略有不同。 数据类型方面,Oracle主要支持如CHAR、VARCHAR2、LONG、NUMBER、DATE等,并有LOB类型用于存储大...