Android数据库,第三篇,(实战)

前言

前两篇主要讲解了一些理论,今天我们举一些简单的例子。全部上实例。

任务

学会举一反三。

Data Query Language 数据查询语言

情况一:先上表格,这是学生成绩表格。表的名称是STUDENT。

ID | SHUXUE | YUWEN | YINGYU | WULI | HUAXUE
----------| ---------- ---------- ---------- ---------- ----------
2006001 | 108 | 119 | 98 | 127 | 136
2006002 | 149 | 105 | 110 | 142 | 129
2006003 | 139 | 125 | 110 | 120 | 104
2006004 | 90 | 135 | 130 | 145 | 114

注意:数据库的查询语句是不区分大小写的。
查询所有学生的信息:
select * from STUDENT
查询学生的学号和对应的英语成绩:
select ID,YINGYU from student
过滤表中的重复数据:
select distinct YINGYU from student
在所有学生数学分数上加10分特长分
select shuxue+10 from student;
统计每个学生的总分:
select shuxue+yuwen+yingyu+wuli+huaxue from student;
或者
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE)as total from student;
使用别名表示学生分数:
select id, shuxue+yuwen+yingyu+wuli+huaxue 别名 from student;

下面是对比
select id, shuxue+yuwen+yingyu+wuli+huaxue zongfen from student;

ID | zongfen
-----|----- ----------
2006001 | 588
2006002 | 635
2006003 | 598
2006004 | 614
select id, shuxue+yuwen+yingyu+wuli+huaxue from student;

ID | shuxue+yuwen+yingyu+wuli+huaxue
---------|- -------------------------------
2006001 | 588
2006002 | 635
2006003 | 598
2006004 | 614

查询总分大于600分的所有同学 :
select * from student where(yuwen+shuxue+yingyu+wuli+huaxue)>600;
查询数学成绩在100-120之间的同学 :
select * from student where shuxue between 100 and 120;
对总分进行排序后输出,然后按照从高到底的顺序输出 :
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE ) from student order BY SHUXUE +YUWEN+YINGYU+WULI+HUAXUE DESC;
或者是:
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE ) AS TOTAL from student order BY TOTAL DESC;

情况二:表格如下所示:表格的名称是information

select * from information;

ID | PROJECT | FRACTION
-----|----- ---------- ----------
2001 | yingyu | 80
2001 | shuxue | 130
2001 | wuli | 130
2001 | yuwen | 110
2001 | huaxue | 123
2002 | yingyu | 123
2002 | yuwen | 110
2002 | huaxue | 123
2002 | shuxue | 123
2002 | wuli | 123

下面的操作主要使用 group by;
给出说有学生的总分:
select id,SUM(FRACTION)from information group by ID;
计算平均科目的平均分:
select id,sum(FRACTION)/count(*) from information group by ID ;
查询总分大于600的学生ID:
select id from information group by ID having SUM(FRACTION)>600;
查询平均成绩大于110的学生ID:
select id from information group by ID having SUM(FRACTION)/count(*) >115;

select * from information group by ID having avg(FRACTION)>115;
给出成绩全部在90分及以上的学生信息(包含ID、课程、分数):

思路:上面可以查询平均成绩大于110的学生的ID,那么我们根据上面的条件可以得到某个ID的所有成绩的最小值是否大于90,这样就可以得到所有满足条件的ID,然后根据ID作为条件,就能得出上面的值。
select * from information where ID in (select ID from information group by ID having min(FRACTION)>=90);
思路2:得到成绩小于90的学生的ID,得到了学生的ID,我们就利用not in 语法。得到满足条件的ID,根据ID作为条件得到上面的值。
select * from information where ID not in(select distinct ID from information where FRACTION < 90);

查询出该班级里不同科目人数的总数:
select PROJECT ,count(id) from information group by PROJECT;
查询出ID是“20”开头学生中平均成绩大于115分的学生信息
select * from information where ID IN (select ID from information where ID like '20%' group by ID having avg(FRACTION)>115);

上面的例子基本概括的大部分的实战的例子。谁还有需要解决的问题可以在下面留言。。。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,256评论 0 7
  • 50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna...
    最美的太阳WW阅读 3,240评论 0 23
  • (一)Oracle数据库 1.oracle中row_id理解 ORACLE的row_id是一个伪列,其个是为18个...
    独云阅读 5,678评论 0 10
  • 亲爱的兜, 如果说昨天的你那么勤快那么体贴如同春分拂面,让我和爸爸乐在其中的话,那今早QQ群里来自你们老师对你赤裸...
    蔡新花阅读 228评论 2 10
  • 栈是一种后进先出的数据结构,它只限定为只能在一端进行插入和删除操作。 比如说有一个小桶,它的直径只能放一个小球,我...
    进击的猫阅读 339评论 0 0