【Mysql】 分頁查詢及鏈接查詢以及自關聯

 

# 分頁
   # limit start ,count
   # 查詢前5個數據
   # 查詢id 6-10(包含)的 順序
   # 每頁顯示兩個,
  
   # 查詢只顯示前兩個
   select * from students where gender=1 limit 2;

   # 截止和結束
   #  select * from students where gender=1 查詢到的數據 從第3個開始顯示,顯示5個
   select * from students where gender=1 limit 2,5

   # 在sql語句裏面 limit放到最後
   
   # 查詢數據表中所有女性的信息,並按照身高從高到低排序,只顯示兩個
   select * from students where gender=2 order by height desc limit 0,2;

# 鏈接查詢
  # 用於兩個表
     # 內連接查詢 查詢的結果爲兩個表匹配的數據。
     # 右連接查詢 :查詢的結果爲兩個表匹配的數據,右表特有的數據,對於左表不存在數據使用null填充。
     # 左連接查詢 :查詢的結果爲兩個表匹配的數據,左表特有的數據,對於右表不存在的數據用null填充。
     # 語法 
     # select * from 表1 inner或left或right join 表2 on 表1.列=表2.列 
     select * from students inner join classes;
     
     select * from students inner join students.cls_id=classes.id;
     #  顯示結果
     # 1 小明  15  180.0 男 1  1 一班
     # 2 小紅  16  165.0 男 3  3 三班
   
     # 顯示students表格全部,classes表格只顯示班級
     select students.*,classes.name from students inner join students.cls_id=classes.id;

     # 給數據表起名字
     select s.name,c.name from students as s inner join classes as c on s.cls_id=c.id;

     
     # 查詢 有能夠對應班級的學生以及班級信息,顯示學生的所有信息,只顯示班級名稱
     select s.*,c.name from students as s inner join classes as c on s.cls_id=c.id;

     # 在以上的查詢中,將班級信息放到第一列
     select c.name,s.* from students as s inner join classes as c on s.cls_id=c.id;

     # 查詢 有能夠對應班級的學生以及班級信息,按照班級進行排序
     select c.name,s.* from students as s inner join classes as c on s.cls_id=c.id order by c.name;

     # 查詢 有能夠對應班級的學生以及班級信息,按照班級進行排序,班級一樣按照id排序
     select c.name,s.* from students as s inner join classes as c on s.cls_id=c.id order by c.name,s.id desc;

     # left join
     # 查詢每位學生對應的班級信息
     select * from students as s left join classes as c on s.cls_id=c.id;
     #  顯示結果 左邊表格全部顯示,右邊表格對應不上顯示null
     # 1 小明  15  180.0 男 1  1 一班
     # 2 小紅  16  165.0 男 3  3 三班 
     # 3 小藍  16  168.0 男 5  null null 
     
     select * from students as s left join classes as c on s.cls_id=c.id having c.id=null; 
     # 顯示結果爲
     #  3 小藍  16  168.0 男 5  null null 

     # right join  和 left join取反

     # 自關聯
     # 表格示例
     # id  atitle  p_id
     # 1   北京   null
     # 2   上海   null
     # 3   朝陽區  1
     # 4   海淀區  1
     # 5   浦東新區 2
     # 6   西城區   1
     
     # 查找表格裏面北京的區
     select * from areas where p_id=1;

     # 自關聯查詢
     select * from arear as province inner join areas as city on city.p_id=province.p_id having province.atitle="山東省";
     # 只顯示省份和城市名
     select province.atitle,city.atitle from area as province inner join areas as city on city.pid=province.p_id having province.atitle="山東省";
     
     # 子查詢
     # 查詢最高的男生信息
     select * from students where height = (select max(height) from students);
     
     # 列級子查詢
     # 查詢學生的班級號能夠對應的學生信息
     select * from students where cls_id in (select id from classes);
    
     
       
   





     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章