mysql查詢語句大全與解析

查詢數值型數據:
 SELECT * FROM tb_name WHERE sum > 100;
 查詢謂詞:>,=,<,<>,!=,!>,!<,>=,<=,in(字段值) ,not  in(字段值)
 
查詢字符串
 SELECT * FROM tb_stu  WHERE sname  =  '小劉'
 SELECT * FROM tb_stu  WHERE sname like '劉%'
 SELECT * FROM tb_stu  WHERE sname like '%程序員'
 SELECT * FROM tb_stu  WHERE sname like '%PHP%'

查詢日期型數據
 SELECT * FROM tb_stu WHERE date = '2011-04-08'
 注:不同數據庫對日期型數據存在差異: :
 (1)MySQL:SELECT * from tb_name WHERE birthday = '2011-04-08'
 (2)SQL Server:SELECT * from tb_name WHERE birthday = '2011-04-08'
 (3)Access:SELECT * from tb_name WHERE birthday = #2011-04-08#
 
查詢邏輯型數據  and    or
select * from tb_student  where sname like '%李%'  and age in(18,20) and sex ='男'
 邏輯運算符:and  or 
 

 
查詢前0到10條記錄
 SELECT * FROM tb_name LIMIT 0,10;
 limit語句與其他語句,如order by等語句聯合使用,會使用SQL語句千變萬化,使程序非常靈活
 
查詢最後後10條記錄
 SELECT * FROM tb_stu ORDER BY id ASC LIMIT 10
 
 
查詢指定範圍的數據 between and
 SELECT  要查找的字段 FROM 表名 WHERE 字段名 BETWEEN 初始值 AND 終止值
 SELECT * FROM tb_stu WHERE age BETWEEN 0 AND 18
 


查詢結果去重

 

 SELECT DISTINCT 字段名 FROM 表名

 

select  distinct(sex)  from student

注:字段不能用*代替
 
 

查詢條數

//年齡等於19的學生總數

 SELECT  count(*)  FROM  student  WHERE age = '19'
 
排序
 SELECT 字段名 FROM tb_stu WHERE 條件 ORDER BY 字段 DESC 降序
 SELECT 字段名 FROM tb_stu WHERE 條件 ORDER BY 字段 ASC  升序

 

select * from sutdent order by age asc;

 

//先根據時間降序再根據價格升序排序
SELECT * FROM tb_name ORDER BY datetime DESC,price ASC

 注:對字段進行排序時若不指定排序方式,則默認爲ASC升序

 
having 的使用

#一般having配合group by分組 使用,先分組聚合後再判斷

//查平均分大於等於60的學生姓名和平均分

select  sname,avg(s_score)  from tb_student  group by sname having avg(s_score)>=60

 
 
對統計結果進行排序
 函數SUM(字段名) 可實現對字段的求和
 SELECT name,SUM(price)  as  sumprice  FROM tb_price GROUP BY name order by sumprice desc
 
 
分組 group by
 SELECT studentid,SUM(s_score)  AS  sscore,date FROM student  GROUP BY studentid   ORDER BY  sscore DESC
 注:當分組語句group by排序語句order by同時出現在SQL語句中時,要將分組語句group by 寫在排序語句order by的前面,否則會出現錯誤
 

多表查詢

 SELECT a.sname,avg(b.s_score) as avgPrice,sum(b.s_score) as sumPrice FROM student a ,score b where a.studentid=b.studentid group by b.studentid  order by avgPrice;

多表查詢--內聯 inner join  on

SELECT a.sname,avg(b.s_score) as avgPrice,sum(b.s_score) as sumPrice FROM student a inner join score b  on  a.studentid=b.studentid group by b.studentid  order by avgPrice;

 

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