SQL高级查询

来源:互联网 发布:ndk r10d mac 编辑:程序博客网 时间:2024/04/30 16:25

 

1、消除重复行:DISTINCT
2、限制结果集返回行数: TOP n (Percent)模式匹配
3、常见通配符:%(代表N个字符)_代表一个字符 ^代表非的意思,[]代表字符范围:例:1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
4、子查询:(not )int 、exist 、比较运算符(any all some) in 子查询只能返回一列数据.
5、常见聚合函数 sum avg max min count
6、group by 用于分组与聚合函数一起配合使用。
7、having 对分组进行筛选
8、排序:ORDER BY 升序(默认) ASC 降序(DESC)
9、INTO 将查询的结果创建到同一数据库下的另一个表中
Union 将两个或多个查询结果合并成一个结果
存储过程的理解:存放在数据库中的子程序
优点:1)在服务器端运行,执行速度快。
        2)执行一次后,以后的操作只需调用已经编译好的二进制代码执行,提高系统性能。
        3)确保数据库的安全。可以通过编程的方式控制数据库操作访问的权限。
        4)自动完成需预先执行的任务。
触发器的理解:一种特殊的存储过程,保护数据库数据的完整性,当操作影响到触发器佑护的数据时,自动执行。
例子:
Create Trigger truStudent
    On Student
    for Update   --触发器类型--Update

As
    if Update(StudentID)
    begin

    Update BorrowRecord
      Set br.StudentID=i.StudentID
      From BorrowRecord br , Deleted d ,Inserted i
      Where br.StudentID=d.StudentID

    end    
         
理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

对于2,创建一个Delete触发器
Create trigger trdStudent
      On Student
      for Delete

As
    Delete BorrowRecord
    From BorrowRecord br , Delted d
    Where br.StudentID=d.StudentID