日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql开始全部日记,MySQL学习日记—节选SQLZOO习题(1)

發(fā)布時(shí)間:2024/1/18 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql开始全部日记,MySQL学习日记—节选SQLZOO习题(1) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

最近的開發(fā)任務(wù)是要從零開始搭建一個(gè)網(wǎng)站,剛開始是準(zhǔn)備做一個(gè)純前端頁面,但是出于后期維護(hù)和拓展的考慮,最后還是準(zhǔn)備使用MVC框架來搭建,那么開發(fā)的第一步就是要建立數(shù)據(jù)庫了,因此這段時(shí)間也在學(xué)習(xí)MySQL。

之后也會(huì)記錄下網(wǎng)站開發(fā)的動(dòng)態(tài),相信這次開發(fā)可以讓我熟悉掌握整個(gè)網(wǎng)站開發(fā)的流程,也能更加深入地理解MVC、數(shù)據(jù)庫等相關(guān)技術(shù)。

這個(gè)系列主要記錄在SQLZOO上的部分經(jīng)典和困難的習(xí)題答案,并附上相關(guān)知識(shí)點(diǎn)的解析。

書寫規(guī)范

在正式開始之前,先交代一下SQL的常用書寫規(guī)范:

多條SQL語句是使用分號(hào)(;)隔開的(注意是英文分號(hào))。單條語句的句尾可以不加分號(hào),但如果是使用命令行輸入時(shí),則必須加上分號(hào)表示結(jié)束該語句。本系列將使用分號(hào)結(jié)束每個(gè)語句。

SQL是不區(qū)分大小寫的,不過為了使得SQL語句易于閱讀和調(diào)試,SQL關(guān)鍵字最好還是使用大寫。本系列關(guān)鍵字將會(huì)大寫標(biāo)注(圖形化界面往往會(huì)自動(dòng)識(shí)別關(guān)鍵字并轉(zhuǎn)化為大寫)。

在處理SQL語句時(shí),所有空格都會(huì)被忽略掉。將SQL語句按關(guān)鍵字分配成多行將更容易閱讀和調(diào)試。

在SQL語句中如果遇到表或者數(shù)據(jù)項(xiàng)名稱與關(guān)鍵字名稱雷同,應(yīng)當(dāng)給操作對(duì)象名添加引號(hào)(’ '/ " ")。SQL不大區(qū)分單引號(hào)和雙引號(hào),不過如果字符串本身帶有了單引號(hào),那么就只能添加雙引號(hào)了。

SELECT basics

查詢數(shù)據(jù)

通用查詢語法如下:

SELECT column_name1,column_name2,...

FROM table_name

[WHERE condition1 [and/or] condition2 ...]

首先,SELECT語句可以查詢單列和多列數(shù)據(jù),查詢多列時(shí)使用逗號(hào)(,)將不同的column_name隔開。如果要查詢表中的所有列,直接將column_name替換為星號(hào)通配符(*)即可。

WHERE語句可以篩選出指定條件的數(shù)據(jù)項(xiàng)。同樣也能添加多個(gè)條件,同時(shí)滿足基本的邏輯關(guān)系:與和或。

題1.修改此例子,以顯示德國 Germany 的人口。

SELECT population

FROM world

WHERE name='Germany';

同時(shí),在SQL語句中,SELECT后的項(xiàng)目也是可以直接進(jìn)行數(shù)值計(jì)算的。

題2.修改此例子,查詢面積為 5,000,000 以上平方公里的國家,對(duì)每個(gè)國家顯示她的名字和人均國內(nèi)生產(chǎn)總值(gdp/population)。

SELECT name,gdp/population

FROM world

WHERE area>5000000;

條件篩選(過濾數(shù)據(jù))

IN操作符常在WHERE子句中出現(xiàn),用來指定條件范圍,對(duì)范圍中每個(gè)條件都可以進(jìn)行匹配,滿足一個(gè)即可。

題3.顯示“Ireland 愛爾蘭”,“Iceland 冰島”,“Denmark 丹麥”的國家名稱和人口。

SELECT name,population

FROM world

WHERE name in ("Ireland","Iceland","Denmark");

BETWEEN與AND連用作為范圍查詢條件,將檢索出包含邊界以及邊界內(nèi)的數(shù)據(jù)項(xiàng)。

題4.修改此例子,以顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。

SELECT name,area

FROM world

WHERE area BETWEEN 200000 AND 250000;

SELECT from WORLD

LIKE子句

LIKE操作符常在WHERE子句中出現(xiàn),與通配符進(jìn)行搭配對(duì)數(shù)據(jù)進(jìn)行模糊查詢。LIKE可以使用OR關(guān)聯(lián)多個(gè)模糊條件進(jìn)行查詢。

百分號(hào)通配符(%)可以代替任意長度的字符,而下劃線通配符(_)則只能代替一位字符。

題6.顯示包含單詞“United”為名稱的國家。

SELECT name

FROM world

WHERE name LIKE '%United%';

復(fù)合條件

WHERE子句中的條件可以有多層嵌套。

題8.顯示以人口或面積為大國的國家,但不能同時(shí)兩者。顯示國家名稱,人口和面積。

SELECT name,population,area

FROM world

WHERE (area>=3000000 AND population<250000000)

OR (population>=250000000 AND area<3000000);

ROUND()函數(shù)

ROUND() 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)。語法如下:

SELECT ROUND(column_name,decimals)

FROM table_name;

第一個(gè)參數(shù)填入要舍入的字段,第二個(gè)參數(shù)(decimals)填入要返回的小數(shù)位數(shù)。如果填入?yún)?shù)只有第一個(gè),那么將會(huì)返回該參數(shù)四舍五入的整數(shù)。

題9.對(duì)於南美顯示以百萬計(jì)人口,以十億計(jì)2位小數(shù)GDP。

SELECT name,ROUND(population/1000000,2),

ROUND(gdp/1000000000,2)

FROM world

WHERE continent='South America';

如果第二個(gè)參數(shù)填入負(fù)數(shù),則表示用科學(xué)計(jì)數(shù)法,以十進(jìn)制為基礎(chǔ),參數(shù)大小表示乘方次數(shù)。

題10.顯示萬億元國家的人均國內(nèi)生產(chǎn)總值,四捨五入到最近的$ 1000

SELECT name,ROUND(gdp/1000000000,-3)

FROM world

WHERE gdp>=1000000000000;

流程控制CASE

流程控制不是很常用(因?yàn)镸ySQL必知必會(huì)這本書都沒收錄),可以做一個(gè)了解。

CASE語句相當(dāng)于常用編程語言中的If…else語句,用于條件分支選擇,也經(jīng)常與ELSE進(jìn)行搭配使用。語法為:

SELECT CASE WHEN condition1 THEN value1

[WHEN condition2 THEN value2]

...

ELSE def_value

END

FROM table_name;

題12.Show the name and the continent - but substitute Eurasia for Europe and Asia; substitute America - for each country in North America or South America or Caribbean. Show countries beginning with A or B

SELECT name,

CASE WHEN continent in ('Europe','Asia') THEN 'Eurasia'

WHEN continent in ('North America' ,'South America' , 'Caribbean') THEN 'America'

ELSE continent

END AS continent

FROM world

WHERE name like 'A%' or 'B%';

其中使用了AS命令給這個(gè)分支語句的列重新命名為continent。

題13.Put the continents right…

Oceania becomes Australasia

Countries in Eurasia and Turkey go to Europe/Asia

Caribbean islands starting with ‘B’ go to North America, other Caribbean islands go to South America

Show the name, the original continent and the new continent of all countries.

SELECT name,continent,

CASE WHEN continent='Oceania' THEN 'Australasia'

WHEN continent in ('Eurasia','Turkey') THEN 'Europe/Asia'

WHEN continent='Caribbean' AND name LIKE 'B%' THEN 'North America'

WHEN continent='Caribbean' AND name NOT LIKE 'B%' THEN 'South America'

ELSE continent

END AS new_continent

FROM world;

題13無論如何提交總是會(huì)報(bào)錯(cuò),但是答案應(yīng)該沒錯(cuò)(最近這個(gè)網(wǎng)站更新了,現(xiàn)在沒錯(cuò)了)。里面的NOT LIKE表示排除該模糊條件的查詢。

SELECT from Nobel

不等號(hào)

WHERE子句的不等號(hào)使用大于小于號(hào)(<>)來表示,當(dāng)然也可以用不等號(hào)(!=)來表示。

題9.查看1980年獲獎(jiǎng)?wù)?#xff0c;但不包括化學(xué)獎(jiǎng)(Chemistry)和醫(yī)學(xué)獎(jiǎng)(Medicine)。

SELECT *

FROM nobel

WHERE yr=1980 AND subject <> 'Chemistry' AND subject <> 'Medicine';

雙引號(hào)

使用雙引號(hào)來標(biāo)識(shí)具有單引號(hào)的字符串。

題12.查找尤金?奧尼爾EUGENE O’NEILL得獎(jiǎng)的所有細(xì)節(jié) Find all details of the prize won by EUGENE O’NEILL

SELECT *

FROM nobel

WHERE winner="EUGENE O'NEILL";

排序

使用order by關(guān)鍵字對(duì)檢索后的數(shù)據(jù)進(jìn)行排序,在后面添加關(guān)鍵字ASC表示升序排列,DESC表示降序排列。可以添加多個(gè)排序項(xiàng),用逗號(hào)隔開,具體的語法如下:

SELECT field1, field2,...fieldN

FROM table_name1, table_name2...

[WHERE condition]

ORDER BY field1 [ASC [DESC][默認(rèn) ASC]], [field2...]

當(dāng)然不一定排序條件要求必須是要查詢的列。

題13.列出爵士的獲獎(jiǎng)?wù)摺⒛攴荨ⅹ?jiǎng)頁(爵士的名字以Sir開始)。先顯示最新獲獎(jiǎng)?wù)?#xff0c;然後同年再按名稱順序排列。

SELECT winner,yr,subject

FROM nobel

WHERE winner like "Sir%"

ORDER BY yr DESC,winner ASC;

如果需要實(shí)現(xiàn)諸如將某些特定的項(xiàng)排到最前或者最后,需要借助IN操作符使排序列數(shù)據(jù)量化為0或1的值。舉例說明:

題14.Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.

SELECT winner,subject

FROM nobel

WHERE yr=1984

ORDER BY subject IN ('Physics','Chemistry'),subject,winner;

其實(shí)本質(zhì)上IN操作符可以看做是一個(gè)判斷符,滿足條件的項(xiàng)就會(huì)返回1,不滿足則返回0,在order by后面添加上該項(xiàng)計(jì)算結(jié)果,那么值為0的就會(huì)排在值為1的前面了。

總結(jié)

這一章節(jié)主要介紹了檢索查詢數(shù)據(jù)中最常規(guī)的一些操作,總體來看還是比較簡單的。所以當(dāng)一個(gè)CRUD boy還是很容易的,不是嗎?

參考資料

《MySQL必知必會(huì)》

總結(jié)

以上是生活随笔為你收集整理的mysql开始全部日记,MySQL学习日记—节选SQLZOO习题(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。