明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在mysql語句中為什么要加反引號(hào)

[摘要]在MySQL語句中我們有時(shí)候經(jīng)常會(huì)遇到反引號(hào)(``),剛開始的時(shí)候不知道什么意思,他是什么作用呢?Select * from `member` order by posts desc limit 0,10;它是為了區(qū)分MYSQL的保留字與普通字符而引入的符號(hào)。舉個(gè)例子:SELECT `select...
MySQL語句中我們有時(shí)候經(jīng)常會(huì)遇到反引號(hào)(``),剛開始的時(shí)候不知道什么意思,他是什么作用呢?


Select * from `member` order by posts desc limit 0,10;


它是為了區(qū)分MYSQL的保留字與普通字符而引入的符號(hào)。

舉個(gè)例子:SELECT `select` FROM `test` WHERE select='字段值'

在test表中,有個(gè)select字段,如果不用反引號(hào),MYSQL將把select視為保留字而導(dǎo)致出錯(cuò),所以,有MYSQL保留字作為字段的,必須加上反引號(hào)來區(qū)分。

引號(hào)一般用在字段的值,如果字段值是字符或字符串,則要加引號(hào),如:select='字段值'

不加反引號(hào)建的表不能包含MYSQL保留字,否則出錯(cuò)

反引號(hào)`,數(shù)字1左邊的符號(hào)。

保留字不能用于表名,比如desc,此時(shí)需要加入反引號(hào)來區(qū)別,但使用表名時(shí)可忽略反引號(hào)。

create table desc報(bào)錯(cuò)

create table `desc`成功

create table `test`成功

drop table test成功

保留字不能用于字段名,比如desc,此時(shí)也需要加入反引號(hào),并且insert等使用時(shí)也要加上反引號(hào)。

create table `test`(`desc` varchar(255))成功

insert into test(desc) values('fxf')失敗

insert into test(`desc`) values('fxf')成功

mysql常見的保留字


使用mysql時(shí)一定要注意,不要使用它的保留字作為表名或者列名,否則會(huì)出現(xiàn)莫名其妙的錯(cuò)誤。

昨天建了一個(gè)表,其中一列名為interval(時(shí)間間隔),結(jié)果數(shù)據(jù)死都插不進(jìn)去,最后才發(fā)現(xiàn)原來interval是mysql的保留字。

以后出現(xiàn)類似的錯(cuò)誤要先想想是不是因?yàn)楸砻蛄忻麤_突造成的啊。

從網(wǎng)上找了一個(gè)mysql的保留字列表,僅供參考。


ADDALLALTER
ANALYZEANDAS
ASCASENSITIVEBEFORE
BETWEENBIGINTBINARY
BLOBBOTHBY
CALLCASCADECASE
CHANGECHARCHARACTER
CHECKCOLLATECOLUMN
CONDITIONCONNECTIONCONSTRAINT
CONTINUECONVERTCREATE
CROSSCURRENT_DATECURRENT_TIME
CURRENT_TIMESTAMPCURRENT_USERCURSOR
DATABASEDATABASESDAY_HOUR
DAY_MICROSECONDDAY_MINUTEDAY_SECOND
DECDECIMALDECLARE
DEFAULTDELAYEDDELETE
DESCDESCRIBEDETERMINISTIC
DISTINCTDISTINCTROWp
DOUBLEDROPDUAL
EACHELSEELSEIF
ENCLOSEDESCAPEDEXISTS
EXITEXPLAINFALSE
FETCHFLOATFLOAT4
FLOAT8FORFORCE
FOREIGNFROMFULLTEXT
GOTOGRANTGROUP
HAVINGHIGH_PRIORITYHOUR_MICROSECOND
HOUR_MINUTEHOUR_SECONDIF
IGNOREININDEX
INFILEINNERINOUT
INSENSITIVEINSERTINT
INT1INT2INT3
INT4INT8INTEGER
INTERVALINTOIS
ITERATEJOINKEY
KEYSKILLLABEL
LEADINGLEAVELEFT
LIKELIMITLINEAR
LINESLOADLOCALTIME
LOCALTIMESTAMPLOCKLONG
LONGBLOBLONGTEXTLOOP
LOW_PRIORITYMATCHMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINT
MINUTE_MICROSECONDMINUTE_SECONDMOD
MODIFIESNATURALNOT
NO_WRITE_TO_BINLOGNULLNUMERIC
ONOPTIMIZEOPTION
OPTIONALLYORORDER
OUTOUTEROUTFILE
PRECISIONPRIMARYPROCEDURE
PURGERAID0RANGE
READREADSREAL
REFERENCESREGEXPRELEASE
RENAMEREPEATREPLACE
REQUIRERESTRICTRETURN
REVOKERIGHTRLIKE
SCHEMASCHEMASSECOND_MICROSECOND
SELECTSENSITIVESEPARATOR
SETSHOWSMALLINT
SPATIALSPECIFICSQL
SQLEXCEPTIONSQLSTATESQLWARNING
SQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULT
SSLSTARTINGSTRAIGHT_JOIN
TABLETERMINATEDTHEN
TINYBLOBTINYINTTINYTEXT
TOTRAILINGTRIGGER
TRUEUNDOUNION
UNIQUEUNLOCKUNSIGNED
UPDATEUSAGEUSE
USINGUTC_DATEUTC_TIME
UTC_TIMESTAMPVALUESVARBINARY
VARCHARVARCHARACTERVARYING
WHENWHEREWHILE
WITHWRITEX509
XORYEAR_MONTHZEROFILL

注:MySQL允許部分關(guān)鍵字用做未引起來的識(shí)別符,因?yàn)樵S多人以前曾使用過它們。如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP


所以為了安全起見可以在表名和字段名上都加上``。

以上就是在mysql語句中為什么要加反引號(hào)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。