title: SQL-Learning
date: 2019-03-12 20:37:21
tags: SQL
---sql
這是關於在一個SQL學習網站的練習題答案記錄:SQL教程數據庫
這裏的默認表格爲WORLD表格 。api
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'
gdp/population
)SELECT name, gdp/population FROM world WHERE area > 5000000
SELECT name, population FROM world WHERE name IN ('Ireland', 'Iceland', 'Denmark');--IN 操做符容許咱們在 WHERE 子句中規定多個值
SELECT name, area FROM world WHERE area BETWEEN 200000 AND 250000; --操做符 BETWEEN ... AND 會選取介於兩個值之間的數據範圍。這些值能夠是數值、文本或者日期。
name | continent |
---|---|
Afghanistan | Asia |
Albania | Europe |
Algeria | Africa |
Andorra | Europe |
Angola | Africa |
.... |
name:國家名稱 continent:大洲網站
SQL 通配符this
在搜索數據庫中的數據時,SQL 通配符能夠替代一個或多個字符。.net
SQL 通配符必須與 LIKE 運算符一塊兒使用。code
在 SQL 中,可以使用如下通配符:教程
通配符 | 描述 |
---|---|
% | 替代一個或多個字符 |
_ | 僅替代一個字符 |
[charlist] | 字符列中的任何單一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何單一字符 |
SELECT name FROM world WHERE name LIKE 'Y%' --LIKE 操做符用於在 WHERE 子句中搜索列中的指定模式。
SELECT name FROM world WHERE name LIKE '%Y'
SELECT name FROM world WHERE name LIKE '%x%'
SELECT name FROM world WHERE name LIKE '%land'
SELECT name FROM world WHERE name LIKE 'C%ia'
SELECT name FROM world WHERE name LIKE '%oo%'
SELECT name FROM world WHERE name LIKE '%a%a%a%'
SELECT name FROM world WHERE name LIKE '_t%' ORDER BY name
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; --能夠加空格
SELECT name FROM world WHERE capital = concat(name,' City');--注意City前面的空格
SELECT capital,name FROM world WHERE capital LIKE concat('%',name,'%')
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。 */
查詢世界
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:國內生產總值
SELECT name FROM world WHERE population>200000000;
SELECT name,gdp/population FROM world WHERE population > 200000000;
SELECT name,population / 1000000 FROM world WHERE continent = 'South America';--別忘記單引號,表明字符串
SELECT name,population FROM world WHERE name in ('France', 'Germany', 'Italy')--別忘記單引號,表明字符串
SELECT name FROM world WHERE name LIKE '%United%';
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);
SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2) FROM world WHERE continent = 'South America'; /*ROUND 函數用於把數值字段舍入爲指定的小數位數。 SELECT ROUND(column_name,要保留的位數) FROM table_name*/
SELECT name,ROUND(gdp/population,-3) FROM world WHERE gdp > 1000000000000;
繼續使用round函數。由於留一位小數1,不留小數是0,-1就比如153不留3,直接四捨五入150,一樣-2就是153,不留53,直接四捨五入200.