title: SQL-Learning

date: 2019-03-12 20:37:21

tags: SQL

这是关于在一个SQL学习网站的练习题答案记录:SQL教程

SQL基础

由一些简单的查询开始

这里的默认表格为WORLD表格 。

name continent area population gdp
Afghanistan Asia 652230 25500100 20343000000
Albania Europe 28748 2831741 12960000000
Algeria Africa 2381741 37100000 188681000000
Andorra Europe 468 78115 3712000000
Angola Africa 1246700 20609294 100990000000
....

name:国家名称 continent:大洲 area:面积 population:人口 gdp:国内生产总值


SQL对大小写不敏感。

  1. 以显示德国德国的人口
SELECT population
FROM world
WHERE name = 'Germany'
  1. 查询面积为5,000,000以上平方公里的国家,对每个国家显示她的名字和人均国内生产总值gdp/population
SELECT name, gdp/population
FROM world
WHERE area > 5000000
  1. 查询“Ireland 爱尔兰”,“Iceland 冰岛”,“Denmark 丹麦”的国家名称和人口
SELECT name, population
FROM world
WHERE name IN ('Ireland', 'Iceland', 'Denmark');--IN 操作符允许我们在 WHERE 子句中规定多个值
  1. 面积为200,000及250,000之间的国家名称和该国面积
SELECT name, area
FROM world
WHERE area
BETWEEN 200000 AND 250000;
--操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SELECT国家名字

name continent
Afghanistan Asia
Albania Europe
Algeria Africa
Andorra Europe
Angola Africa
....

name:国家名称 continent:大洲


SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符

  1. 找出以Y为开首的国家
SELECT name
FROM world
WHERE name LIKE 'Y%'
--LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
  1. 找出以Y为结尾的国家
SELECT name
FROM world
WHERE name LIKE '%Y'
  1. 找出包含字母x的所有国家
SELECT name
FROM world
WHERE name
LIKE '%x%'
  1. 找出名字以land结尾的所有国家
SELECT name
FROM world
WHERE name
LIKE '%land'
  1. 查找以C开头,ia结尾的所有国家
SELECT name
FROM world
WHERE name
LIKE 'C%ia'
  1. 找出名字包含双oo的国家
SELECT name
FROM world
WHERE name
LIKE '%oo%'
  1. 找出名字包含三个或三个以上a的国家
SELECT name
FROM world
WHERE name
LIKE '%a%a%a%'
  1. 找出名字第二个字母为t的国家
SELECT name
FROM world
WHERE name
LIKE '_t%'
ORDER BY name
  1. 找出所有国家,其名字都有两个字母 o,被另外两个字母相隔着
SELECT name
FROM world
WHERE name
LIKE '%o__o%'

10 . 找出名字是4个字母的国家

SELECT name
FROM world
WHERE name
LIKE '____'
  1. 找出首都和国家名字相同的国家
SELECT name
FROM world
WHERE name = capital; --可以加空格
  1. “Mexico 墨西哥”的首都是”Mexico City”。找出所有国家名字,其首都是国家名字加上”City”。
SELECT name
FROM world
WHERE capital = concat(name,' City');--注意City前面的空格
  1. 找出所有首都和其国家名字,而首都要有国家名字中出現。
SELECT capital,name
FROM world
WHERE capital
LIKE concat('%',name,'%')
  1. 找出所有首都和其国家名字,而首都是国家名字的延伸。

    你愿显示 Mexico City,因它比其国家名字 Mexico 長。

    你不愿显示 Luxembourg,因它的首都和国家名相是相同的。
SELECT name,capital
FROM world
WHERE capital
LIKE concat(name,'%') --注意审题,国家名字的延伸,那么国家名字应该在最前面。
AND capital != name;--这里也可以用"<>"
  1. "Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville"

    顯示國家名字,及其延伸詞,如首都是國家名字的延伸

    你可以使用SQL函數 REPLACE 或 MID

    SELECT name,replace(capital, name, '')
    FROM world
    WHERE capital
    LIKE concat(name,'%_')
    /*replace函数定义
    replace(original-string,search-string,replace-string)
    original-string: 被搜索的字符串。可为任意长度。
    search-string: 要搜索并被 replace-string 替换的字符串。该字符串的长度不应超过 255 个字节。如果 search-string 是空字符串,则按原样返回原始字符串。
    replace-string: 该字符串用于替换 search-string。可为任意长度。如果 replacement-string 是空字符串,则删除出现的所有 search-string。
    说明
    用字符串表达式3替换字符串表达式1中出现的所有字符串表达式2的匹配项。返回新的字符串。
    如果有某个参数为 NULL,此函数返回 NULL。
    */

SQLZOO练习题之SELECT from WORLD Tutorial/zh

查询世界


name continent area population gdp
Afghanistan Asia 652230 25500100 20343000000
Albania Europe 28748 2831741 12960000000
Algeria Africa 2381741 37100000 188681000000
Andorra Europe 468 78115 3712000000
Angola Africa 1246700 20609294 100990000000
...

name:国家名称 continent:大洲 area:面积 population:人口 gdp:国内生产总值

**表格说明 **


  1. *查询大于2亿人口的国家。
SELECT name
FROM world
WHERE population>200000000;
  1. 查询大于2亿人口的国家,及国内生产总值
SELECT name,gdp/population
FROM world
WHERE population > 200000000;
  1. 查询在South America南美洲的国际爱和以百万为单位的人口數
SELECT name,population / 1000000
FROM world
WHERE continent = 'South America';--别忘记单引号,代表字符串
  1. 查询法国,德国,意大利(France, Germany, Italy)的国家名称和人口
SELECT name,population
FROM world
WHERE name in ('France', 'Germany', 'Italy')--别忘记单引号,代表字符串
  1. 查询包含单词“United”的国家
SELECT name
FROM world
WHERE name
LIKE '%United%';
  1. 查询大国(面积大于300万平方公里或者人口大于2.5亿)的名字,面积,人口
SELECT name,population,area
FROM world
WHERE area > 3000000
OR population > 250000000;
  1. 美国,印度,中国(USA, India, China)是人口又大,同时面积又大的國家。排除这些国家。

    顯示以人口或面积为大国的國家,但不能同时面积大且人口多的国家名称,人口,面积。

SELECT name,population,area
FROM world
WHERE (area > 3000000 AND population < 250000000)
OR (area < 3000000 AND population > 250000000);
  1. 查询并显示南美洲国家以百万计人口和10亿计gdp(保留小数点2位)。
SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2)
FROM world
WHERE continent = 'South America';
/*ROUND 函数用于把数值字段舍入为指定的小数位数。
SELECT ROUND(column_name,要保留的位数) FROM table_name*/

ROUND() 函数

  1. 查询万亿元国内生产总值国家的人均国内生产总值,四捨五入到最近的$ 1000。
SELECT name,ROUND(gdp/population,-3)
FROM world
WHERE gdp > 1000000000000;

继续使用round函数。因为留一位小数1,不留小数是0,-1就好比153不留3,直接四舍五入150,同样-2就是153,不留53,直接四舍五入200.

sqlzoo练习题答案的更多相关文章

  1. 珍藏的数据库SQL基础练习题答案

    自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...

  2. 13.2 Go练习题答案

    13.2 Go练习题答案 练习题1: 创建一个goroutine与主线程按顺序相互发送信息若干次 且打印 package temp import "fmt" //创建一个gorou ...

  3. C++PRIMER第五版练习题答案第一章

    C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...

  4. mysql 练习题答案

    一 题目 1.查询所有的课程的名称以及对应的任课老师姓名 2.查询学生表中男女生各有多少人 3.查询物理成绩等于100的学生的姓名 4.查询平均成绩大于八十分的同学的姓名和平均成绩 5.查询所有学生的 ...

  5. 算法设计与分析(李春保)练习题答案v1

    1.1第1 章─概论 1.1.1练习题 1.下列关于算法的说法中正确的有(). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模 ...

  6. Python For嵌套循环 图形打印X型 nested loop - 练习题答案

    上一篇:Python For嵌套循环 图形打印X型 nested loop - 练习题 上一篇留的Python For嵌套循环 图形打印X型练习题的答案. 由于网上很多嵌套循环都是C++语言写的,用P ...

  7. 【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)

    目录 视频讲解: 一.数组的概述 二.一维数组的使用 三.Arrays工具类中的sort方法(sort方法用的多,我们具体讲一下) 四.数组中的常见异常 五.一维数组练习题 六.彩蛋(本期视频使用的P ...

  8. Java编程思想第四版第二章练习题答案

    练习1:创建一个类,它包含一个int域和一个char域,它们都没有被初始化.将他们的值打印出来,以验证Java执行了默认初始化 public class JavaThinking { private ...

  9. 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案

    *6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数: public static int countLetters(String s) 编写一个测试程序,提示 ...

随机推荐

  1. 17.并发容器之ThreadLocal

    1. ThreadLocal的简介 在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到 ...

  2. 2-4-搭建DHCP服务实现动态分配IP地址-NTP网络时间同步

    本节所讲内容: •DHCP服务器工作原理 •使用DHCP为局域网中的机器分配IP地址 •使用DHCP为服务器分配固定IP地址 •ntpdate加计划任务同步服务器时间 ---------------- ...

  3. 023——VUE中数据排序sort() / 数据反转 reverse() 的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. DRF中序列化器定义及使用

    首先需要明白序列化和反序列化的定义及作用: 序列化是将程序语言转换为JSON/XML; 反序列化是将JSON/XML转换为程序语言; 对应到Django中,序列化即把模型对象转换为字典形式, 在返回给 ...

  5. Java静态绑定和动态绑定

    程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定 静态绑定(早绑定 编译器绑定): 在程序执行前方法 ...

  6. PostgreSQL备份工具-pg_backrest(转)

    转自:http://blog.chinaunix.net/uid-7270462-id-5777877.html 官网:https://pgbackrest.org 一.配置集中备份服务器 1.1 备 ...

  7. java.lang.IllegalArgumentException: Invalid character found in method name

    1.错误描述 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors ...

  8. Vim技能修炼教程(5) - 操作符实务

    操作符实务 操作符复习 上次我们讲了操作符与文本对象的组合这样一个vim的强大功能.但是上节的知识点过于密集,可读性可能差了一点.不过没关系,重要的知识点在后面用到的时候我们可以先复习一下. 我们还是 ...

  9. 3. 什么是JSR参考实现? - JavaEE基础系列

    本文是JavaEE基础系列的第三节. Java EE简介 - JavaEE基础系列 JSR简介 - JavaEE基础系列 上一节中, 我们介绍了什么是JSR.JSR就是一个提交到JCP的抽象请求,包含 ...

  10. NSPort

    NSPort是一个描述通信通道的抽象类.通信发生在两个NSPort对象之中,这两个NSPort对象通常属于不同的进程或任务.分发对象系统使用NSPort对象来返回或发送NSProtMessage对象. ...