首页 > 代码库 > SQL基础2

SQL基础2

子查询
独立子查询
相关子查询 in(sql) exists(sql)


连接查询
交叉连接 cross join 和 ,
内链接 inner join
外链接 left outer join
right outer join

笛卡儿积 on为筛选


视图 view
查询语句封装
create view 名字 创建
as
语句.....
alter view 名字 修改
as
语句.....
视图的优点 5张表 2个视图 可以分数据库用户视图权限 可以保证安全
视图是不存储数据的 如果在视图上创建了索引 那么索引视图会有数据
视图的查询不可排序 是无序的 排序就不是结果集了

 

TSql编程
--TSQL编程
--声明变量
declare @n int=1001
--赋值
set @n=100 第一种
select @n=@n+1 第二种
print @n

set @n = (select count(*) from tblStudent) 没问题
select @n=count(*) from tblStudent 没问题


set @n =(select tsAge from tblStudent) 当子查询会返回多个值得时候报错
select @count=tsAge from tblStudent 这种会把最后一个赋值给变量

事务
begin tran
declare @num int = 100
select * from TblStudent
if @num = 100
rollback
else
commit

存储过程
优:
执行速度快 -- 都是编译过的
允许模块化程序设计--类似方法复用
安全 -- 防止注入
减少网络流量--值传输存储过程的名字
缺点:
把过多业务逻辑放到数据库中了

xp sp 开头的为数据库系统的存储过程
执行存储过程 exec sp_database 执行存储过程

create procedure usp_AAA
@param int=0 参数
as
begin
select * from TblArea
end
exec usp_AAA


触发器
触发器是一种特殊类型的存储过程,不能传递参数 事件触发调用
inserted表与deleted表
inserted表 当Insert或者Update的时候会用到
deleted表 当Delete或者Update的时候会用到

After触发器 事后触发器
instead of触发器 替换触发器


create trigger tri_delete on TblClass
after delete
as
begin
--要将刚刚删除的记录,备份到另一个表中
insert into TblClassDelete
select tClassName,tClassDesc from deleted
end


delete TblClass where tClassId=2

select * from TblClass
select * from TblClassDelete

SQL基础2