-- 创建数据库
CREATE DATABASE WORK;
-- 指定数据库
USE WORK;
/*
国家名称 地区 面积(万平方米) 人口 国民生产总值(美元)
name region area population gdp
中国 亚洲 960 1200000000 1002800000000
美国 北美洲 937 300000000 1752800000000
日本 亚洲 37 125000000 484600000000
德国 欧洲 35 81640000 379400000000
英国 欧洲 24 58800000 282800000000
巴西 南美 854 160000000 221600000000
*/
-- 创建表格
CREATE TABLE BBC(
NAME VARCHAR(20),
region VARCHAR(20),
AREA NUMERIC(3),
population NUMERIC(11),
gdp NUMERIC(20)
);
-- 删除数据库
DROP DATABASE work1;
INSERT INTO BBC VALUES('中国','亚洲',960,1200000000,1002800000000);
INSERT INTO BBC VALUES('美国','北美洲',937,300000000,1752800000000);
INSERT INTO BBC VALUES('日本','亚洲',37,125000000,484600000000);
INSERT INTO BBC VALUES('德国','欧洲',35,81640000,282800000000);
INSERT INTO BBC VALUES('英国','欧洲',35,81640000,379400000000);
INSERT INTO BBC VALUES('英国','欧洲',24,58800000,282800000000);
INSERT INTO BBC VALUES('巴西','南美',854,160000000,221600000000);
-- 删除
DELETE FROM BBC WHERE NAME !='日本';
/*
1 查询出所有国家的平均人口。平均GDP。
2 查询出人口最少的国家的人数。
3 查询出GDP最多的国家的GDP
4 查询出各大洲的国家有几个。人口总数是多少,总GDP是多少。
*/
/*
聚合函数:
Count 返回结果集的行数
Sum 求结果集的和
Avg 求结果集的平均值
Max 求结果集的最大值
Min 求结果值的最小值
*/
-- 第一小题
SELECT BBC.`name`, AVG(BBC.`population`) AS 平均人口 ,AVG(BBC.`gdp`) AS 平均GTP FROM BBC GROUP BY BBC.`name`;
-- 第二小题
SELECT bbc.`name`AS 国家, MIN(BBC.`population`) AS 最少人口的国家 FROM bbc WHERE bbc.`population`=58800000;
-- 第三题
SELECT bbc.`name`AS 国家,MAX(bbc.`gdp`) AS 最高GTP国家 FROM bbc WHERE bbc.`gdp`=1752800000000;
-- 第四题
SELECT * FROM bbc GROUP BY bbc.`region`;
-- =========================================================================================================================================
/*
主键 年份 诺贝尔奖项 得奖者 获奖国家
ID yr subject winner area
1 2000 java 张三 中国
2 2001 c++ 李四 中国
3 2002 c 王五 日本
4 2002 java 赵六 日本
5 2002 c 刘八 美国
6 2002 c++ 罗九 美国
7 2003 java 朱十 美国
8 2004 足球 陈十一 美国
9 2005 篮球 唐十二 美国
10 2006 乒乓球 隔壁老王 美国
*/
CREATE TABLE nobel(
ID INT PRIMARY KEY AUTO_INCREMENT,
yr NUMERIC(7),
SUBJECT VARCHAR(10),
winner VARCHAR(10),
AREA VARCHAR(10)
);
-- 删除数据表
DROP TABLE nobel;
-- 查询nobel
SELECT * FROM nobel;
/*
1 查询出每年颁发的诺贝尔奖的个数。
2 查询出得到诺贝尔奖个数超过2次的年份。
3 查询出各国,各年份获奖次数,并按获奖次数降序
4 查询出2002年之后获得奖项的国家.
*/
-- 加入数据
INSERT INTO nobel VALUES(NULL,2000,'java','张三','中国');
INSERT INTO nobel VALUES(NULL,2001,'c++','李四','中国');
INSERT INTO nobel VALUES(NULL,2002,'c','王五','日本');
INSERT INTO nobel VALUES(NULL,2002,'java','赵六','日本');
INSERT INTO nobel VALUES(NULL,2002,'c','刘八','美国');
INSERT INTO nobel VALUES(NULL,2002,'c++','罗九','美国');
INSERT INTO nobel VALUES(NULL,2003,'java','朱十','美国');
INSERT INTO nobel VALUES(NULL,2004,'足球','陈十一','美国');
INSERT INTO nobel VALUES(NULL,2005,'篮球','唐十二','美国');
INSERT INTO nobel VALUES(NULL,2006,'乒乓球','隔壁老王','美国');
-- 查询
SELECT * FROM nobel;
-- 题目一
SELECT COUNT(nobel.`ID`) AS 诺贝尔奖总数 FROM nobel;
-- 题目二
SELECT nobel.`yr` FROM nobel GROUP BY nobel.`yr` HAVING COUNT(nobel.`yr`)>1;
-- 题目 三
SELECT nobel.`area1` AS 国家 FROM nobel WHERE nobel.`yr`>2002;