SQL Server 数据库编程

一、变量的定义与赋值

declare @变量名 类型

set @变量名=值

eg、

查汽车表中名称含有宝马两个字的
declare @name varchar(20)
set @name=‘宝马‘
select * from car where Name like ‘%‘[email protected]+‘%‘

查汽车表中所有汽车的平均值并输出
declare @price decimal(10,4)
select @price = AVG(Price) from Car
print ‘所有汽车的平均价格为:‘+cast(@price as varchar(20))

二、语句

1、输出语句  print ‘字符串‘

2、分支语句

a、if else

if 判断条件
begin 
  要执行的语句
end
else
begin
  要执行的语句
end

b、case  语句(相当于C#的swtich case)(两种用法)

1.简单Case函数

CASE sex

WHEN ‘1‘ THEN ‘男‘

WHEN ‘2‘ THEN ‘女‘

ELSE

  ‘其他‘

END

2.Case搜索函数

CASE

   WHEN sex = ‘1‘ THEN ‘男‘

WHEN sex = ‘2‘ THEN ‘女‘

ELSE

  ‘其他‘

END

eg1、

declare @ccname varchar(20)
set @ccname = ‘宝马‘
select * from Car where Name like 
case
  when @ccname=‘宝马‘ then ‘%宝马%‘
  when @ccname=‘奥迪‘ then ‘%奥迪%‘
else ‘%‘
end

1).两者相比,Case搜索函数功能更强。

2).Case函数类似于if……else if 语句,只返回第一个符合条件的值,之后的部分会被忽略

注意:语句结束之后不要写分号或逗号

三、存储过程

1、不带参数的存储过程(跟 视图作用相同)

eg

1 create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程名
2 as
3 select * from authors
4 --执行存储过程
5 exec mypro  --exec表示执行存储过程

2、带参数的存储过程

create procedure BuyFriut
@Uid varchar(50),
@Fcode varchar(50),
@Sl int
as
begin
    declare @kc int,@price float
    select @kc=Numbers,@price=Price from Fruit where Ids=@Fcode
    if @Sl>@kc
    begin
        print ‘库存不足!‘
    end
    else
    begin
        declare @ye float
        select @ye=Account from Login where UserName=@Uid
        if @ye>= @price*@Sl
        begin
            update Fruit set Numbers=Numbers-@Sl where Ids=@Fcode
            update Login set Account=Account-@price*@Sl where UserName=@Uid
            declare @sj int
            set @sj = cast(rand()*10000    as int)
            insert into Orders values(@sj,@Uid,GETDATE())--添加内容的时候 先写主键表,再写外键表
            insert into OrderDetails values(@sj,@Fcode,@Sl)
        end
        else
        begin
            print ‘余额不足!‘

        end
    end
end

go
--使用存储过程
declare @s int
exec  @s = BuyFriut ‘wangwu‘,‘k001‘,20
print @s 

--删除存储过程
drop proc BuyFriut

3、触发器

触发器,是一种特殊的存储过程,可以用来对表实施复杂的完整性约束,保持数据的一致性。当触发器所保护的数据发生改变时,触发器会自动被激活,并执行触发器中所定义的相关操作,从而保证对数据的不完整性约束或不正确的修改。

用到的两个表inserted表和deleted表,临时表,作用是为了恢复数据

eg

select * from Loginone
select * from biandong
go
--创建触发器
create trigger TR_LOGINONE_DELETE
on Loginone
a、for delete 触发器 --删除的时候执行(第一类)

eg

as
begin
declare @uid varchar(50),@name varchar(50)
select @uid=UserName,@name=Name from deleted
insert into biandong values(@uid,@name,‘删除‘)
end
go
--在对表loginnoe进行删除的时候触发器执行
delete from Loginone where UserName=‘aaa‘

go

b、instead of delete 触发器 --替代执行(第三类)

--删除student里面的数据的时候用另外两条语句替代,先删从表再删主表

create trigger TR_STUDENT_DELETE
on Student
instead of delete
as
begin
    declare @sno varchar(20)
    select @sno=sno from deleted
    delete from score where sno=@sno
    delete from student where sno=@sno
    end
--执行删除的时候触发
delete from student where sno=‘101‘

c、after delete --删除之后执行(第二类)

4、事务

a、开始事务 begin tran(transaction)
b、提交 commit
c、回滚 rollback

select * from Car
select * from Brand

begin transaction --开始事务
delete from Car where Code=‘c005‘
delete from Brand where Brand_Code=‘b002‘
 if @@ERROR=0--判断是否出错,如果执行没错@@ERROR为0
begin
    commit -- 提交事务
end
else
begin
    rollback--回滚事务
end

--try catch
begin transaction --开始事务
begin try --try里面写要执行的代码
    delete from Car where Code=‘c005‘
    delete from Brand where Brand_Code=‘b002‘
    commit
end try
begin catch
    rollback
end catch
时间: 2024-10-14 12:14:11

SQL Server 数据库编程的相关文章

VS2013 MFC ODBC连接SQL SERVER数据库编程(三)

VS2013 MFC ODBC连接SQL SERVER数据库编程(三) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 继上一篇讲完对数据库的链接以及一些说明之后,本文将实现对数据库的增删查改等操作. 如上图所示就是最终完成的一个简单的小程序. 首先添加列表框的NM_CLICK响应程序.鼠标放在列表框上,右键->添加事件处理程序,找到MN_CLICK消息,添加并编辑,如下图所示. 在响应函数里面添加如下代码: 这样就实现了,点

VS2013 MFC ODBC连接SQL SERVER数据库编程(二)

VS2013 MFC ODBC连接SQL SERVER数据库编程(二) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 在上一篇中,我已经说明了如何连接SQL SERVER数据库 下面参考http://wenku.baidu.com/link?url=h1rGgnhSmnclH2lFexHmlP_SZ2LUDRy5xM4wrbTfYlRXZLj2o0ugMT_PFGRxA1XI2pm8NUuEcKGQRA6D77ZieDoyM

50种方法优化SQL Server数据库查询(转载)

原文地址:http://www.cnblogs.com/zhycyq/articles/2636748.html 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用

提高SQL Server数据库效率常用方法

1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优化 ●可以通过如下方法来优化查询 : 1.把数据.日志.索引放到不同的

SQL Server数据库学习总结

经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的 一图胜"十"言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识.  数据库基本是由表,关系,操作组成:对于初学者首先要学的:  1.数据库是如何存储数据的  表,约束,触发器  2.数据库是如何操作数据的  insert,update,delete T-sql 函数 存储过程 触发器  3.数据库是如何显示数据的  select SQLSer

Sql Server数据库设计高级查询

-------------------------------------第一章  数据库的设计------------------------------------- 软件开发周期:     (1)需求分析     (2)概要设计     (3)详细设计     (4)编码     (5)集成测试     (6)上线运行     (7)后期维护 1,数据库设计步骤:     (1)收集信息     (2)标识对象(确定数据库中有哪些表)     (3)标识对象的属性(确定每个表中的例)  

Sql Server数据库基础

--------------------------------------第一章  Sql Server数据库基础----------------------------------------------- 1,sql server的历史:     第一代数据库:网状与层次模型     第二代数据库:关系模型 (sql server属于关系模型数据库)     第三代数据库:对象模型 2,实体:客观存在的可以被描述的事物叫实体 3,冗余:存在重复的数据     消除冗余的办法:分类存储 4,

SQL Server数据库设计规范

SQL Server数据库设计规范 出处:http://www.cnblogs.com/kingboy2008/ 数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体. 最近也因为工作需要所以整理出了这个word文档,望大家指正. 2数据库设计 数据库规划→需求分析→数据库设计→应用程序设计→实现→测试→运

使用ADO.NET对SQL Server数据库进行访问

在上一篇博客中我们给大家简单介绍了一下VB.NET语言的一些情况,至于理论知识的学习我们可以利用VB的知识体系为基础,再将面向对象程序设计语言的知识进行融合便可进行编程实战. 如果我们需要访问一个企业关系数据库(比如SQL Server或者Oracle),并且需要包含由复杂关系构成的表中的数据,如何去实现?我们可以利用ADO.NET内置功能提取并操作数据,就想插入.更新和删除SQL Server里的数据一样. 首先简单介绍一下ADO.NET.所谓的ADO就是ActiveXData Objects