在mysql語句中為什麼要加反引號

來源:互聯網
上載者:User

標籤:body   time   inf   arch   asc   msu   cape   warning   start   

在MySQL語句中我們有時候經常會遇到反引號(``),剛開始的時候不知道什麼意思,他是什麼作用呢?

Select * from `member` order by posts desc limit 0,10; 
它是為了區分MYSQL的保留字與一般字元而引入的符號。舉個例子:SELECT `select` FROM `test` WHERE select=‘欄位值‘在test表中,有個select欄位,如果不用反引號,MYSQL將把select視為保留字而導致出錯,所以,有MYSQL保留字作為欄位的,必須加上反引號來區分。 引號一般用在欄位的值,如果欄位值是字元或字串,則要加引號,如:select=‘欄位值‘ 不加反引號建的表不能包含MYSQL保留字,否則出錯 反引號`,數字1左邊的符號。保留字不能用於表名,比如desc,此時需要加入反引號來區別,但使用表名時可忽略反引號。create table desc報錯create table `desc`成功create table `test`成功drop table test成功保留字不能用於欄位名,比如desc,此時也需要加入反引號,並且insert等使用時也要加上反引號。create table `test`(`desc` varchar(255))成功insert into test(desc) values(‘fxf‘)失敗insert into test(`desc`) values(‘fxf‘)成功  mysql常見的保留字使用mysql時一定要注意,不要使用它的保留字作為表名或者列名,否則會出現莫名其妙的錯誤。昨天建了一個表,其中一列名為interval(時間間隔),結果資料死都插不進去,最後才發現原來interval是mysql的保留字。以後出現類似的錯誤要先想想是不是因為表名或列名衝突造成的啊。從網上找了一個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 DIV
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允許部分關鍵字用做未引起來的識別符,因為許多人以前曾使用過它們。如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP所以為了安全起見可以在表名和欄位名上都加上``。

在mysql語句中為什麼要加反引號

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.