數(shù)據(jù)產(chǎn)品經(jīng)理養(yǎng)成記(三):SQL簡(jiǎn)單查詢

上一節(jié)講了SQL基本概念及數(shù)據(jù)庫(kù)的安裝,這一節(jié)講SQL語(yǔ)句的簡(jiǎn)單用法,如何從數(shù)據(jù)庫(kù)里面查找數(shù)據(jù)。

在不同的數(shù)據(jù)庫(kù)(MySQL、Oracle、Microsoft SQL Service等)中,SQL語(yǔ)法使用起來(lái)不太一樣,但整體類似,只有個(gè)別語(yǔ)法不同。學(xué)習(xí)一種數(shù)據(jù)庫(kù)的SQL語(yǔ)法的使用,其他的也就會(huì)觸類旁通。

SQL語(yǔ)句一般分成三類

第一種是數(shù)據(jù)定義語(yǔ)言(DDL),它的操作對(duì)象是數(shù)據(jù)庫(kù)和表。包括創(chuàng)建、刪除和、修改數(shù)據(jù)庫(kù)和表的結(jié)構(gòu)。常用的關(guān)鍵字如下:

creat:創(chuàng)建數(shù)據(jù)庫(kù)和表

drop:刪除數(shù)據(jù)庫(kù)和表

alter:修改數(shù)據(jù)庫(kù)和表的結(jié)構(gòu)

說(shuō)明:關(guān)鍵字就是SQL語(yǔ)句中有特殊含義的單詞。在Navicat等客戶端中,關(guān)鍵字一般會(huì)用藍(lán)色字體高亮顯示。

第二種是數(shù)據(jù)操作語(yǔ)言(DML),可以操作表里的數(shù)據(jù)。常用的關(guān)鍵字如下:

insert:向表中插入數(shù)據(jù)

delete:刪除數(shù)據(jù)表中的數(shù)據(jù)

select:查詢表中的數(shù)據(jù)

update:修改表中的數(shù)據(jù)

第三種是數(shù)據(jù)控制語(yǔ)言(DCL),用來(lái)確認(rèn)或者取消對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更。除此之外還可設(shè)定用戶對(duì)關(guān)系數(shù)據(jù)庫(kù)的操作權(quán)限。

create:確認(rèn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行的變更

rollback:取消對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行的變更。

crant:賦予用戶操作權(quán)限。

在哪里寫(xiě)SQL語(yǔ)句?

打開(kāi)Navicat客戶端,找到對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)行如下操作

找到【查詢】,右鍵【新建查詢】,如下圖1

軟件會(huì)出現(xiàn)代碼書(shū)寫(xiě)區(qū)域,可在該區(qū)域編寫(xiě)代碼,如下圖2

寫(xiě)完代碼后,點(diǎn)擊編寫(xiě)區(qū)域上方的三角形,運(yùn)行代碼,運(yùn)行結(jié)果會(huì)在下方區(qū)域展示,如下圖3

基本查詢語(yǔ)句

SQL語(yǔ)句里面最基本的查詢語(yǔ)句之一是Select語(yǔ)句,可以說(shuō)掌握了select語(yǔ)句,就相當(dāng)于是掌握了一半SQL語(yǔ)句。select語(yǔ)句怎么用?

舉個(gè)例子,數(shù)據(jù)庫(kù)中有一張名為‘student’的表,表里面的數(shù)據(jù)如下:

現(xiàn)在,你想從表里面找出所有學(xué)號(hào)和學(xué)生的姓名,則對(duì)應(yīng)的語(yǔ)句應(yīng)該這樣寫(xiě)

select 學(xué)號(hào),姓名

from sutdent;

寫(xiě)完后,點(diǎn)擊編寫(xiě)區(qū)域上方的三角形,運(yùn)行代碼,運(yùn)行結(jié)果會(huì)在下方區(qū)域展示,展示如下為:

語(yǔ)句解析:

select 學(xué)生,性別 /*意思是你想查詢這兩列的數(shù)據(jù)*/

from student; /*意思是你從'student'這張表里面查詢數(shù)據(jù)*/

使用select from 等關(guān)鍵字開(kāi)頭的句子,有一個(gè)通用的稱呼,叫【子句】

抽象一下這個(gè)語(yǔ)句的基本用法:

select 列名1,列名2

from 表名;

書(shū)寫(xiě)規(guī)則:

1. 寫(xiě)完SQL語(yǔ)句后,要用英文分號(hào)結(jié)尾。

2. SQL語(yǔ)句不區(qū)分關(guān)鍵字的大小寫(xiě)。

3. 表明和列名也不區(qū)分大小寫(xiě),但是插入表中的數(shù)據(jù)會(huì)區(qū)分大小寫(xiě)。

4. 輸入符號(hào)的時(shí)候只能使用英文符號(hào)。

5. 列名不能夠加單引號(hào)。

6. select語(yǔ)句中列的順序與表內(nèi)列的順序沒(méi)有關(guān)系,可以依據(jù)自己的需求決定select子句中列的順序。

select語(yǔ)句的幾種延伸用法:

1.如果你不知道一張表里面有多少列,想查看全部列,可以用*代替,寫(xiě)法如下:

select *

from student;

2.如果表的列名都是英文名稱,為了方便理解,你想改成漢字,可以使用as關(guān)鍵字,寫(xiě)法如下:

select name as 姓名

from student;

這樣展示的結(jié)果列中,【name】自動(dòng)更名為【姓名】。

3.如何刪除一列內(nèi)重復(fù)的值,使用distinct

select distinct 姓名

from student;

注意事項(xiàng):

1. 如果distinct后面跟著多個(gè)列名,則每一列的重復(fù)數(shù)據(jù)都會(huì)被去重

2. distinct只能放在列名前面,不能放在其他位置。

對(duì)查詢的結(jié)果添加條件

舉個(gè)例子,這里有一張數(shù)學(xué)成績(jī)表'score',你想從表中查處成績(jī)是80分的學(xué)生,寫(xiě)法如下:

select 姓名,成績(jī)

from score

where 成績(jī) = '80';

語(yǔ)句解析:

select 姓名,成績(jī) /*選擇表中姓名和成績(jī)這兩列*/

from student; /*從'score'這張表里面選擇*/

where 成績(jī) = '80'; /*篩選出成績(jī)是80分的數(shù)據(jù)*/

注意事項(xiàng):

1. SQL語(yǔ)句的運(yùn)行順序和書(shū)寫(xiě)順序是不同的。上面的例子中,書(shū)寫(xiě)順序是1-2-3。SQL語(yǔ)句運(yùn)行順序是2-3-1。SQL語(yǔ)句先運(yùn)行from子句,找到查詢數(shù)據(jù)的表格;再運(yùn)行where子句,找到符合要求的數(shù)據(jù);最后運(yùn)行select子句,展示出符合要求的數(shù)列。

2. 為什么運(yùn)行順序和書(shū)寫(xiě)順序不同?是SQL語(yǔ)句基本規(guī)則之一,記住就好。

運(yùn)算符

如果你想對(duì)查詢出來(lái)的數(shù)據(jù)進(jìn)行計(jì)算處理,就需要用到運(yùn)算符。運(yùn)算符一般有三種:算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符。

算術(shù)運(yùn)算符:

常見(jiàn)的運(yùn)算符有:(+-*/)加減乘數(shù),算數(shù)運(yùn)算符只能和數(shù)值類型的列進(jìn)行計(jì)算

使用規(guī)則和數(shù)學(xué)里的使用規(guī)則一樣,要特別一下說(shuō)明兩點(diǎn):

如果有括號(hào)的,優(yōu)先計(jì)算括號(hào)里的內(nèi)容,例:(1+2)*3

運(yùn)算符與空值(null)一起計(jì)算,結(jié)果為空值。例:1+nulll=null

案例:從成績(jī)表里面(score),計(jì)算處學(xué)生成績(jī)的百分比成績(jī)。

select 學(xué)號(hào),姓名,成績(jī)/100 as 百分比成績(jī)

from scorebi;

比較運(yùn)算符

常見(jiàn)的比較運(yùn)算符如下:

案例:從學(xué)生表里面,篩選出出生日期小于1990-10-1的學(xué)生,寫(xiě)法如下:

select 姓名,出生日期

frome student

whrere 出生日期 <‘1990-10-1’;

注意事項(xiàng):

比較運(yùn)算符可以和所有類型的值進(jìn)行比較,日期類型、數(shù)值類型等。

如果是字符串類型的比較,則按照對(duì)應(yīng)字符的順序比較,例如10 < 2,因?yàn)樽址?0是1開(kāi)頭,1<2 ,所以10<2

邏輯運(yùn)算符

邏輯運(yùn)算符可以將多個(gè)查詢條件組合起來(lái),常見(jiàn)的邏輯運(yùn)算符如下:

案例1:從學(xué)生表里面,篩選出出生日期小于1990-10-1的學(xué)生,寫(xiě)法如下:

select 姓名,出生日期

frome student

whrere not 出生日期 <‘1990-10-1';

可以看到, where not 出生日期 < ‘1990-10-1’ 的效果等同于:where not 出生日期 >= ‘1990-10-1’。所以,使用石板語(yǔ)句也能實(shí)現(xiàn)not語(yǔ)句的效果,因此簡(jiǎn)單句式中一般不適用not運(yùn)算符。在編寫(xiě)復(fù)雜SQL語(yǔ)句的時(shí)候,有時(shí)候經(jīng)常會(huì)使用not。

案例2:從學(xué)生表里面,篩選出出生日期大于1990-10-1,小于1999-10-1的學(xué)生,寫(xiě)法如下:

select 姓名,出生日期

frome student

whrere not 出生日期 >‘1990-10-1’

and 出生日期 <‘1999-10-1';

其他的運(yùn)算法的用法大同小異,可以依據(jù)上面的句子類推。

注釋的寫(xiě)法

為什么要寫(xiě)注釋?

如果之后寫(xiě)的代碼太長(zhǎng)太復(fù)雜,寫(xiě)注釋可以幫你回憶關(guān)鍵點(diǎn)。而且良好的注釋也能方便別人閱讀你的代碼。

SQL語(yǔ)句有兩種注釋的方法,一種是單行注釋,一種是多行注釋。

單行注釋寫(xiě)法(兩個(gè)橫線):-- 這是單行注釋,漢字和橫線之間要留有空格

多行注釋寫(xiě)法:/* 這是多行注釋*/

以上就是SQL簡(jiǎn)單查詢的常見(jiàn)用法,接下來(lái)將分享復(fù)雜查詢,多表查詢和一些實(shí)戰(zhàn)數(shù)據(jù)分析。歡迎持續(xù)關(guān)注,公號(hào):數(shù)據(jù)產(chǎn)品經(jīng)理之路。

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

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

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