zoukankan      html  css  js  c++  java
  • sql 复习知识大全2

      1 --触发器trigger
      2 disable trigger tri_t1 on database --禁用触发器   
      3 enable trigger tri_t1 on database --开启触发器 
      4 
      5 use ReviewDatabase
      6 go
      7 --1.For
      8 create trigger tri_t1       --修改触发器时,可以将create改为alter,再修改相应语句
      9 on dbo.t1                   --可以是视图
     10 --with encryption           --表进行加密(可省)
     11 for insert,update,delete    --阻止删除时,可以用ROLLBACK回滚 
     12 --not for replication       --表明当复制处理修改与触发器相关联的表时,触发器不能被执行(可省)
     13 as
     14    select * from t1,t2 where t1.id2=t2.id2   
     15 go
     16 
     17 drop trigger tri_t1         --删除触发器
     18 --2.after 和for一样  先会检测约束,这里会报错
     19 use ReviewDatabase
     20 go
     21 create trigger tri_t2
     22 on dbo.t2
     23 after insert,update,delete
     24 as
     25 begin
     26    select * from inserted
     27    select * from updated
     28    select * from deleted
     29 end
     30 
     31 insert t2(id1,id2) values(9,9)--这里会报错
     32 drop trigger tri_t2
     33 --2.after of --先会执行触发器再检测约束
     34 use ReviewDatabase
     35 go
     36 alter trigger tri_t2_of
     37 on dbo.t2
     38 after insert,update,delete
     39 as
     40 begin
     41    print 'inserted'
     42    select * from inserted   
     43    print 'deleted'
     44    select * from deleted
     45 end
     46 
     47 delete t2 where id1=9
     48 insert t2(id1,id2) values(9,9)
     49 update t2 set id3=10 where id1=9
     50 
     51 select * from t2 where id1=9
     52 /*-----------------------------------------------------------------------------------------------------*/
     53 --视图
     54 use ReviewDatabase
     55 go
     56 create view vi_t2
     57 with encryption 
     58 as 
     59   select * from t1
     60 go
     61 select * from vi_t2
     62 drop view vi_t2
     63 /*-----------------------------------------------------------------------------------------------------*/
     64 --储存过程procedure
     65 --常用系统存储过程有
     66 exec sp_databases; --查看数据库
     67 exec sp_tables;--查看表
     68 exec sp_columns t2;--查看列
     69 exec sp_helpIndex t1;--查看索引
     70 exec sp_helpConstraint t2;--约束
     71 exec sp_stored_procedures;
     72 exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
     73 exec sp_rename t1, stuInfo;--修改表、索引、列的名称
     74 exec sp_renamedb myTempDB, myDB;--更改数据库名称
     75 exec sp_defaultdb 'master''myDB';--更改登录名的默认数据库
     76 exec sp_helpdb;--数据库帮助,查询数据库信息
     77 exec sp_helpdb ReviewDatabase;--查询数据库信息
     78 
     79 --表重命名
     80 exec sp_rename 'test_sub''stu';
     81 select * from test_sub;
     82 --列重命名
     83 exec sp_rename 'stud.name''sName''column';
     84 exec sp_help 'stud';
     85 --重命名索引
     86 exec sp_rename N't1.idx_cid', N'idx_cidd', N'index';
     87 exec sp_help 't1';
     88 --查询所有存储过程
     89 select * from sys.objects where type = 'P';select * from sys.objects where type_desc like '%pro%' and name like 'sp%';
     90 
     91 --自定义存储过程
     92 --1、 创建语法
     93 /*
     94 create proc | procedure pro_name
     95     [{@参数数据类型} [=默认值] [output],
     96      {@参数数据类型} [=默认值] [output],
     97      ....
     98     ]
     99 as
    100     SQL_语句
    101 */
    102 --2、 创建不带参数存储过程 
    103 --创建存储过程
    104 if (exists (select * from sys.objects where name = 'proc_get_t1'))
    105     drop proc proc_get_t1
    106 go
    107 create proc proc_get_t1
    108 as
    109     select * from t1;
    110 --调用、执行存储过程
    111 exec proc_get_t1;
    112 
    113 --3、 修改存储过程 
    114 --修改存储过程
    115 alter proc proc_get_t1
    116 as
    117 select * from t1;
    118 
    119 --4、 带参存储过程 
    120 --带参存储过程
    121 if (object_id('proc_find_stu''P'is not null)
    122     drop proc proc_find_t1
    123 go
    124 create proc proc_find_t1(@startId int@endId int)
    125 as
    126     select * from t1 where id1 between @startId and @endId
    127 go
    128 
    129 exec proc_find_t1 24--不可以打乱顺序
    130 exec proc_find_t1 @startId=2,@endId=4 --可以打乱顺序
    131 
    132 --5、 带通配符参数存储过程 
    133 --带通配符参数存储过程
    134 if (object_id('proc_findStudentByName''P'is not null)
    135     drop proc proc_findt1ByName
    136 go
    137 create proc proc_findt1ByName(@name varchar(10= '%j%')
    138 as
    139     select * from t1 where name like @name;
    140 go
    141 
    142 exec proc_findt1ByName;
    143 exec proc_findt1ByName '%a%';
    144 
    145 --6、 带输出参数存储过程 
    146 if (object_id('proc_gett1Record''P'is not null)
    147     drop proc proc_gett1Record
    148 go
    149 create proc proc_gett1Record(
    150     @id1 int--默认输入参数
    151     @id2 int out, --输出参数
    152     @id3 int output--输入输出参数
    153 )
    154 as
    155     update t1 set id2 = @id2, id3 = @id3 where id1 = @id1;
    156     set @id2=@id2+1
    157     set @id3=@id3+1
    158 go
    159 
    160 declare @id1 int=18,@id2 int,@id3 int;
    161 set @id2 = 18
    162 select @id3 = 18;
    163 exec proc_gett1Record @id1@id2 out, @id3 output;
    164 select @id2@id3;
    165 print @id2 + ' ' + @id3;
    166 
    167 
    168 --7、 不缓存存储过程 
    169 --WITH RECOMPILE 不缓存
    170 if (object_id('proc_temp''P'is not null)
    171     drop proc proc_temp
    172 go
    173 create proc proc_temp
    174 with recompile
    175 as
    176     select * from t1;
    177 go
    178 
    179 exec proc_temp;
    180 
    181 --8、 加密存储过程 
    182 --加密WITH ENCRYPTION 
    183 if (object_id('proc_temp_encryption''P'is not null)
    184     drop proc proc_temp_encryption
    185 go
    186 create proc proc_temp_encryption
    187 with encryption
    188 as
    189     select * from t1;
    190 go
    191 
    192 exec proc_temp_encryption;
    193 exec sp_helptext 'proc_temp';
    194 exec sp_helptext 'proc_temp_encryption';
    195 
    196 --9、 带游标参数存储过程 
    197 if (object_id('proc_cursor''P'is not null)
    198     drop proc proc_cursor
    199 go
    200 create proc proc_cursor
    201     @cur cursor varying output
    202 as
    203     set @cur = cursor forward_only static for
    204     select id1, id2, id3 from t1;
    205     open @cur;
    206 go
    207 --调用
    208 declare @exec_cur cursor;
    209 declare @id1 int,
    210         @id2 int,
    211         @id3 int;
    212 exec proc_cursor @cur = @exec_cur output;--调用存储过程
    213 fetch next from @exec_cur into @id1@id2@id3;
    214 while (@@fetch_status = 0)
    215 begin
    216     fetch next from @exec_cur into @id1@id2@id3;
    217     print @id1 + @id2 + @id3;
    218 end
    219 close @exec_cur;
    220 deallocate @exec_cur;--删除游标
  • 相关阅读:
    Android weight属性详解
    设计模式(一)__单例设计模式
    Java中线程的生命周期
    抽象类和接口
    SQL sever 怎样将DBF文件导入到数据库
    JS去除字符串中空格,及常用正则表达式
    Oracle 11g问题1:关于error:ORA12541: TNS: 没有监听器
    access、excel取随机n条记录
    tsql字符串操作
    测试SQL Server执行时间和CPU时间
  • 原文地址:https://www.cnblogs.com/zhouliuyi/p/2557453.html
Copyright © 2011-2022 走看看