查詢數值型數據:
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;