SELECT <查询字段1,查询字段2 > FROM <表名>
ps:查询返回指定列(即查询字段1,2)的查询被称为投影查询
当查询表中所有数据时用:SELECT * FROM <表名>
如:
SELECT student_id FROM student;
SELECT * FROM student;
SELECT <查询字段1,查询字段2> FROM <表名> WHERE <条件表达式>
ps:
条件表达式可以用<条件1>AND <条件2> 来表示既要满足条件1也要满足条件2;
条件表达式可以用<条件1>OR<条件2>来表示满足条件1或者满足条件2;
条件表达式可以用NOT<条件>表示“不符合该条件的记录
要组合三个或者更多的条件需要用小括号()表示
常用的条件表达式:
score=80
name=‘abc’//字符串要用单引号括起来
score>(>=,<,<=)80
name>(>=,<,<=)‘abc’//字符串比较ASCII码
score<>80//NOT score=80即不相等
name<>'abc"
name LIKE ‘%ab%’//%表示任意字符,判断相似
如:
SELECT student_name
FROM student
WHERE student_gender='M' AND score>=80
SELECT *
FROM student
WHERE (score<80 OR score>90) AND gender ='M';
返回的数据通常是按照主键排序的,若要根据其他条件排序,可以用ORDER BY语句(默认排序是升序ASC,若要从高到低的倒序加上DESC即可)
如:
SELECT id,name,gender,score
FROM student
ORDER BY score DESC;
SELECT id,name,gender,score
FROM student
ORDER BY score DESC, gender;//表示先按score列倒序,如果有相同分数的再按gender列排序
另外ORDER BY 语句一般在WHERE语句的后面
如:
SELECT id,name,gender,score
FROM students
WHERE class_id =1
ORDER BY score DESC;
当查询数据量很大,可以通过分页的形式,将数据的显示量控制在一定数量之内,具体使用的代码为:
SELECT * FROM student
LIMIT OFFSET //M表示一页显示的记录条数,N表示从第几条记录开始显示
具体实例:
SELECT * FROM student
LIMIT 5 OFFSET 0;
即表示每五条一个表,从第一条数据(标号为0)开始
ps:OFFSET 是可选的,如果只写LIMIT 5就相当于LIMIT 5 OFFSET 0
使用LIMIT OFFSET 分页时,随着N的值越来越大,查询的效率也会越来越低
统计数据信息有时候不仅要看明细记录,有时候可能还要看其他有关数据的信息。如符合条件记录的总数、平均数、最大值等,这类查询被称为聚合查询,可用SQL语句实现。
1、查询有多少条记录:COUNT( )
SELECT COUNT(*) FROM student;
若要给查询的信息设置一个别名,可用以下语句,方便信息结果的理解。
SELECT COUNT(*) num FROM student;
2、查询某一列的合计值
SELECT SUM(student.score) sum_score FROM student;
3、查询某一列的平均值
SELECT AVG(student.score) avg_score FROM student;
4、计算某一列的最大值
SELECT MAX(student.score) max_score FROM student;
5、计算某一列的最小值
SELECT MIN(student.score) min_score FROM student;
ps:MAX()和MIN()不限于数值类型,若为字符类型,函数会返回排序最后和排序最前的字符
ps:一些SQL函数:
ROUND():四舍五入到一个正数或负数
CEILING():返回最小的整数
FLOOR():返回最大整数
针对聚合查询,为了拓宽SQL的功能,SQL还提供了分组聚合的功能,具体函数为GROUP BY…
SELECT COUNT(*) each_class_student_num FROM student GROUP BY class_id;
其函数原理是先对数据记录分组,再分别进行聚合函数的运算。此外还可以多列进行分组。
SELECT class_id,gender,COUNT(*) num FROM student GROUP BY class_id,gender;
这个语句能查询每个班的男女生的人数