zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Docker Private Registry
    Dockerfile
    docker存储卷
    392. 判断子序列
    1576. 替换所有的问号
    270. 最接近的二叉搜索树值
    292. Nim 游戏
    680. 验证回文字符串 Ⅱ
    876. 链表的中间结点
    543. 二叉树的直径
  • 原文地址:https://www.cnblogs.com/woge/p/4195482.html
Copyright © 2011-2022 走看看