2017-3-16 Tsql基础编程 存储过程 触发器 级联删除

1.定义变量:

  declare @变量名 数据类型

变量赋值:

  set @变量名 = 值; select @变量名 = 值;(常用)

取值打印:

  select @变量名        print @变量名

要执行变量赋值取值的时候代码要一起执行,不能分句执行:

declare @aa int ;
select @aa = 11;
select @aa;

打印结果:

2.分支语句:

  if @a>@b

  begin

  语句

  end

  else

  begin

    语句

  end

  declare @a int;
  declare @b int;
  select @a=1;
  select @b=2;
  if @a>@b
  begin
    select ‘a比b大‘;
  end
  else
  begin
    select ‘b比a大‘;
  end

输出结果:b比a大

3.循环语句:

  declare @a int ;

  select @a=1;

  while(@a<10)
  begin

   select @a

  end  

declare @aa int;--定义变量
select @aa=1;--赋值
while @aa<10
begin
select @aa;--打印
select @[email protected]+1;--给变量重新赋值
end

4.存储过程:

相当于函数,四要素,输入,输出,函数体,函数名

create proc jiafa --无返回值
@bb int, --第一个参数
@cc int --第二个参数
as
return @[email protected];

declare @bbb int; --定义一个变量接受和
exec @bbb = jiafa 10,20; --2个数相加
select @bbb; --打印结果

5.触发器

  一个特殊的存储过程,没办法调用它,而是通过增删改的动作来实现

  一个表的一个动作只能有一个触发器

格式:

  create trigger  哪个表的那个动作

  on 表名     ---- 针对于哪一个表写的触发器

  for 动作   ---- 针对于哪一个动作触发之后的触发器

或者  instead of  ---- 针对于哪一个动作执行替换

  as

    触发器内容 

  例子:

--1.  给score表创建触发器,删除内容之后自动查询表中剩余的内容

create trigger Score_delete
on score
for delete
as
select * from score

delete from score where sno=‘103‘

--2 给score表创建触发器,将要删除的内容替换成查询

create trigger score_delete
on score
instead of delete    ----instead of 将要删除的内容替换成as后面的语句
as
select * from score

delete from score where sno=‘105‘

--3 给score表建立触发器,将要删除的内容拦截,并将删除的内容展示出来

create trigger score_delete
on score
instead of delete
as
select * from deleted ---deleted拦截触发器的内容,将要删除课程号为105的内容给展示出来

delete from score where sno=‘105‘

--4 拦截删除的数据,并且进行提醒,不能删除

create trigger score_delete
on score
instead of delete
as
declare @aa nvarchar(50); --声明变量
select @aa = sno from deleted; --给变量赋值,将删除的sno赋值给变量
if @aa=‘105‘
begin
select ‘不能删除此数据‘ --如果是105提示此数据不能删除
end
else
begin
delete from score where [email protected]; --如果不是限制数据可以删除
end

delete from score where sno=‘105‘

6.级联删除

//创建2个表 用户表 班级表
create table Users
(
ids nvarchar(50) primary key,
Name nvarchar(50) ,
Class nvarchar(50)
)
create table Class
(
ClassCode nvarchar(50) primary key,
ClassName nvarchar(50)

)
insert into Class values(‘c001‘,‘一班‘)
insert into Class values(‘c002‘,‘二班‘)
insert into Class values(‘c003‘,‘三班‘)
insert into Class values(‘c004‘,‘四班‘)
insert into Users values(‘1‘,‘键盘‘,‘c001‘)
insert into Users values(‘2‘,‘鼠标‘,‘c002‘)
insert into Users values(‘3‘,‘李三‘,‘c003‘)
insert into Users values(‘4‘,‘赵四‘,‘c004‘)

//创建触发器---级联删除
create trigger Class_delete
on class
instead of delete
as
declare @aa nvarchar(50);
select @aa = classcode from class;
delete from users where [email protected];
delete from class where [email protected];
//这样用触发器就可以删除班级表中classcode中的004
delete from Class where ClassCode=‘c004‘
select * from Class

时间: 2024-10-26 10:37:36

2017-3-16 Tsql基础编程 存储过程 触发器 级联删除的相关文章

简单的TSQL基础编程格式

这里简单整理一下数据库简单的编程,变量定义,赋值,分支语句和循环(这里以Sqlserver) 首先是变量定义,赋值,分支语句 --======TSQL数据库基础编程,定义变量,赋值,分支语句============ declare @a int;-----定义一个int类型变量,declare关键词,变量前要用@符号 declare @b int; select @a=5;--------给变量赋值,此处用的select赋值 set @b=2;-----------也可用set赋值 if @a>

2017.07.16 Python网络编程之在套接字服务器中使用ThreadingMixIn

直接上代码,之后再解释: # -*- coding: UTF-8 -*-# 或许基于某些原因你不想编写基于进程的应用程序,而更愿意编写多线程应用程序# 和之前的基于ForkingMixIn的套接字服务器一样,使用ThreadingMixIn编写的套接字服务器要遵循相同的回显服务器编程模式# ThreadedServr继承自TCPServer和ThreadingMixIn,客户端连接这个多线程版服务器时,会创建一个新线程# !usr/bin/env python# Python Network P

2017/05/16 java 基础 随笔

1,成员变量和局部变量的区别 1)在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 2)初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,然后才能调用. 2.封装 private:被修饰的成员只能在本类中被访问 Class Ensultation { new Person().age=10; 不是本类报错 } Class Person{ private int age: } priva

表连接、Tsql基本编程和存储过程

表连接:将多个表的数据一次性查询出来,共同显示 子查询方式:select 列名1,列名1,(select 列名2 from 表名2 where 表名2.共同列名=表名1.共同列名) from 表名1 -- .就是的意思 笛卡尔积:有点像穷举select 列名1,列名2 from 表名1,表名2 --把第一个表的数据挨个拿出来跟第二个表所有数据进行对比一下,得出来是两个表数量的相乘where 表名2.共同列名=表名1.共同列名 join on:select 列名1,列名2 from 表名1 joi

表连接、TSQL基本编程、存储过程

表连接:将多个表的数据一次性查询出来,共同显示 子查询方式: select (select 列 from 名where 名.列 = 名.列)列 from 名 笛卡尔积: select 列,列from 名,名 where 名.列 =名.列 join on: seect 列,列 from 名 join 名 on 名.列=名.列 inner join on ;left join on;左表中右表没有的显示完整right join on ;右表中左表没有的显示完整 注意:必须添加where条件或on后面

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语

T-SQL基础函数

T-SQL基础函数 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描述. 函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一种. 加密函数 支持加密.解密.数字签名和数字签名验证. 游标函数 返回有

SQL Server2012 T-SQL基础教程--读书笔记

SQL Server2012 T-SQL基础教程--读书笔记 SqlServer Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的完整性 1.3.1 创建表 1.3.2 定义数据的完整性 1. 主键约束 2. 唯一约束 3. 外键束约 4. CHECK约束 5. 默认约束 Chapter 02 单表查询 2.1 SELECT 语句元素 2.1.7 TOP和OFFSET-FETCH 1. TOP筛选 2. OFFSET-FETCH 2.1.8 开窗函数速览 2.2 谓词

【T-SQL基础】02.联接查询

概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [T-SQL基础]09.可编程对象 本篇主要是对多表查询基础的总结. 查询语句的FROM字句在逻辑上是第一条要处理的字句,在FROM