# 分頁
# 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);