Sql语句之 单表查询
一.一般查询
1.查看表中的所有记录 以及 所有字段(属性)
语句 : select * from student;
2.只查看某些字段
语句:select sname,sex from student;
3.把查询出来的结果的字段名显示为其它名字
语句: select sname as ‘姓名’ , sage as ‘年龄’ from student;
4.在查询结果中添加一列,这一列的值为一个常量
语句:select sname,sex,’广州’ address from student;
5.把某些字段合并后显示出来(我先在表中添加了一个字段score,它的值为90)
语句: select sname,(sage+score) as ‘年龄加得分’ from student;
注意,合并的字段的数据类型必须一致。
6.把查询出来的结果的重复记录去掉
语句: select distinct score from student;
因为学生们的成绩都是90,去掉重复后,只显示一个记录。
条件查询
除了根据字段来查询,我们还可以通过设定某些条件来查询,得到自己想要的记录。
使用where关键字来设置条件;
1.单条件查询
查询名字为 Jax的学生的信息:
语句:select * from student where sname=’Jax’;
2.多条件查询
查询名字为JinX,并且年龄为18岁的学生信息:
语句: select * from student where sname=’JinX’ and sage=18;
查询名字为VN,或则EZ的学生的年龄。
语句:select sage from student where sname=’VN’ or sname=’EZ’;
3.范围查询
查询年龄在17到20岁的学生的信息。
语句:SELECT * FROM student WHERE sage BETWEEN 17 AND 20; -- 包前包后
4.判空查询
判空主要有两个:一.判断是否为null,二.判断是否为空字符串
判断是否为null: 语句 select * from student where score is not null;
select * from student where score null;
判断是否为空字符串: 语句 select * from student where sex<>’’; ------”<>”表示 “不等于”
Select * from student where sex=’’;
5.模糊查询
使用 like 关键字,”%”代表任意数量的字符,”_”代表占位符。
查询名字为J开头的学生的信息:
语句 :select * from student where sname like ‘J%’;
查询姓名里第二个字母为a的学生的信息
语句: select * from student where sname like ‘_a%’;
6.分页查询
分页查询主要用于查看第N条 到 第M条的信息,通常和排序查询一起使用。
使用limit关键字,第一个参数表示从条记录开始显示,第二个参数表示要显示的数目。
表中默认第一条记录的参数为0.
查询学生表中第二到第三条的信息:
语句 : select * from student limit 1,2;
7.查询后排序
查询后的见过按照某个字段来排序。
关键字:order by , asc:升序 , desc:降序
按照年龄的升序排序:
语句:select * from student order by sage asc;
8.聚合查询
如果我们需要对查询出来的结果进行求和,求平均值,求最大最小值,统计显示的数目等运算,我们就要用到聚合查询,
关键字:sum,avg,max,min,count
查询所有学生年龄的和: select sum(sage) from student ;
查询所有学生年龄的平均值:select avg(sage) from student;
查询年龄最大的学生的年龄: select max(sage) from student;
查询年龄最小的学生的年龄: select min(sage) from student;
统计表中学生的数目:select count(sname) from student;
9.分组查询
可以把查询出来的结果根据某个条件来分组显示
关键字:broup by
根据性别把学生分组:
Selete * from student group by sex;
-- 2.12 分组筛选查询
-- 需求: 查询哪些区的人数大于等于2个
-- 1)查询每个区的情况 2)添加条件
-- 预期结果: 广州天河 2
-- 注意:如果使用了group by,在分组基础上进行筛选要使用having关键字
SELECT address,COUNT(*) FROM student GROUP BY address HAVING COUNT(*)>=2;