中文字幕无码a片久久,亚洲日韩在线观看浪潮,人人超人人超碰超国产二区,国产人妻久久一区二区,国产人妻久久一区二区

福感科技有限公司 歡迎您!
聯(lián)系方式

    地址:北京市平谷區(qū)馬坊鎮(zhèn)金河北街17號(hào)院3號(hào)樓7層712

    電話:010-89968230

    網(wǎng)站:http://0743119.com

SQL中常見的6個(gè)錯(cuò)誤

2020-12-27 15:37:24??????點(diǎn)擊:

報(bào)錯(cuò)會(huì)因?yàn)槊總€(gè)人的電腦文件以及電腦設(shè)置不同而報(bào)不同錯(cuò)誤,所以報(bào)錯(cuò)是無(wú)法窮盡的,所以大家需要培養(yǎng)的解決報(bào)錯(cuò)的能力,那就是搜索。

本篇講講SQL中常見的一些報(bào)錯(cuò),內(nèi)容節(jié)選自《對(duì)比Excel,輕松學(xué)習(xí)SQL數(shù)據(jù)分析》一書。

1 表名錯(cuò)誤

如果數(shù)據(jù)庫(kù)中沒(méi)有某張表,或者你在寫代碼的時(shí)候把表名寫錯(cuò)了,都會(huì)導(dǎo)致程序找不到這張表,最后報(bào)錯(cuò):Table 'XXX' doesn't exist。如果遇到這個(gè)報(bào)錯(cuò)時(shí),去檢查XXX表名是否寫正確,然后再去檢查數(shù)據(jù)庫(kù)中是否有這張表。

2 列名錯(cuò)誤

如果某張表中不存在某個(gè)字段,或者你把字段名寫錯(cuò)了,都會(huì)導(dǎo)致程序找不到這個(gè)字段,最后報(bào)錯(cuò):Unknown column 'XX' in 'field list'。如果遇到這個(gè)報(bào)錯(cuò)時(shí),去檢查XX列名是否寫正確,然后再去檢查這張表中是否有這個(gè)字段。

3 group by錯(cuò)誤

Expression not in GROUP BY key 'xxx',如果你遇到這個(gè)報(bào)錯(cuò),可能是select語(yǔ)句中的xxx字段沒(méi)有在group by子句中出現(xiàn)導(dǎo)致的。如果有group by語(yǔ)句,select后面的字段要么在group by中出現(xiàn),要么在聚合函數(shù)中出現(xiàn)。比如如下代碼:

select

    col1

    ,sum(col2)

from

    table


select

    col1

    ,col2

    ,sum(col3)

from

    table

group by

    col1

上面兩種代碼都可能會(huì)報(bào)xxx字段沒(méi)有在group by中的錯(cuò),為啥是可能呢,因?yàn)?/span>mysql 8.0以上版本是不會(huì)報(bào)錯(cuò),默認(rèn)只展示第一個(gè)值。但是其他版本數(shù)據(jù)庫(kù)會(huì)報(bào)錯(cuò)。

尤其第二段代碼的書寫方式我們需要注意,當(dāng)select中有多列時(shí),經(jīng)常會(huì)在group by后面漏寫某個(gè)字段,導(dǎo)致報(bào)錯(cuò)。

4 權(quán)限錯(cuò)誤

在公司里面我們要對(duì)數(shù)據(jù)查詢時(shí),首先需要申請(qǐng)權(quán)限。如果你沒(méi)有對(duì)某個(gè)字段或某張表的查詢權(quán)限時(shí),通過(guò)會(huì)報(bào)類似于You have no privilege xxx的錯(cuò),不同公司的報(bào)錯(cuò)提醒可能不太一樣,你只需要抓重點(diǎn)no privilege即可。

5 逗號(hào)錯(cuò)誤

select后面的多個(gè)字段之間要用逗號(hào)分隔開來(lái),且只能有一個(gè)。最后一個(gè)字段與from之間不可以有逗號(hào)。有的時(shí)候要么會(huì)多寫逗號(hào),要么會(huì)漏寫,都會(huì)導(dǎo)致程序報(bào)錯(cuò)。根據(jù)程序報(bào)錯(cuò)的位置仔細(xì)檢查即可。

select

    col1,

    col2,

    col3,

from

    table

上面代碼的書寫方式就是最后一個(gè)字段和from之間有逗號(hào),這是不對(duì)的。

select

    col1,

    col2,,

    col3

from

    table

上面代碼的書寫方式就是col2列后面有兩個(gè)逗號(hào),也會(huì)導(dǎo)致報(bào)錯(cuò)。

select

    col1,

    col2

    col3

from

    table

上面代碼的書寫方式就是col2col3列之間沒(méi)有逗號(hào)分隔,也會(huì)導(dǎo)致報(bào)錯(cuò)。

當(dāng)列名與列名之間的逗號(hào)放在列名之后時(shí),很容易被我們忽視,忽視就會(huì)導(dǎo)致程序報(bào)錯(cuò)。這也就是為什么建議大家把列與列之間的逗號(hào)要放在列名前,而不是放在列名后,可以減少代碼錯(cuò)誤率。

6 括號(hào)錯(cuò)誤

代碼中的括號(hào)都是成對(duì)出現(xiàn)的,沒(méi)有成對(duì)出現(xiàn)的括號(hào)都是會(huì)報(bào)錯(cuò)的。如果是只有一對(duì)括號(hào)時(shí)是不容易出錯(cuò)的,當(dāng)有多層括號(hào)嵌套時(shí),最容易少寫一個(gè)或多寫一個(gè),根據(jù)報(bào)錯(cuò)定位的位置仔細(xì)檢查即可。

select

    col1

    ,if(col2<60,"不及格",if(col2<80,"良好","優(yōu)秀")

from

    table

上面代碼中if嵌套少一個(gè)括號(hào),就會(huì)導(dǎo)致報(bào)錯(cuò)。

我在這里列舉的報(bào)錯(cuò)是我平常遇到的以及同學(xué)們問(wèn)的比較多的一些報(bào)錯(cuò),但肯定不是全部。報(bào)錯(cuò)會(huì)因?yàn)槊總€(gè)人的電腦文件以及電腦設(shè)置不同而報(bào)不同錯(cuò)誤,所以報(bào)錯(cuò)是無(wú)法窮盡的,所以大家需要培養(yǎng)的解決報(bào)錯(cuò)的能力,那就是搜索。你遇到的問(wèn)題,有很大的可能別人也遇到過(guò),且會(huì)有一些樂(lè)于分享的人把解決答案分享出來(lái)。當(dāng)你遇到報(bào)錯(cuò)時(shí),直接去網(wǎng)上搜索這個(gè)報(bào)錯(cuò)即可,你總能找到解決方案。

聲明:文章內(nèi)容整理來(lái)源于網(wǎng)絡(luò),版權(quán)屬于原作者,如有問(wèn)題,請(qǐng)聯(lián)系我們!

來(lái)源:http://www.i#cn/detail?type=99993457

Copyright 2019 0743119.com

福感科技有限公司 版權(quán)所有 All Rights Reserved

京ICP備20002031號(hào)

010-89968230