SQLZOO筆記-SELECT基礎(chǔ)

SQLZoo網(wǎng)站是一個(gè)SQL在線交互課程,適合初學(xué)者入門。

優(yōu)點(diǎn):

  • 學(xué)習(xí)梯度平穩(wěn),帶著實(shí)例,從最基礎(chǔ)的一小塊知識點(diǎn)開始
  • 交互實(shí)時(shí)反應(yīng)。能夠模擬「鍵入輸入命令」-「獲得輸出結(jié)果」的實(shí)戰(zhàn)情景,同時(shí)無需另新手沮喪的繁瑣的環(huán)境配置安裝。
  • 符號「必要難度」理論。比如,第一部分給出示例代碼,到下一部分,便讓學(xué)生復(fù)現(xiàn)一樣的代碼。這樣,學(xué)習(xí)者在「進(jìn)階區(qū)」,而非「恐慌區(qū)」和「舒適區(qū)」。

傳送門:https://sqlzoo.net/wiki/SQL_Tutorial

SELECT基礎(chǔ)

介紹 World表格(數(shù)據(jù)包含:各國的名稱、人口、面積以及GDP)
  1. WHERE子句——條件匹配

示例

SELECT population FROM world
  WHERE name = 'France'

答案:查詢name為'Germany'數(shù)據(jù)行的population

SELECT population FROM world
  WHERE name = 'Germany'

注: 字符串用單引號

2.IN子句——項(xiàng)目是否在列表中

示例

SELECT name, population FROM world
  WHERE name IN ('Brazil', 'Russia', 'India', 'China');

答案:查詢name為'Sweden', 'Norway', 'Denmark'數(shù)據(jù)行的population

SELECT name, population FROM world
  WHERE name IN ('Sweden', 'Norway', 'Denmark');

3.BETWEEN子句——按照值的范圍邊界來篩選數(shù)據(jù)
示例

SELECT name, area FROM world
  WHERE area BETWEEN 250000 AND 300000

答案:查詢area的數(shù)值介于'200,000——250,000'數(shù)據(jù)行的name, area

SELECT name, area FROM world
  WHERE area BETWEEN 200000 AND 250000

SELECT小測驗(yàn)

傳送門:https://sqlzoo.net/wiki/SELECT_Quiz

SELECT name, continent, population FROM world

SELECT name, continent, population FROM world

SELECT name FROM world
WHERE population = 64105700
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 FROM world
WHERE name LIKE '%United%';

Ref:
https://stackoverflow.com/questions/14290857/sql-select-where-field-contains-words

SELECT name, population, area FROM world
WHERE area > 3000000
OR population >250000000
SELECT name, population, area FROM world
WHERE (area > 3000000 AND population < 250000000)
OR (area < 3000000 AND population>250000000)

Ref:
https://stackoverflow.com/questions/41034292/xor-in-sql-server

SELECT name, ROUND(population/1000000,2),ROUND(GDP/1000000000,2) 
AS ROUNDValue
FROM world
WHERE continent='South America'

Ref:
https://www.w3schools.com/sql/func_sqlserver_round.asp

https://www.quora.com/Is-it-possible-to-round-up-a-figure-to-the-nearest-1000-in-SQL-Server

SELECT name,  capital, LENGTH(name),LENGTH(capital)
FROM world
WHERE LENGTH(name)=LENGTH(capital)
SELECT name, capital
FROM world
WHERE LENGTH(name)=LENGTH(capital);
SELECT name, capital
FROM world
WHERE LEFT(name,1)=LEFT(capital,1)
AND name<>capital;
SELECT name
FROM world
WHERE name LIKE '%a%'
AND name LIKE '%e%'
AND name LIKE '%i%'
AND name LIKE '%o%'
AND name LIKE '%u%'
AND name NOT LIKE '% %'

wildcard 通配符

SELECT name
FROM world
WHERE name LIKE '%a%'
OR name LIKE '%e%'
OR name LIKE '%i%'
OR name LIKE '%o%'
OR name LIKE '%u%'
AND name NOT LIKE '% %'

--------------------分隔線-------------------------------

SELECT基礎(chǔ)2

介紹 Nobel表格(諾貝爾獎(jiǎng)得主的數(shù)據(jù)表格,數(shù)據(jù)包含:獲獎(jiǎng)?wù)咝彰?、獲獎(jiǎng)年份、專業(yè)領(lǐng)域)
nobel(yr, subject, winner)
  1. WHERE子句——條件匹配

示例

SELECT yr, subject, winner
FROM nobel
WHERE yr = 1960

答案:查詢 1950年諾貝爾獎(jiǎng)的數(shù)據(jù)

SELECT yr, subject, winner
FROM nobel
WHERE yr = 1950
  1. WHERE子句——條件匹配

示例

SELECT winner
FROM nobel
WHERE yr = 1960
AND subject = 'Physics'

答案:查詢誰在 1962 年獲得了諾貝爾文學(xué)獎(jiǎng)

SELECT winner
FROM nobel
WHERE yr = 1962
AND subject = 'Literature';
  1. 愛因斯坦

示例:無

答案:查詢愛因斯坦獲得的諾貝爾獎(jiǎng)的年份和專業(yè)

SELECT yr, subject 
FROM nobel
WHERE winner='Albert Einstein'
  1. 近年的諾貝爾和平獎(jiǎng)

示例:無

答案:查詢從 2000 年(包括千禧年)以來所有的諾貝爾和平獎(jiǎng)得主

SELECT winner
FROM nobel
WHERE yr>=2000
AND subject='Peace';
  1. 20世紀(jì) 80 年代的諾貝爾文學(xué)獎(jiǎng)

示例:無

答案:查詢從 2000 年(包括千禧年)以來所有的諾貝爾和平獎(jiǎng)得主

SELECT yr, subject, winner
FROM nobel
WHERE subject='Literature'
AND yr BETWEEN 1980 AND 1989;
  1. 哪些諾貝爾獎(jiǎng)得主是總統(tǒng)?
    示例:
SELECT * FROM nobel
 WHERE yr = 1970
  AND subject IN ('Cookery',
                  'Chemistry',
                  'Literature')

答案:

查詢以下總統(tǒng)的獲獎(jiǎng)細(xì)節(jié)

  • Theodore Roosevelt
  • Woodrow Wilson
  • Jimmy Carter
  • Barack Obama
SELECT * FROM nobel
 WHERE winner IN ('Theodore Roosevelt',
                  'Woodrow Wilson',
                  'Jimmy Carter','Barack Obama')
  1. 名字叫約翰 John 的諾貝爾獎(jiǎng)得主

示例:無

答案:名字叫約翰 John 的諾貝爾獎(jiǎng)得主

SELECT winner
FROM nobel
WHERE winner LIKE 'John%'
  1. 物理與化學(xué)諾貝爾獎(jiǎng)

示例:無

答案:查詢1984 年的諾貝爾化學(xué)獎(jiǎng)得主及 1980 年的諾貝爾物理學(xué)將得主

SELECT *
FROM nobel
WHERE (subject='Physics'  AND yr=1980)
OR  (subject='Chemistry'  AND yr=1984);
  1. 排除化學(xué)家和醫(yī)學(xué)家

示例:無

答案:查詢1980年的諾貝爾獎(jiǎng)得主,排除化學(xué)和醫(yī)學(xué)領(lǐng)域的得主。

SELECT *
FROM nobel
WHERE yr=1980
AND NOT subject='Medicine'
AND NOT subject='Chemistry';
  1. 早期的諾貝爾醫(yī)學(xué)獎(jiǎng)及近期的諾貝爾文學(xué)獎(jiǎng)

示例:無

答案:查詢1910年之前(不包括1910)的諾貝爾醫(yī)學(xué)獎(jiǎng)數(shù)據(jù),以及2004年之后(包括2004)的諾貝爾文學(xué)獎(jiǎng)數(shù)據(jù)。

SELECT *
FROM nobel
WHERE (yr<1910 AND subject='Medicine')
OR (yr>=2004 AND subject='Literature');

更難的題目

  1. 查詢 PETER GRüNBERG的獲獎(jiǎng)細(xì)節(jié)

Non-ASCII characters—— 獲獎(jiǎng)得主的名字有一個(gè)特殊字符——ü
參考如何輸入非ASCII字符
https://en.wikipedia.org/wiki/%C3%9C#Keyboarding

ü的macOS的鍵盤輸入組合:箭頭向上+Shift+U

答案:

SELECT *
FROM nobel
WHERE winner='PETER GRüNBERG';
  1. Apostrophe 引號

查詢EUGENE O'NEILL的獲獎(jiǎng)細(xì)節(jié)

「字符串中含有單引號」的處理方法

答案:

SELECT *
FROM nobel
WHERE winner='EUGENE O''NEILL'

注意:在字符串「O'」之后添加一個(gè)「'」單引號

  1. 國王的騎士們

查詢所有以「Sir.」開頭的諾貝爾獎(jiǎng)得主,獲獎(jiǎng)時(shí)間近的得主排在前列,若獲獎(jiǎng)年份相同,安裝名字的的字母順序排序。

答案:

SELECT winner, yr, subject
FROM nobel
WHERE winner LIKE 'Sir%'
ORDER BY yr DESC, winner ASC;

注意:ORDER BY語法

  1. 化學(xué)家&物理學(xué)家列在最后

查詢1984年的諾貝爾獎(jiǎng)得主,按照專業(yè)(學(xué)科)及獲獎(jiǎng)?wù)呙Q來排列,但是專業(yè)是化學(xué)和物理的,要排列在最后。

答案:

SELECT winner, subject
  FROM nobel
 WHERE yr=1984
 ORDER BY subject IN ('Physics','Chemistry'),subject,winner;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SELECT基礎(chǔ)2 介紹 Nobel表格(諾貝爾獎(jiǎng)得主的數(shù)據(jù)表格,數(shù)據(jù)包含:獲獎(jiǎng)?wù)咝彰?、獲獎(jiǎng)年份、專業(yè)領(lǐng)域) WH...
    adi0229閱讀 461評論 0 0
  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨(dú)立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,796評論 0 6
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,234評論 0 4
  • 分析函數(shù),也稱為窗口函數(shù),通常被認(rèn)為僅對數(shù)據(jù)倉庫SQL有用。使用分析函數(shù)的查詢,基于對數(shù)據(jù)行的分組來計(jì)算總量值。與...
    貓貓_tomluo閱讀 3,469評論 3 18
  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,242評論 0 0

友情鏈接更多精彩內(nèi)容