單表查詢
①查詢所有 *
mysql> select * from student;
②查詢選中字段記錄
mysql> select s_name from student;
③條件查詢 where
mysql> select s_name from student where s_id<5;
④查詢后為字段重命名 as
mysql> select s_name as 名字 from student;
⑤模糊查詢 like
%匹配多個字符
mysql> select s_name as 姓名 from student where s_name like '李%';
_匹配一個字符
mysql> select s_name as 姓名 from student where s_name like '李_';
mysql> select s_name as 姓名 from student where s_name like '李__';
⑥排序(默認升序) order by 以某個字段為主進行排序
升序 asc (asc可以不寫)
mysql> select * from student order by sc_id asc;
降序 desc
mysql> select * from student order by sc_id desc;
⑦限制顯示數據數量 limit
limit 只接一個數字n時表示顯示前面n行
mysql> select * from student limit 5;
limit 接兩個數字m,n時表示顯示第m行之后的n行
mysql> select * from student limit 2,4;
⑧常用聚合函數
mysql> select * from details;
最大值 max
mysql> select max(age) from details;
最小值 min
mysql> select min(age) from details;
求和 sum
mysql> select sum(age) from details;
平均值 avg
mysql> select avg(age) from details;
四舍五入 round
mysql> select round(avg(age)) from details;
統計 count
mysql> select count(address) from details;
⑨分組查詢 group by 篩選條件使用having,having后接條件必須是select后存在的字段
mysql> select age,count(age) from details group by age having age>30;
以age為組統計每個age的人數最后篩選出age大於30的
2、子查詢 也叫嵌套查詢
mysql> select * from details where age>(select avg(age) from details);
查詢所有age大於平均年齡的信息
3、關聯查詢
①內連接 inner join
無條件內連接 又稱笛卡爾連接
mysql> select * from student inner join college;
有條件內連接 在無條件基礎上on接條件
mysql> select * from student inner join college on sc_id=c_id;
②外連接
左外連接 left join
以左表為基准,右表沒有對應數據以null填充,多余數據去除
mysql> select * from tb1 left join tb2 on id=t_id;
mysql> select * from tb2 left join tb1 on id=t_id;
右外連接 right join
以右表為基准,左表沒有對應數據以null填充,多余數據去除
mysql> select * from tb1 right join tb2 on id=t_id;
mysql> select * from tb2 right join tb1 on id=t_id;
派生表必須命名 as
mysql> select * from (select * from details where age>30) as a left join student on d_id=s_id;