sqlzoo练习题答案
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对大小写不敏感。
- 以显示德国德国的人口
SELECT population
FROM world
WHERE name = 'Germany'
- 查询面积为5,000,000以上平方公里的国家,对每个国家显示她的名字和人均国内生产总值(
gdp/population
)
SELECT name, gdp/population
FROM world
WHERE area > 5000000
- 查询“Ireland 爱尔兰”,“Iceland 冰岛”,“Denmark 丹麦”的国家名称和人口
SELECT name, population
FROM world
WHERE name IN ('Ireland', 'Iceland', 'Denmark');--IN 操作符允许我们在 WHERE 子句中规定多个值
- 面积为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] | 不在字符列中的任何单一字符 |
- 找出以Y为开首的国家
SELECT name
FROM world
WHERE name LIKE 'Y%'
--LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
- 找出以Y为结尾的国家
SELECT name
FROM world
WHERE name LIKE '%Y'
- 找出包含字母x的所有国家
SELECT name
FROM world
WHERE name
LIKE '%x%'
- 找出名字以land结尾的所有国家
SELECT name
FROM world
WHERE name
LIKE '%land'
- 查找以C开头,ia结尾的所有国家
SELECT name
FROM world
WHERE name
LIKE 'C%ia'
- 找出名字包含双oo的国家
SELECT name
FROM world
WHERE name
LIKE '%oo%'
- 找出名字包含三个或三个以上a的国家
SELECT name
FROM world
WHERE name
LIKE '%a%a%a%'
- 找出名字第二个字母为t的国家
SELECT name
FROM world
WHERE name
LIKE '_t%'
ORDER BY name
- 找出所有国家,其名字都有两个字母 o,被另外两个字母相隔着
SELECT name
FROM world
WHERE name
LIKE '%o__o%'
10 . 找出名字是4个字母的国家
SELECT name
FROM world
WHERE name
LIKE '____'
- 找出首都和国家名字相同的国家
SELECT name
FROM world
WHERE name = capital; --可以加空格
- “Mexico 墨西哥”的首都是”Mexico City”。找出所有国家名字,其首都是国家名字加上”City”。
SELECT name
FROM world
WHERE capital = concat(name,' City');--注意City前面的空格
- 找出所有首都和其国家名字,而首都要有国家名字中出現。
SELECT capital,name
FROM world
WHERE capital
LIKE concat('%',name,'%')
- 找出所有首都和其国家名字,而首都是国家名字的延伸。
你愿显示 Mexico City,因它比其国家名字 Mexico 長。
你不愿显示 Luxembourg,因它的首都和国家名相是相同的。
SELECT name,capital
FROM world
WHERE capital
LIKE concat(name,'%') --注意审题,国家名字的延伸,那么国家名字应该在最前面。
AND capital != name;--这里也可以用"<>"
"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:国内生产总值
**表格说明 **
- *查询大于2亿人口的国家。
SELECT name
FROM world
WHERE population>200000000;
- 查询大于2亿人口的国家,及国内生产总值
SELECT name,gdp/population
FROM world
WHERE population > 200000000;
- 查询在South America南美洲的国际爱和以百万为单位的人口數
SELECT name,population / 1000000
FROM world
WHERE continent = 'South America';--别忘记单引号,代表字符串
- 查询法国,德国,意大利(France, Germany, Italy)的国家名称和人口
SELECT name,population
FROM world
WHERE name in ('France', 'Germany', 'Italy')--别忘记单引号,代表字符串
- 查询包含单词“United”的国家
SELECT name
FROM world
WHERE name
LIKE '%United%';
- 查询大国(面积大于300万平方公里或者人口大于2.5亿)的名字,面积,人口
SELECT name,population,area
FROM world
WHERE area > 3000000
OR population > 250000000;
美国,印度,中国(USA, India, China)是人口又大,同时面积又大的國家。排除这些国家。
顯示以人口或面积为大国的國家,但不能同时面积大且人口多的国家名称,人口,面积。
SELECT name,population,area
FROM world
WHERE (area > 3000000 AND population < 250000000)
OR (area < 3000000 AND population > 250000000);
- 查询并显示南美洲国家以百万计人口和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*/
- 查询万亿元国内生产总值国家的人均国内生产总值,四捨五入到最近的$ 1000。
SELECT name,ROUND(gdp/population,-3)
FROM world
WHERE gdp > 1000000000000;
继续使用round函数。因为留一位小数1,不留小数是0,-1就好比153不留3,直接四舍五入150,同样-2就是153,不留53,直接四舍五入200.
sqlzoo练习题答案的更多相关文章
- 珍藏的数据库SQL基础练习题答案
自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...
- 13.2 Go练习题答案
13.2 Go练习题答案 练习题1: 创建一个goroutine与主线程按顺序相互发送信息若干次 且打印 package temp import "fmt" //创建一个gorou ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- mysql 练习题答案
一 题目 1.查询所有的课程的名称以及对应的任课老师姓名 2.查询学生表中男女生各有多少人 3.查询物理成绩等于100的学生的姓名 4.查询平均成绩大于八十分的同学的姓名和平均成绩 5.查询所有学生的 ...
- 算法设计与分析(李春保)练习题答案v1
1.1第1 章─概论 1.1.1练习题 1.下列关于算法的说法中正确的有(). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模 ...
- Python For嵌套循环 图形打印X型 nested loop - 练习题答案
上一篇:Python For嵌套循环 图形打印X型 nested loop - 练习题 上一篇留的Python For嵌套循环 图形打印X型练习题的答案. 由于网上很多嵌套循环都是C++语言写的,用P ...
- 【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)
目录 视频讲解: 一.数组的概述 二.一维数组的使用 三.Arrays工具类中的sort方法(sort方法用的多,我们具体讲一下) 四.数组中的常见异常 五.一维数组练习题 六.彩蛋(本期视频使用的P ...
- Java编程思想第四版第二章练习题答案
练习1:创建一个类,它包含一个int域和一个char域,它们都没有被初始化.将他们的值打印出来,以验证Java执行了默认初始化 public class JavaThinking { private ...
- 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案
*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数: public static int countLetters(String s) 编写一个测试程序,提示 ...
随机推荐
- 17.并发容器之ThreadLocal
1. ThreadLocal的简介 在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到 ...
- 2-4-搭建DHCP服务实现动态分配IP地址-NTP网络时间同步
本节所讲内容: •DHCP服务器工作原理 •使用DHCP为局域网中的机器分配IP地址 •使用DHCP为服务器分配固定IP地址 •ntpdate加计划任务同步服务器时间 ---------------- ...
- 023——VUE中数据排序sort() / 数据反转 reverse() 的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- DRF中序列化器定义及使用
首先需要明白序列化和反序列化的定义及作用: 序列化是将程序语言转换为JSON/XML; 反序列化是将JSON/XML转换为程序语言; 对应到Django中,序列化即把模型对象转换为字典形式, 在返回给 ...
- Java静态绑定和动态绑定
程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定 静态绑定(早绑定 编译器绑定): 在程序执行前方法 ...
- PostgreSQL备份工具-pg_backrest(转)
转自:http://blog.chinaunix.net/uid-7270462-id-5777877.html 官网:https://pgbackrest.org 一.配置集中备份服务器 1.1 备 ...
- java.lang.IllegalArgumentException: Invalid character found in method name
1.错误描述 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors ...
- Vim技能修炼教程(5) - 操作符实务
操作符实务 操作符复习 上次我们讲了操作符与文本对象的组合这样一个vim的强大功能.但是上节的知识点过于密集,可读性可能差了一点.不过没关系,重要的知识点在后面用到的时候我们可以先复习一下. 我们还是 ...
- 3. 什么是JSR参考实现? - JavaEE基础系列
本文是JavaEE基础系列的第三节. Java EE简介 - JavaEE基础系列 JSR简介 - JavaEE基础系列 上一节中, 我们介绍了什么是JSR.JSR就是一个提交到JCP的抽象请求,包含 ...
- NSPort
NSPort是一个描述通信通道的抽象类.通信发生在两个NSPort对象之中,这两个NSPort对象通常属于不同的进程或任务.分发对象系统使用NSPort对象来返回或发送NSProtMessage对象. ...