`

sqlserver基本语法

阅读更多

原文:http://www.cnblogs.com/lipan/archive/2010/12/09/1892516.html

一、定义变量

--简单赋值
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] [intNOT 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

   存储过程一般用在实现复杂的功能,数据操纵方面。

 

 

 

分享到:
评论

相关推荐

    Sql Server基本语法大全

    【Sql Server基本语法大全】 Sql Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。本文将详细介绍Sql Server中的基本语法,包括创建与删除数据库、备份与恢复、表的操作、索引与...

    SQL Server基础语法

    在SQL Server中,基础语法主要涵盖以下几个方面: 1. **数据查询**:SQL的基础是SELECT语句,用于从数据库中检索数据。例如,`SELECT * FROM Customers`将获取Customers表中的所有记录。通过指定列名、使用WHERE...

    sqlserver 基本语法

    sqlserver 基本语法 MS SQL Server 是一种关系数据库管理系统,提供了强大的数据存储和管理功能。下面我们将介绍 SQL Server 的基本语法,包括数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。 ...

    sql server 基础语法

    SQL Server 基础语法 SQL Server 是一种关系数据库管理系统,提供了强大的数据存储和管理功能。 SQL Server 的基础语法包括数据定义、数据操纵和数据控制三个方面。 1. 数据定义功能 数据定义功能是 SQL Server ...

    Sqlserver基本语法及范例

    Sqlserver基本增删改查及存储过程,事务等语法及其对应范例

    SQL Server 基本语法

    SQL Server 基本语法 的 笔记 所有语法一一罗列完全

    SQL SERVER基本语法参考

    【SQL SERVER基本语法参考】 SQL Server是一款广泛应用的关系型数据库管理系统,它支持丰富的数据类型和复杂的查询操作。在SQL Server中,我们主要通过两种语言来管理数据:DDL(Data Definition Language)用于...

    sql server基础语法教程(附有视频地址)

    本教材重点讲解了,关于sql server 的基础语法,包含但不限于标识符,数据类型,表达式,控制流语句,增删改查,简单查询,高级查询,分组,排序,视图的基本操作等知识点的详解。同时附有视频学习地址。希望能帮助...

    sqlserver sql语法大全

    ### SQLServer SQL语法大全 #### 创建数据库 在SQL Server中创建数据库是一项基本操作,通过`CREATE DATABASE`命令来实现。创建数据库时可以指定文件和日志文件的位置、初始大小及增长方式等参数。 **语法示例:**...

    Oracle和SqlServer语法区别

    Oracle和SqlServer语法区别 Oracle和SqlServer是两种流行的关系型数据库管理系统,它们之间存在着一些语法区别。了解这些区别对于开发者来说非常重要,因为它可以帮助他们更好地迁移到新的数据库管理系统。下面将...

    SQLServer查询语法:

    SQLServer 查询语法 SQL Server 是一款功能强大且流行的关系数据库管理系统,查询语法是 SQL Server 的核心组件之一。本文将对 SQL Server 查询语法进行详细的介绍,从基础查询语法到高级查询语法,涵盖了查询限制...

    sql server语法笔记整理

    通过学习和实践这些SQL Server基本语法,初学者将能够有效地管理和操作数据库。经典SQL语句大全.doc和SQL语法基础.doc文档将更深入地探讨这些概念,提供丰富的实例和练习,助你在SQL Server的世界里游刃有余。

    SQL Server存储过程基本语法

    ### SQL Server 存储过程基本语法知识点解析 #### 一、定义变量 在 SQL Server 中,我们可以使用 `DECLARE` 语句来定义变量,并通过 `SET` 或 `SELECT` 来给变量赋值。 ##### 1. 简单赋值 ```sql DECLARE @a int; ...

    SQLServer数据库语法速成

    学习SQL Server数据库语法速成,不仅需要理解这些基本概念,还要通过实际操作来熟悉和掌握。这通常涉及到创建数据库、创建表、练习查询、操作数据以及实践存储过程等实际场景。通过不断地练习和应用,你将能迅速提升...

    SqlServer常用语法[参考].pdf

    为了更好地使用SqlServer,需要掌握一些基本的语法和约束。 一、约束种类 在SqlServer中,约束是一种限制或规则,用于确保数据的正确性和一致性。常见的约束种类有: 1. 默认约束(Default):用于指定列的默认值...

    Oracle和SQL_Server的语法区别

    Oracle 和 SQL Server 是两种广泛应用的关系型数据库管理系统,它们在语法上有许多相似之处,但也存在显著的差异。在将 Oracle 数据库中的数据操作语言(DML)语句和过程化语言(PL/SQL)程序迁移至 SQL Server 时,...

    mysql与sqlserver的基础语法区别

    MySQL和SQL Server是两种广泛应用的关系型数据库管理系统(RDBMS),它们在基础语法上存在一些差异,这主要体现在数据定义、数据操作、查询语言以及事务处理等方面。以下将详细阐述这些区别。 一、数据定义(DDL)...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程

    16.SQL Server 2014 BETWEEN语法.mp4 17.SQL Server 2014子查询IN.mp4 18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 2.SQL Server 2014硬件和软件要求.mp4 20.SQL Server 2014关联...

    sql server 语句语法应用讲解

    本教程将深入探讨SQL Server中的语句语法应用,通过大量练习和相关数据教程,帮助你熟练掌握这一强大的工具。 首先,我们需要理解SQL(Structured Query Language)的基本概念。SQL是用于与数据库交互的标准语言,...

    SQL Server语法大全

    根据提供的文件信息,本文将对SQL Server中的数据操纵语言(Data Manipulation Language, DML)与数据定义语言(Data Definition Language, DDL)的关键概念及其语法进行深入解析。以下是对这些概念的详细解释: ##...

Global site tag (gtag.js) - Google Analytics