美文网首页
数据库总结

数据库总结

作者: 木的3次方 | 来源:发表于2017-04-27 15:15 被阅读0次

    1.数据库三大范式
      1NF:所有属性和属性值不可再分
    2NF:在满足1NF的基础上,所有非主属性完全依赖于全部的主键属性,而非依赖于部分主键属性
      3NF:在满足第二范式的基础上,非主属性间接依赖与主属性,存在传递依赖的关系。
    2.存储过程
      存储过程是为了完成一组特定功能的用户自定义的一系列SQL语句,存储在数据库,经过一次编译后,以后再次调用将不在编译。由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。有局部变量参数,可传入参数,可以返回值。
    基本语法形式:

    CREATE proc | procedure procedure_name
        [{@参数数据类型} [=默认值] [output],
         {@参数数据类型} [=默认值] [output],
         ....
        ]
    as
        SQL_statements
    go
    exec procedure_name
    
    -------------创建名为GetUserAccount的存储过程----------------
    
    create Procedure GetUserAccountRe1
    @UserName nchar(20),
    @UserID int output
    as
    if(@UserName>5)
    select @UserID=COUNT(*) from UserAccount where UserID>25
    else
    set @UserID=1000
    return @@rowcount
    go
    
    -------------执行上面的存储过程----------------
    
    exec GetUserAccountRe1 '7',null
    
    1. 数据查询
      1.整个select语句的含义是,根据where子句的条件表达式,从from子句指定的基本表或视图中找出满足条件的元组,再按照select子句中的目标列表达式选出元组中的属性值形成结果表。
      2.指定别名,例如,select Sname Name,'Year of Birth:' BIRTH, 2004-age BIRTHDAY。
      3.模糊查询like的通配符表示,当字符集为ASCII时,一个汉字用两个表示,GBK时用一个表示,为了使通配符失去含义可加上 _ escape ''。
    2. where子句作用于基本表或视图,having 作用于元组,通常指group by 的分组。
    3. 在进行多表连接时,可以采用一种优化,先做条件表达式,选出符合条件的元祖形成一个中间关系,在做连接操作。
    4. order by不能在子查询的select语句中,只能出现在最终查询中。
    5. 相关子查询 找出每个学生超过他选修课平均成绩的课程号。
      select Sno,Cno from SC x where Grade >= (select AVE(Grade) from SC y where x.Sno = y.Sno);注意这个语句的执行过程:首先,从外查询中取出一个元组,将该元组的Sno传给内查询,然后内查询执行全表扫描,并统计Ave。接着外查询传入第二个元组,依次循环结束。
    6. 当子查询返回的结果不是一个单值,而是一个集合时,可使用ANY或者ALL谓语或者聚集函数,但聚集函数效率较高。

    相关文章

      网友评论

          本文标题:数据库总结

          本文链接:https://www.haomeiwen.com/subject/yyegzttx.html