数据库MySQL(课下作业,必做)

题目要求:

  1. 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截图
  2. 编写程序,查询世界上超过“你学号前边七位并把最后一位家到最高位,最高位为0时置1”(比如学号20165201,超过3016520;学号20165208,超过1016520)的所有城市列表,提交运行结果截图
  3. 编写程序,查询世界上的所有中东国家的总人口
  4. 编写程序,查询世界上的平均寿命最长和最短的国家

实现步骤:

导入world.sql

  • 下载zip文件,解压后得到world.sql

  • 右键点击数据库,运行sql文件,选择sql文件,点击开始

  • 刷新数据库,发现导入world成功

任务一:查询人口超过1017530的所有城市列表

代码实现如下:

/**
* MysqlTest1
*
* @author Fomalhaut20175308
* @date 2019/4/29
*/ import java.sql.*; public class MysqlTest1 {
public static void main(String[] args) {
Connection con;
Statement sql;
ResultSet rs;
con = GetDBConnection.connectDB("world", "root", "**********");
if (con == null) {
return;
}
String sqlStr = "select*from city where population>1017530";
try {
sql = con.createStatement();
rs = sql.executeQuery(sqlStr);
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
String countryCode = rs.getString(3);
String district = rs.getString(4);
int population = rs.getInt(5);
System.out.printf("%d\t", id);
System.out.printf("%s\t", name);
System.out.printf("%s\t", countryCode);
System.out.printf("%s\t", district);
System.out.printf("%d\n", population);
}
con.close();
} catch (SQLException e) {
System.out.println("Error:" + e);
} }
}

关键解释:

  • 我们打开country表查看要返回的数据格式,建立int类型的id和population(或long类型),String类型的name、countryCode、district用来存储得到的信息
  • 对应着列索引调用rs.getXXXX()方法获得信息并输出

运行截图:



任务二:查询中东国家的总人口

代码实现如下:

/**
* MysqlTest2
*
* @author Fomalhaut20175308
* @date 2019/4/29
*/ import java.sql.*; public class MysqlTest2 {
public static void main(String[] args) {
Connection con;
Statement sql;
ResultSet rs;
con = GetDBConnection.connectDB("world", "root", "**********");
if (con == null) {
return;
}
String sqlStr = "select Name,Population from country where Region = 'Middle East'";
try {
sql = con.createStatement();
rs = sql.executeQuery(sqlStr);
int total = 0;
while (rs.next()) {
String name = rs.getString(1);
int population = rs.getInt(2);
System.out.printf("%s的人口为%d\n", name, population);
total += population;
}
System.out.println("中东国家的总人口为:" + total);
} catch (SQLException e) {
System.out.println("Error:" + e);
} }
}

关键解释:

  • 此任务要调查中东国家的总人口,我先分别输出了所有中东国家各自的人口数,最后输出总和。
  • 本任务中地区限定为中东,需要输出名字和人口数,因此只需在表中获得名字信息和人口数即可,sql语句为:String sqlStr = "select Name,Population from country where Region = 'Middle East'";
  • 根据sql语句,此次列索引只有两个,一个用来得到名字,一个用来得到人口数
  • 定义total用来得到总人口数,每查找到一个中东国家,就执行total += population;

运行截图:

任务三:查询世界上的平均寿命最长和最短的国家

代码实现如下:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* MysqlTest3
*
* @author Fomalhaut20175308
* @date 2019/4/30
*/
public class MysqlTest3 {
public static void main(String[] args) {
Connection con;
Statement sql;
ResultSet rs;
con = GetDBConnection.connectDB("world", "root", "************");
if (con == null) {
return;
}
String sqlStr = "select Name,LifeExpectancy from country order by LifeExpectancy";
try {
sql = con.createStatement();
rs = sql.executeQuery(sqlStr);
while (rs.next()) {
float life = rs.getInt(2);
String name = rs.getString(1);
rs.first();
while (life == 0) {
rs.next();
life = rs.getInt(2);
}
name = rs.getString(1);
System.out.println("世界上平均寿命最短的国家为:" + name);
rs.last();
name = rs.getString(1);
System.out.println("世界上平均寿命最长的国家为:" + name); }
} catch (SQLException e) {
System.out.println("Error:" + e);
}
}
}

关键解释:

  • 由于要查询寿命最长和最短的国家,因此一定要对表中信息进行排序,sql语句String sqlStr = "select Name,LifeExpectancy from country order by LifeExpectancy";将会查找按照LifeExpectancy排序后的列表
  • rs.first()rs.last()分别控制游标移动到表中第一位和最后一位
  • 在查找中发现,有数个国家的平均寿命值没有记录,会干扰实际有效值,因此需要添加循环语句,如果平均寿命为空继续向下找

运行截图:

任务总结

这次的任务完全针对数据库的操作,刚刚学完数据库的有关操作,这次的任务即可看作是一次对于学习内容的小测试,也是对于数据库相关知识的巩固练习。总体来说不是很难,掌握情况尚可。除了教材中的内容,这次任务第一次实地下载了sql文件进行操作,让我深感数据库功能强大。在任务进行中没有遇到什么大问题,类似寿命为空影响查找的情况在代码解释中已有提及,就不单列出阐述了。

数据库MySQL(课下作业,必做)的更多相关文章

  1. 20175221 曾祥杰 数据库MySQL(课下作业,必做)

    数据库MySQL(课下作业,必做) 题目要求: 1. 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB ...

  2. 20175314薛勐 数据库MySQL(课下作业,必做)

    数据库MySQL(课下作业,必做) 要求 下载附件中的world.sql.zip, 参考Intellj IDEA 简易教程:数据库,导入world.sql,提交导入成功截图 编写程序,查询世界上超过& ...

  3. 数据库MySQL(课下作业,必做) 20175225

    作业要求: 1.下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功 ...

  4. 学号20175313 《数据库MySQL(课下作业,必做)》第十周

    目录 一.题目要求 二.需求分析 三.关键代码以及运行结果截图 任务一 任务二 任务三 任务四 四.代码实现过程中遇到的问题及其解决方法 五.码云链接 六.心得体会 一.题目要求 下载附件中的worl ...

  5. 数据库MySQL(课下作业)

    一.作业要求 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截 ...

  6. MySQL课下作业

    目录 MySQL 实验内容 实验代码 实验截图 代码链接 MySQL 实验内容 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/63713 ...

  7. 20175221 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: - java MyCP -tx XXX1.txt XXX2 ...

  8. 20175333曹雅坤MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  9. ###20175311MyCP(课下作业,必做)

    MyCP(课下作业,必做) 作业题目 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

随机推荐

  1. 2018.10.20 bzoj2748: [HAOI2012]音量调节(背包)

    传送门 这题是不是太sbsbsb了一点. 难度直逼普及-. 直接背包判存在性就行了. 代码: #include<bits/stdc++.h> using namespace std; bo ...

  2. 2018.10.18 bzoj4105: [Thu Summer Camp 2015]平方运算(线段树)

    传送门 线段树妙题. 显然平方几次就会循环(打表证明不解释). 然后所有环长度的lcmlcmlcm不大于70. 因此维护一下当前区间中的节点是否全部在环上. 不是直接暴力到叶子节点修改. 否则整体打标 ...

  3. 2018.10.01 bzoj3237: [Ahoi2013]连通图(cdq分治+并查集)

    传送门 cdq分治好题. 对于一条边,如果加上它刚好连通的话,那么删掉它会有两个大集合A,B.于是我们先将B中禁用的边连上,把A中禁用的边禁用,再递归处理A:然后把A中禁用的边连上,把B中禁用的边禁用 ...

  4. Django入门与实践-第15章:用户注销(完结)

    # myproject/settings.py LOGOUT_REDIRECT_URL = 'home' http://127.0.0.1:8000/logout/ # myproject/urls. ...

  5. Exce行列变色

  6. 对于Serializable id类型的数据的测试

    今天编写了一个这样的例子,然后进行了Junit测试,但是发现类型总是不匹配,最后测出如下 public <T> void deleteEntry(Class<T> t, Ser ...

  7. WPF图形图像相关类

    BitmapMetadata类: 继承自抽象类ImageMetadata,包含图像的原数据信息,如相机型号.图像修改程序名称.拍照日期.拍照地点等.ImageSoure类包含ImageMetadata ...

  8. Asp.net mvc验证用户登录之Forms实现

    这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样. 第一步:创建asp.net mvc项目, 在项目的App_S ...

  9. angular2+ 初理解

    一.Angular Module     1.angular 模块是一个类,它需要NgModule这个装饰器函数接受一个原数据对象作为参数来描述这个模块类属性.     其中最重要的属性有:      ...

  10. HDU1237 简单计算器 2016-07-24 13:34 193人阅读 评论(0) 收藏

    简单计算器 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过 ...