多表查詢,子查詢,及查詢語句中語句執行的前後順序和特色

對多張表進行查詢操做
  查詢方式1:
    笛卡爾積查詢
      select * from 表1,表2;
      結果:讓表1中的每一條記錄和表2中每一條記錄一次組合
      表1 n條記錄
      表2 m條記錄
      最終查詢結果:n * m 條

    注意:
      1.觀察笛卡爾積查詢的最終結果,不少數據沒有實際做用
      2.查詢結果太多,對內存壓力大

  笛卡爾積查詢優化(內鏈接)
  加上條件
    隱式內鏈接
      select * from 表1,表2 where 表1.字段 = 表2.字段;

    顯示內鏈接語法
      select * from 表1 inner join 表2 on 條件;
        注意:內鏈接語法條件過濾時,使用的是 on 關鍵字
        例1:select * from kecheng,teacher where kecheng.teacherid = teacher.tid;
        例2:select * from kecheng inner join teacher on kecheng.teacherid = teacher.tid;mysql

  外連接(outer join)(誰在前面就先顯示哪一個表的數據)
    左外鏈接 ---- left outer join
      結果:
        以左表爲準,左表中的全部數據都有 + 右表中符合條件的數據(鏈接條件on和判斷條件where)
    右外鏈接 ---- right outer join
      結果:
        以右表爲準,右表中的全部數據都有 + 左表中符合條件的數據

  外鏈接和內鏈接的區別:
    1.內鏈接獲取的是嚴格符合條件的數據
    2.外鏈接獲取的是嚴格符合條件的數據 + 左表(left)/右表(right)中不符合條件的數據

子查詢:一個查詢的結果做爲另一個查詢的條件(一個查詢中包含另外一個查詢)
    必須保證查詢的結果爲一個具體的值!!!(做爲條件時)

難點:char與varchar的比較:
    相同點:兩者都是存儲文本(字符串)的
    不一樣點:
      1.數據聲明的長度範圍不一樣
        char --- 0 --- 255
        varchar --- 0 --- 65535
      拓展:varchar(10)
        長度:在mysql 4.0 以前表明的字節數
           在mysql 5.0 開始,表明字符數
      2.底層存儲格式不一樣
        char(10) ---- 'AB' ---- 'AB             '       (已經定義了長度了,就像數組同樣,你不用也有)
        varchar(10) ---- 'AB' ---- '2AB'             (有算法封裝了長度,你定義的長度是最大長度)
          A、varchar 空間分配更靈活
          B、雖然char可能浪費空間,可是效率高
            char 比 varchar 效率高
      3.何時使用 char? 何時使用 varchar?
        具體狀況具體分析
          用於固定格式的數據 char
          不肯定格式 varchar

語句查詢中的順序:
  select D_*
    from 表名
    where A_條件
    group by B_字段
    having C_條件
    order by E_字段;

    0、先執行from
    一、執行where後的A_條件
    二、執行group by的 B_字段,拆分紅子表
    三、執行having的C_條件,對子表進行篩選
    四、執行select的D_*,將子表合成一張表
    五、執行order by的E_字段,對4中的表進行排序(若是是用基礎屬性,就是按照符合條件的第一條的語句的基礎屬性在排序)

show create table 表名;
  顯示全部的建表信息(可用於查詢約束名等而後對約束進行操做)算法

limitsql

  select * from 表名 limit n, m;   用於顯示數據庫中從第(n+1)條數據開始的共m條語句數據庫

相關文章
相關標籤/搜索