【MySQL】数据库 -- select详解

select是数据库中很重要的语句;

语法:

select [distinct] *| {column1,column2,...} from tbl_name;

创建一张学生表来测试:

【MySQL】数据库 -- select详解_第1张图片

插入数据:

【MySQL】数据库 -- select详解_第2张图片

可以指定查询哪些列,比如:查询id,姓名,数学成绩:

【MySQL】数据库 -- select详解_第3张图片

查询所有:

【MySQL】数据库 -- select详解_第4张图片

distinct 如果结果中有完全相同的行,就去除重复行:

【MySQL】数据库 -- select详解_第5张图片

在select语句中可以使用表达式对查询的列进行运算

select语句中可以使用as起别名

select column as 别名 from 表;

实例:

1. 在所有学生分数上加上10分(查询所有学生的总分再加10分)

【MySQL】数据库 -- select详解_第6张图片

2.将所有行g的学生成绩增加60%(查询总分再增加60%):




select的where子句

使用where子句,进行查询过滤。

在where子句中经常使用的运算符:

【MySQL】数据库 -- select详解_第7张图片

查询姓y的学生的成绩:

【MySQL】数据库 -- select详解_第8张图片

查询英语成绩大于80分的同学:

【MySQL】数据库 -- select详解_第9张图片

查询总分大于250分的所有同学:

【MySQL】数据库 -- select详解_第10张图片

查询姓a并且成id大于5的学生:

【MySQL】数据库 -- select详解_第11张图片

查询英语成绩大于语文成绩的同学:

【MySQL】数据库 -- select详解_第12张图片

查询总分大于200分并且数学成绩小于语文成绩的姓l的学生:

【MySQL】数据库 -- select详解_第13张图片

查询英语分数在90 - 99 之间的同学:

【MySQL】数据库 -- select详解_第14张图片

查询数学成绩为88,99的同学:

【MySQL】数据库 -- select详解_第15张图片

select的order by 子句

order by子句排序查询结果:

select column1,column2,... from table order by column asc|desc,...;
order by 指定排序的列,排序的列可以使表中的列名,也可以是select语句后指定的别名
asc升序(默认),desc降序

order by 子句应该位于select语句的结尾

实例:

对数学成绩进行排序:

【MySQL】数据库 -- select详解_第16张图片

对总分进行排序后,按从高到低输出:

【MySQL】数据库 -- select详解_第17张图片

对c的学生按成绩进行从低到高排序:

【MySQL】数据库 -- select详解_第18张图片



count

count(列名)返回某一列,行的总数:

select count(*)|count(列名) from tbl_name where condition

实例:

统计一个班级共有多少学生:

【MySQL】数据库 -- select详解_第19张图片

统计数学成绩大于等于88的学生有多少人:

【MySQL】数据库 -- select详解_第20张图片

统计总分大于250的人数有多少

【MySQL】数据库 -- select详解_第21张图片

说明:count(*)会统计一共的记录数,count(列名)会排除为null的情况!



sum

sum函数返回满足where条件的行的和

select sum(列名) {,sum(列名)...} from tbl_name [where condition]

实例:

统计一个班级数学总成绩:

【MySQL】数据库 -- select详解_第22张图片

统计一个班级语文,英语,数学各科的总成绩:

【MySQL】数据库 -- select详解_第23张图片

统计一个班级数学成绩平均分:


注意:sum仅对数值起作用,否则结果无意义。



avg

agv函数返回满足where条件的一列的平均值:

select avg(列名) [,avg(列名),...] from tbl_name [where condition];

实例:

求一个班级的数学平均分:

【MySQL】数据库 -- select详解_第24张图片

max/min

max/min函数返回满足where条件的一列的最大/最小值:

select max(列名) from tbl_name [where condition]

实例:

求班级最高和最低分:

【MySQL】数据库 -- select详解_第25张图片



group by子句的使用

group by 子句对列进行分组

select column1, column2, .. from table group by column;
为了讲清楚分组,创建一个雇员信息表(来自oracle 9i的经典测试表)
1. EMP员工表
2. DEPT部门表
3. SALGRADE工资等级表
示例:
【MySQL】数据库 -- select详解_第26张图片

如何显示每个部门的平均工资和最高工资:

【MySQL】数据库 -- select详解_第27张图片

显示每个部门的每种岗位的平均工资和最低工资:

【MySQL】数据库 -- select详解_第28张图片

说明:首先按照deptno分组,然后各组再按照job进行分组。
显示平均工资低于2000的部门和它的平均工资
解题思路:
1. 统计各个部门的平均工资
select avg(sal) from EMP group by deptno

2. having往往和group by配合使用,对group by结果进行过滤

【MySQL】数据库 -- select详解_第29张图片

以上便是对数据库select的一些总结,select语句在数据库中占有非常重要的地位,希望这次总结对大家有帮助!




你可能感兴趣的:(数据库)