【SQL server基础】初步学习存储过程(好学易懂)
--------------------------------------------------------------------------
-------------------------------存储过程Study------------------------------
--------------------------------------------------------------------------
--删除表
drop table student
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--创建用户信息数据表
create table student
(
id int identity(,),--递增1,
stuNo varchar() primary key, --唯一键
stuName varchar(),
stuAge datetime,
stuSex varchar()
) --创建用户分数数据表
create table course
(
id int identity(,),--递增1,
stuNo varchar(),
courseName varchar(),
courseScore decimal
) --------------------------------------------------------------------------
--------------------------------------------------------------------------
--插入数据
--插入单条数据
insert into student(stuNo,stuName,stuAge,stuSex) values('','王男','1996-08-27 09:00:00.000','男') --多数量插入数据
--SQL Server2008特有的插入
insert into student values('','杨幂','1995-4-20 6:0:0','女'),
('','程峰','1988-9-17 15:30:0','男') insert into course values('','思想政治','85.5'),
('','数学',''),
('','语文',''),
('','物理',''),
('','化学',''),
('','英语','') insert into course values('','思想政治',''),
('','数学',''),
('','语文',''),
('','物理',''),
('','化学',''),
('','英语','') --使用UNION ALL来进行插入
insert into student
select '','wangan','1895-5-27 14:30:28','女'
union all
select '','zhangnan','1990-1-20 19:0:0','女'
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--修改数据
update student set stuSex='男',stuAge='2016-5-9 8:0:0' where stuName='王男'
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--删除数据
delete from student where stuNo=
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程查询所有数据
--begin...end 类似编程语言中的{}
create proc stu1
as
begin
select * from student;
end
go exec stu1
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据条件用户名查询用户信息
create proc stu2
@sname varchar() --声明全局变量
as
begin
select * from student s where s.stuName=@sname;
end
go exec stu2 '王男'
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程内部设定用户名查询用户信息
create proc stu3
@sname varchar()='王男'
as
begin
select * from student s where s.stuName=@sname;
end
go exec stu3
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据用户名查询是否存在这个用户信息
create proc stu4
@sname varchar(),
@result varchar() output --输出参数
as
begin
if (select COUNT() from student s where s.stuName=@sname)>
--if exists (select COUNT() from student s where s.stuName=@sname)
set
@result='存在!'
else
set
@result='不存在!'
end
go declare @result varchar()
exec stu4 '王男1',@result output
print @result
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程内部设定局部变量用户名来查询用户信息
create proc stu5
as
declare @sname varchar() --局部变量声明
set @sname='杨幂'
begin
select * from student s where s.stuName=@sname
end
go exec stu5
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据条件用户学号查询用户名
create proc stu6
@stuNo varchar()
as
declare @sname varchar()
set @sname=(select s.stuName from student s where s.stuNo=@stuNo)
select @sname
go exec stu6 ''
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程插入用户信息
create proc stu7
@stuNo varchar(),
@stuName varchar(),
@stuAge datetime,
@stuSex varchar()
as
begin
insert into student
(stuNo,stuName,stuAge,stuSex)
values
(@stuNo,@stuName,@stuAge,@stuSex)
end
go exec stu7 '','王莽','2000-9-9 9:9:9','女'
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据用户名来删除对应的用户信息
--@@rowcount返回操作条数
--return返回信息,终止下面的操作
create proc stu8
@stuName varchar()
as
begin
delete from student where stuName=@stuName
return @@rowcount
end
go declare @result varchar()
exec @result=stu8 '王莽'
select @result as '删除条数'
--print @result
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据用户学号来查询他的平均分
create proc stu9
@stuNo varchar(),
@avg int output
as
begin
set @avg=(select AVG(courseScore) from course where stuNo=@stuNo)
--等同
--select @avg=AVG(courseScore) from course where stuNo=@stuNo
end
go declare @avg int
exec stu9 '',@avg output
print @avg
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程根据用户学号来联合查询用户信息和课程信息
create proc stu10
@stuNo varchar()
as
select c.stuNo,s.stuName,s.stuAge,s.stuSex,c.courseName,c.courseScore from student s join course c on s.stuNo=c.stuNo where s.stuNo=@stuNo
go exec stu10 ''
go --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程判断学号是否存在,不存在,插入用户信息,返回消息;存在,返回信息
create proc stu11
@stuNo varchar(),
@stuName varchar(),
@stuAge datetime,
@stuSex varchar(),
@result varchar() output
as
if exists (select * from student where stuNo=@stuNo)
begin
set @result='对不起,学号已存在!'
end
else
begin
insert into student
(stuNo,stuName,stuAge,stuSex)
values
(@stuNo,@stuName,@stuAge,@stuSex)
set @result='恭喜你,用户信息插入成功!'
end
go declare @result varchar()
exec stu11 '','王忠磊','1980-8-8 8:9:0','男',@result output
print @result --------------------------------------------------------------------------
--------------------------------------------------------------------------
--存储过程查询当前用户的平均成绩与总的平均成绩之间的关系
create proc stu12
@stuNo varchar()
as
declare @curAvg decimal(,)
declare @totalAvg decimal(,)
if exists(select * from course where stuNo=@stuNo)
begin
set @totalAvg=(select AVG(courseScore) from course)
select @curAvg=AVG(courseScore) from course where stuNo=@stuNo
print ('总的平均分:'+convert(varchar(),@totalAvg))
print ('该生的平均分:'+convert(varchar(),@curAvg))
if @curAvg>@totalAvg
print '高于平均水平!'
else
print '低于平均水平!'
end
else
print '该生对应的分数信息不存在,请重新查询!'
go exec stu12 ''
go
【SQL server基础】初步学习存储过程(好学易懂)的更多相关文章
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- mysql与sql server参照对比学习mysql
mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...
- 数据库开发基础-SQl Server 基础
SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language 结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...
- sql server 常用的系统存储过程
系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- SQL Server技术问题之存储过程与sql语句的优缺点
优点: 1. 允许模块化程序设计.2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储过程可独立于程序源代码而单独修改,而不需要更改.测试以及重新部署程序集 ...
- Sql Server 带参数的存储过程执行方法
Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...
- [转] sql server 跨数据库调用存储过程
A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...
- Sql Server 基础语法
来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select ...
随机推荐
- Zookeeper之Leader选举过程
Leader在集群中是一个非常重要的角色,负责了整个事务的处理和调度,保证分布式数据一致性的关键所在.既然Leader在ZooKeeper集群中这么重要所以一定要保证集群在任何时候都有且仅有一个Lea ...
- PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx
PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx 在写 PyTorch 代码时,我们会发现一些功能重复的操作,比如卷积.激活.池化等操作.这些操作分别可 ...
- 模板汇总——treap
1. 旋转treap. 思想:一颗权值BST + 一颗 随机数 最小堆. BZOJ - 3224 代码: #include<bits/stdc++.h> using namespace s ...
- 【Leetcode】【简单】【66. 加一】【JavaScript】
题目描述 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零 ...
- 除了FastJson,你还有选择: Gson简易指南
前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前漏洞事件没多久,fastjson 又出现严重 Bug.目前项目中不少使用了 fast ...
- 【Offer】[15] 【二进制中1的个数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路分析 让整数和1相与,可以判断整数二进制表示中最右边一位是否为1, ...
- 设置普通用户输入sudo,免密进入root账户
满足给开发用户开权限,赋予sudo权限.又不让其输入密码的方式: 方式一: 开始系统内部的wheel用户组, 在/etc/suoers 中编辑配置文件如下: %wheel ALL=(ALL) NOPA ...
- Cloudera版本的hadoop环境准备
对于普通学习用户而言,应该先下载一个虚拟机, 推荐vmware,因为是免费的. Hadoop环境有三个版本: Apache版本(Apache基金会) CDH(cloudera公司) hdp版本(Hor ...
- java8函数式接口详解、函数接口详解、lambda表达式匿名函数、方法引用使用含义、函数式接口实例、如何定义函数式接口
函数式接口详细定义 函数式接口只有一个抽象方法 由于default方法有一个实现,所以他们不是抽象的. 如果一个接口定义了一个抽象方法,而他恰好覆盖了Object的public方法,仍旧不算做接口的抽 ...
- java架构之路-(11)JVM的对象和堆
上次博客,我们说了jvm运行时的内存模型,堆,栈,程序计数器,元空间和本地方法栈.我们主要说了堆和栈,栈的流程大致也说了一遍,同时我们知道堆是用来存对象的,分别年轻代和老年代.但是具体的堆是怎么来存放 ...