資料庫基礎知識總結(轉)

iSQlServer發表於2010-09-01

資料庫基礎知識:
(1)關聯查詢
    1)橫向關聯查詢:
     a、inner join:內關聯,只組合資料表中匹配項相等的行。 select * from tbl inner join tb2 on tb1.id=tb2.id
     b、left join:左關聯,以左面所關聯表為基準,左面記錄全部顯示,右面表中不能匹配上的補null。
     c、right join:左關聯,以右面所關聯表為基準,右面記錄全部顯示,左面表中不能匹配上的補null
     d、full join: 左關聯 + 有關聯(兩個表中的記錄相加),不匹配的全部顯示
     e、cross join: 左關聯 * 右關聯(兩個表中的記錄相乘),不需要條件(不要加on)
        注:cross join可用在統計資料中,為每行記錄新增小計,
 如:declare @cnt int
     set @cnt=5 
     select * from tb inner join select @cnt
    2)縱向關聯查詢:
       union all:
       例如:
       declare @tb table(id int primary key identity(1,1),name nvarchar(10),salary decimal(10,2))
       insert @tb select 'aa',120.5
       union all 'bb',455.12
       union all 'cc',500.5
       注:新增資料時,去掉all,會去掉新增記錄中重複的記錄。
    3)巢狀子查詢:關鍵字  in  exists-----(去掉重複記錄)
       in(資料集合)
       例如:
       select * from so where soid in(selet soid from sod where prodid=1) ---查詢所有購買了產品1的訂單

       exists(資料集合)
       select * from so a where exists(select soid from sod b where a.soid=b.soid and b.prodid=1)
       注:exists 使用過程中,資料集合中查詢的表要和外面的表相關聯,如sod和so的關聯。
    4)T-SQL語句:case when ------相當與程式語言中的swith語句
       例如:
       declare @cnt int
       set @cnt=2

       case @cnt
       when 1 then '結果等於1'
       when 2 then '結果等於2'
       else '不知道' end

       -------另一種書寫方式-----
       case when @cnt=1 then '結果等於1'
            when @cnt=2 then '結果等於2'
       else '不知道' end

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-672326/,如需轉載,請註明出處,否則將追究法律責任。

相關文章