oracle數據庫的高級查詢方法 多表聯合查詢

  oracle查詢sql

    一,簡單查詢oracle

      order by 1,2spa

        select t.sno, t.sname, t.ssex from STUDENT t order by 1,2,3code

      group by 加強版it

        SELECT p.toma, p.ptype, SUM(p.lastcou) FROM product p GROUP BY rollup(p.toma, p.ptype)io

    二,高級查詢(多表鏈接查詢)ast

      笛卡爾積的概念:擴展

        所謂笛卡爾積,通俗點說就是指包含兩個集合中任意取出兩個元素構成的組合的集合。假設R中有元組M個,S中有元組N個,則R和S的笛卡select

        爾積中包含的元組數量就是M*N。這個規則能夠向多個關係擴展。rollup

      分類:

        內鏈接:select s.sname, r.cno,r.degree from student s, score r where s.sno=r.sno

        等值鏈接------用=的鏈接

        不等值鏈接

          外鏈接(啥也不寫就是內鏈接, 直接寫兩個表名)---左外鏈接, 右外鏈接

            select * from student s left outer join course c on s.sno=c.cno

            (+)修飾符的使用

              select s.sname, r.cno,r.degree from student s, score r where s.sno=r.sno(+)----等同於外鏈接的結果

            數據字典的使用

          自鏈接(本身騙一下本身):  select * from z_course c1, z_course c2 where c1.cour_code=c2.p_cour_code 

          層次查詢
            CONNECT BY PRIOR 鏈接條件 START WITH 開始條件

            select * from Z_COURSE t connect by prior t.cour_code=t.p_cour_code start with t.cour_name like '%國際%'

            僞列:

              level: 加上一列顯示級別

              select t.*, level from Z_COURSE t connect by prior t.cour_code=t.p_cour_code start with t.cour_name like '%國際%'

              rownum:加上一列行號

                select s.*, rownum from student s 

                使用rownum分頁

                  select * from (select s.*, rownum rn from student s where rownum<=10) t where t.rn>5

          子查詢(sql語句的執行順序)

            單行子查詢: 能夠用=號

            多行子查詢:不能夠用=號,能夠用 in

            exists關鍵字的使用: 是否存在

              select * from student t where exists(select 1 from student t1 where t1.sno=105)

相關文章
相關標籤/搜索