4.sql进阶02(知识点)

条件表达是里面,可以使用一个只有一行一列的查询作为判断的一个根据

IF(
(SELECT
COUNT(id)
FROM dbo.Student)
>10)

BEGIN

PRINT
‘好多人啊‘

END

ELSE

begin

PRINT
‘人好少啊‘

END

?

?

输出参数

ALTER
PROC
usp_GetStu

@iid
INT
= 2,--有默认值的参数可以不传

@name
nvarchar(10),
--对于没有写默认值的参数,在调用的时候必须传递参数,

--在存储过程的参数被定义的时候,可以指定默认值

@totalCount
int
=0 OUTPUT--定义一个输出参数

AS

begin

SELECT
*
FROM
dbo.Student
WHERE
Name=@name

SELECT
*
FROM
dbo.Student
WHERE
id=@iid

SELECT
@totalCount=COUNT(id)
FROM dbo.Student

END

?

DECLARE
@total
INT
=0

EXEC
usp_GetStu
@name=‘啊三‘,@totalCount=@total
OUTPUT--指定一个变量给输出参数,

--在存储过程执行完毕以后,我们就可以通过变量得到数据的值了

SELECT
@total

?

在使用SqlCommand 的时候,如果设置了CommandType属性,那么程序就会自动的按照SqlParameter的名字,给存储过程添加参数,在设置了属性后sql语句就不用加上"EXEC"了

SqlCommand cmd = new
SqlCommand("usp_ZZ", conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter sp = new
SqlParameter();

sp.ParameterName = "@mon";

sp.SqlDbType = SqlDbType.Int;

sp.Value = mon;

?

cmd.Parameters.Add(sp);

?

不指定CommandType可以就当做一个字符串执行

SqlCommand cmd = new
SqlCommand("EXEC usp_ZZ @mon", conn);

?

标识一个参数的方向 为output就是说这个参数是一个输出参数

sp.Direction = ParameterDirection.Output;

取得输出参数的值 ,注意,需要在command对象执行之后才能取值

MessageBox.Show(sp.Value.ToString());

?

?

触发器

?

触发器最难的是在与根据业务需求,写出触发器里面需要执行的sql语句

触发器本身并不难

After 和for 都是在增删改执行的时候执行另外的sql语句

?

Instead of 是,取代原来的操作

?

--创建一个新增触发器

CREATE
TRIGGER
tgforClassesOnInsert
ON
Classes

AFTER
INSERT

as

begin

PRINT
‘新增了一行数据‘

--INSERT INTO log (操作的表,执行时间,哪个用户)

END

--创建一个删除触发器

CREATE
TRIGGER
tgforClassesOnDelete
ON
Classes

AFTER
DELETE

as

begin

PRINT
‘删除了一行数据‘

END

--创建一个修改触发器

CREATE
TRIGGER
tgForClassesOnUpdate
ON
Classes

AFTER
UPDATE

as

begin

PRINT
‘修改了一行数据‘

END

?

--*********FOR

CREATE
TRIGGER
tgclassupdate
ON
classes

FOR????update

as

begin

PRINT
‘for的更新‘

END

CREATE
TRIGGER
tgclassinsert
ON
classes

FOR????INSERT

as

begin

PRINT
‘for的插入‘

END

CREATE
TRIGGER
tgclassdelete
ON
classes

FOR????DELETE

as

begin

PRINT
‘for的删除‘

END

--************instead OF

CREATE
TRIGGER
tgclassesIinsert
ON
classes

instead
OF
INSERT

as

begin

PRINT
‘instead ++ INSERT‘

END

CREATE
TRIGGER
tgclassesIupdate
ON
classes

instead
OF
update

as

begin

PRINT
‘instead ++ update‘

END

CREATE
TRIGGER
tgclassesIdelete
ON
classes

instead
OF
delete

as

begin

PRINT
‘instead ++ delete‘

END

?

存储过程:

  1. 存储过程SqlHelper:

  1. 存储过程-转账+事务

  2. 带参数的存储过程:

  3. 带返回值的存储过程:

  4. 带两个参数的存储过程:

  5. 存储过程-分页

自写的用于分页:

返回页码,可以用内置函数:--SELECT @pageCount=CEILING((COUNT(id)*1.0)/@pageSize) FROM dbo.Student

?

  1. 事务:

  2. SqlHelper输出参数-存储过程:

时间: 2024-10-29 13:56:43

4.sql进阶02(知识点)的相关文章

【SQL进阶】03.执行计划之旅1 - 初探

听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL

分享《SQL进阶教程》高清中文PDF+源代码

下载:https://pan.baidu.com/s/11-MnDu0khzwO4tiJqHznnA <SQL进阶教程>高清中文PDF+源代码 下载:https://pan.baidu.com/s/1a-JepzWU77yH0IUfBiLPPw <SQL基础教程(第2版)>高清中文PDF+示例程序+习题答案 更多分享资料:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA <SQL进阶教程>高清中文PDF+源代码+MICK (

《SQL必知必会(第4版)》中英文PDF及代码+《SQL进阶教程》中文PDF及代码 (学习总结)

下载:https://pan.baidu.com/s/1hRb-TS_R-0fnXPodS5OoDg <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 下载:https://pan.baidu.com/s/11-MnDu0khzwO4tiJqHznnA <SQL进阶教程>高清中文PDF+源代码 <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 高清中文PDF,258页,带书签目录,文字可以复制粘贴:高清英文PDF,497页,带书签目录,文

《SQL进阶教程》

例题: 注意,最后必须写上ELSE语句. 在刚开始介绍 CASE 表达式的时候我们就已经了解到,如果 CASE 表达式里没有明 确指定 ELSE 子句,执行结果会被默认地处理成 ELSE NULL .现在 大家明白笔者最开始强调使用 CASE 表达式时要习惯性地写上 ELSE 子句的理由了吧? 练习题: 去重: <SQL进阶教程> 原文地址:https://www.cnblogs.com/JasonPeng1/p/12110109.html

springBoot进阶02

SpringBoot进阶02 1. 日志的使用 1.1 基本使用 /** * 获取日志记录器 */ Logger logger = LoggerFactory.getLogger(this.getClass()); @RequestMapping("/hello") @ResponseBody public String sayHello(){ //日志级别 trace<debug<info<warn<error logger.trace("trace

3.sql进阶文档(知识点)

CASE 在数据库中,对数据进行比对, 两种用法 第一种,不对任何列进行case 条件判断 SELECT Sid,English AS en, CASE WHEN English >=60 THEN '及格' WHEN English <60 THEN '不及格' END AS jige FROM dbo.Score 从case开始:开始判断,判断什么?不知道,,当when开始的时候才知道判断什么东西 ? 如果在判断一个列的值的时候,满足多个条件(when),就先满足谁就执行谁 类洗浴c#中的

二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)

一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希望大家达到:1.使用各种if语句2.使用循环语句3.使用控制语句——goto和null(goto语句不推荐使用): 二.条件分支语句pl/sql中提供了三种条件分支语句if—then,if–then–else,if–then–else if–then.这里我们可以和java语句进行一个比较. 1).

SQL进阶系列之7用SQL进行集合运算

写在前面 集合论是SQL语言的根基,因为这种特性,SQL也被称为面向集合语言 导入篇:集合运算的几个注意事项 注意事项1:SQL能操作具有重复行的集合(multiset.bag),可以通过可选项ALL来支持 SQL的集合运算符提供了允许重复和不允许重复两种用法,UNION和INTERSECT结果里不会出现重复的行,UNION ALL则会保留重复行:ALL的作用和SELECT子句中的DISTINCT相反.ALL有助于优化查询性能,这是因为使用ALL后不再进行排序 注意事项2:集合运算符存在优先级

SQL进阶-(1)

--CASE函数用法-- --语法: --1.Case...end会生成一个新列,作用是判断你指定字段的值或者范围,然后得到一个用户自定义的对 应的值 --2.它并不会修改原始的表数据,而只是修改结果集的显示 --3.case可以做等值判断,也可以做范围判断. --4.做等值判断的语法: --case 字段或者表达式 --  when 具体的值 then '用户自定义值' --  else 上面的when都不满足就满足else --end --5.做等值判断的时候不能判断null值 select