在mysql語句中為什么要加反引號(hào)
發(fā)表時(shí)間:2023-09-01 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在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的保留字列表,僅供參考。
ADD | ALL | ALTER |
ANALYZE | AND | AS |
ASC | ASENSITIVE | BEFORE |
BETWEEN | BIGINT | BINARY |
BLOB | BOTH | BY |
CALL | CASCADE | CASE |
CHANGE | CHAR | CHARACTER |
CHECK | COLLATE | COLUMN |
CONDITION | CONNECTION | CONSTRAINT |
CONTINUE | CONVERT | CREATE |
CROSS | CURRENT_DATE | CURRENT_TIME |
CURRENT_TIMESTAMP | CURRENT_USER | CURSOR |
DATABASE | DATABASES | DAY_HOUR |
DAY_MICROSECOND | DAY_MINUTE | DAY_SECOND |
DEC | DECIMAL | DECLARE |
DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DETERMINISTIC |
DISTINCT | DISTINCTROW | p |
DOUBLE | DROP | DUAL |
EACH | ELSE | ELSEIF |
ENCLOSED | ESCAPED | EXISTS |
EXIT | EXPLAIN | FALSE |
FETCH | FLOAT | FLOAT4 |
FLOAT8 | FOR | FORCE |
FOREIGN | FROM | FULLTEXT |
GOTO | GRANT | GROUP |
HAVING | HIGH_PRIORITY | HOUR_MICROSECOND |
HOUR_MINUTE | HOUR_SECOND | IF |
IGNORE | IN | INDEX |
INFILE | INNER | INOUT |
INSENSITIVE | INSERT | INT |
INT1 | INT2 | INT3 |
INT4 | INT8 | INTEGER |
INTERVAL | INTO | IS |
ITERATE | JOIN | KEY |
KEYS | KILL | LABEL |
LEADING | LEAVE | LEFT |
LIKE | LIMIT | LINEAR |
LINES | LOAD | LOCALTIME |
LOCALTIMESTAMP | LOCK | LONG |
LONGBLOB | LONGTEXT | LOOP |
LOW_PRIORITY | MATCH | MEDIUMBLOB |
MEDIUMINT | MEDIUMTEXT | MIDDLEINT |
MINUTE_MICROSECOND | MINUTE_SECOND | MOD |
MODIFIES | NATURAL | NOT |
NO_WRITE_TO_BINLOG | NULL | NUMERIC |
ON | OPTIMIZE | OPTION |
OPTIONALLY | OR | ORDER |
OUT | OUTER | OUTFILE |
PRECISION | PRIMARY | PROCEDURE |
PURGE | RAID0 | RANGE |
READ | READS | REAL |
REFERENCES | REGEXP | RELEASE |
RENAME | REPEAT | REPLACE |
REQUIRE | RESTRICT | RETURN |
REVOKE | RIGHT | RLIKE |
SCHEMA | SCHEMAS | SECOND_MICROSECOND |
SELECT | SENSITIVE | SEPARATOR |
SET | SHOW | SMALLINT |
SPATIAL | SPECIFIC | SQL |
SQLEXCEPTION | SQLSTATE | SQLWARNING |
SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT |
SSL | STARTING | STRAIGHT_JOIN |
TABLE | TERMINATED | THEN |
TINYBLOB | TINYINT | TINYTEXT |
TO | TRAILING | TRIGGER |
TRUE | UNDO | UNION |
UNIQUE | UNLOCK | UNSIGNED |
UPDATE | USAGE | USE |
USING | UTC_DATE | UTC_TIME |
UTC_TIMESTAMP | VALUES | VARBINARY |
VARCHAR | VARCHARACTER | VARYING |
WHEN | WHERE | WHILE |
WITH | WRITE | X509 |
XOR | YEAR_MONTH | ZEROFILL |
注: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í)。