`
freellf
  • 浏览: 8634 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL Server数据库编程基本语法汇总

阅读更多
一、定义变量

  --简单赋值

  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数据库管理技术详解

    "Excel+SQL+Server数据库管理技术详解"的主题涵盖了三个关键工具:Microsoft Excel、SQL(Structured Query Language)以及Microsoft SQL Server。这些工具的结合使用可以实现高效的数据存储、检索、分析和报告。 ...

    sqlserver 2008 数据库编程 详解

    在SQL Server 2008中,Transact-SQL(T-SQL)是核心的编程语言,用于数据库的管理和应用程序开发。T-SQL是SQL的扩展版本,它不仅遵循ANSI SQL标准,还包含了Microsoft特有的功能和增强。理解并熟练掌握T-SQL对于SQL ...

    VC 工资管理系统 SQL SERVER数据库

    为了实现这些功能,开发者需要深入理解VC的编程语法,熟练掌握SQL SERVER的数据库设计和管理技巧,以及如何在两者之间建立有效的数据交互。这要求开发者具备扎实的编程基础,良好的数据库设计能力,以及一定的业务...

    SQL Server高级查询与T-SQL编程知识点汇总

    SQL Server高级查询与T-SQL编程是数据库管理与开发中的核心技能,涵盖了多个关键知识点。以下是对这些主题的详细说明: 1. **数据库设计**: - **需求分析**:这是设计过程的第一步,旨在理解用户的需求,确定系统...

    SQLServer 2008编程入门经典(第3版)

    综上所述,《SQL Server 2008编程入门经典(第3版)》一书全面覆盖了SQL Server 2008从基础概念到高级应用的多个方面,非常适合希望深入了解此数据库系统的开发者和数据库管理员阅读。通过学习这些核心知识点,读者...

    (完整版)SQLServer存储过程的基本概念以及语法汇总.docx

    SQL Server 存储过程的基本概念和语法汇总 存储过程是 SQL Server 中的一种重要概念,它可以将一些固定的操作集中起来由 SQL Server 数据库服务器来完成,以实现某个任务。存储过程是 SQL 语句和可选控制流语句的预...

    sqlserver快速入门指南汇总

    接着,我们来看看"SQLServer数据库语法速成.rar"。这个压缩包可能包含了SQL Server的主要语法点,包括SELECT查询、JOIN操作、聚合函数(如COUNT、SUM、AVG)、子查询、分组和排序等。快速掌握这些语法对于初学者来说...

    《SQL Server语言参考大全》+ 语法大全

    SQL Server语言参考大全是数据库管理员和开发者不可或缺的资源,它涵盖了SQL Server的广泛知识,包括查询、更新、插入和删除数据的基本语法,以及更高级的特性和功能,如存储过程、触发器、视图和索引。这本书籍的...

    PB与SQL SERVER

    通过这本教程,读者可以深入理解数据库系统的基本原理,同时学会如何在PowerBuilder中设计和实现用户界面,以及如何与后台的SQL Server数据库进行有效交互。 在教程中,你将学习到以下关键知识点: 1. **Power...

    SQL语言基本语法

    SQL的语法在不同的数据库管理系统(DBMS)中可能会有些许差异,如MySQL、Oracle、SQL Server和PostgreSQL等。但大多数标准SQL特性在这些系统中都是通用的。熟练掌握SQL语言,无论在数据处理、数据分析还是业务应用中,...

    《SQLServer2005数据库》考试试卷

    SQL Server 2005数据库是...这些题目涵盖了SQL Server 2005数据库的基础知识,包括数据模型、查询语法、数据类型、约束、视图、游标等核心概念。考生需要理解和掌握这些知识点,才能在实际工作中有效管理和操作数据库。

    VB+SQL Server 2000 实现学生教务管理系统源码

    【VB+SQL Server 2000 实现学生教务管理系统源码】是一个基于Visual Basic (VB)...通过深入学习和理解这个项目,开发者不仅可以掌握VB编程和SQL Server数据库管理,还能了解到如何将两者有效整合,实现实际的应用场景。

    VB6.0学生成绩管理系统(SQL Server 2008)

    VB6.0学生成绩管理系统是一款基于Visual Basic 6.0编程语言和SQL Server 2008数据库技术开发的学生学业成绩管理软件。这个系统旨在帮助学校、教师或教育机构更加高效地管理学生的学习成绩,实现数据的录入、查询、...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录A

    T-SQL是微软SQL Server的扩展SQL语法,它是数据库管理员和开发者进行数据操作、管理数据库的核心工具。T-SQL不仅包含了标准的SQL语句,如SELECT、INSERT、UPDATE和DELETE,还提供了过程化编程元素,如变量、流程控制...

    考勤系统 C#+SqlServer

    本文将深入探讨如何利用C#编程语言与Microsoft SQL Server数据库系统,开发出一套完整的考勤管理系统,以实现员工打卡、考勤记录、统计分析等功能。 C#是微软推出的一种面向对象的编程语言,它具有强大的类库支持,...

    VB.NET+SQL SERVER工资管理系统

    【VB.NET+SQL SERVER工资管理系统】是一个基于Visual Basic .NET(VB.NET)编程语言和Microsoft SQL Server数据库管理系统构建的应用程序,旨在实现企业内部的工资管理功能。该系统提供了全面的薪资计算、员工信息...

    21天sqlserver自学通

    SQL Server是微软公司推出的一款关系型数据库管理系统(RDBMS),它提供了强大的数据存储、处理和分析功能。SQL Server广泛应用于企业级应用程序中,支持多种操作系统,并且具有高度的安全性和可扩展性。 **SQL语言...

    sqlserver与oracle差异汇总.docx

    此外,Oracle的扩展PL/SQL提供了更强大的过程编程能力,而SQLServer的Transact-SQL同样具备此功能,但语法略有不同。 数据类型方面,Oracle主要支持如CHAR、VARCHAR2、LONG、NUMBER、DATE等,并有LOB类型用于存储大...

Global site tag (gtag.js) - Google Analytics