SQL Server笔记

use bookManager
go
--1、视图:存在于数据库中的虚表,内容是由查询结果定义的
--将多个表中的有效字段放在一起合成的一个新表
--数据表有更新,视图也会更新,视图创建以后会伴随数据库一直存在直到删除为止
--创建视图
/*
create view View_reader_sex
as
    select * from reader,sex
    where reader.genderId = sex.id
    and sex.name = '男'
go
*/
--根据内容划分的视图,称为水平视图
--根据字段划分的视图,称为垂直视图
/*
create view View_reader_sex1
as
    select name_reader,sex.name from reader,sex
go
*/
--删除视图
--drop view View_reader_sex,View_reader_sex1

--2、存储过程:存储在数据库服务器端的一组T-SQL语句的集合,
--经过编译以后可以直接执行的SQL
--可以理解为SQL编写的函数
--创建存储过程
/*
create procedure Pro_reader
@Proc_sex char(2)
as
    select name_reader,sex.Name
    from reader,sex
    where reader.genderId = sex.id
    and sex.name = @Proc_sex
go
*/
--执行存储过程命令exec/execute
--execute Pro_reader '男'
--查看存储过程的代码
--sp_helptext 'Pro_reader'
--修改存储过程
/*
alter procedure Pro_reader
@Proc_sex int
as
    select name_reader,genderId
    from reader
    where reader.genderId = @Proc_sex
go
*/
--exec Pro_reader 2
--删除存储过程
--drop procedure Pro_reader

--3、触发器——一种自动执行的存储过程
--保存在数据库服务器端的,经过编译的一组特殊的SQL语句
--三类:
--1.DML触发器基于某一个表存在的(数据变化insert update delete)  
--DML触发器是基于数据表创建的
--2.DDL触发器(数据库管理create drop alter)
--3.登录触发器(限定登录IP地址,限定用户名)
--创建触发器
/*
create trigger T_DML_reader
on reader
after insert
as
    --数据库的错误提示,报警级别1-18
    raiserror('正在向数据表中插入一条数据',16,1);
go
*/
--删除触发器
--drop trigger T_DML_reader
--go
--insert into reader values(7,'金庸','台湾','12345',1,'[email protected]')
--DDL触发器
--触发器和约束共同组成了数据库的安全校验系统
--保证数据库数据的完整性包括约束和触发器
/*
if exists(select * from sys.triggers where
    name = 'T_DDL_database')
    drop trigger T_DDL_database on database
go
create trigger T_DDL_database
on database
for drop_table,alter_table
as
    print '只有T_DDL_database触发器无效时,才能删除或修改表'
    rollback;
go
*/
--drop table books

--4、游标:--复杂的存储过程中的一个特殊的结果集
--select * from reader
--静态游标:数据表数据变化后,结果集无变化的
--动态游标:结果集随着数据表变化的
--只进游标:顺序往后查询数据,无法返回
--键集驱动游标:数据顺序固定,无法改变
--游标的使用周期:声明、打开、查找、关闭、释放
--游标的作用:定位结果集中的某条数据,对当前位置的数据进行读写修改,对结果集中的某条数据进行单独操作
--是面向对象程序和数据库之间数据桥梁
/*
declare reader_cursor1 cursor scroll
for
    select * from reader
go
*/
--打开
--open reader_cursor1
--fetch next from reader_cursor1
--close reader_cursor1
--释放
--deallocate reader_cursor1

 

你可能感兴趣的:(SQL Server笔记)