在mysql语句中为什么要加反引号

转载文章:
原文链接:https://www.cnblogs.com/yangzailu/p/6694000.html

在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 tabledesc成功 create tabletest成功 drop table test成功 保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。 create tabletestdescvarchar(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
所以为了安全起见可以在表名和字段名上都加上``

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值