MySQL 쿼리에서 백틱 (`)을 사용하면 어떤 이점이 있습니까?


25

MySQL에서는 백틱 ( `) 기호 가 있거나없는 쿼리를 만들 수 있습니다 . 예:

  1. SELECT * FROM TEST;
  2. SELECT * FROM `TEST`;

둘 다 mysql-console에서 잘 작동합니다.

그들 사이에 기술적 차이가 있습니까?

`간단한 쿼리보다 ( )를 사용하면 어떤 이점이 있습니까?

답변:


32

따옴표 붙은 식별자라고하며 파서에게 텍스트를 리터럴 문자열로 처리하도록 지시합니다. 키워드 나 공백이 포함 된 열이나 테이블이있을 때 유용합니다. 예를 들어 다음은 작동하지 않습니다.

CREATE TABLE my table (id INT);

그러나 다음은

CREATE TABLE `my table` (id INT);

또한 COUNT예약 키워드 이므로 다음과 같은 오류가 발생 합니다.

SELECT count FROM some_table

그러나 다음은 올바르게 구문 분석됩니다.

SELECT `count` FROM some_table

이것이 도움이되기를 바랍니다.


24

객체 식별자 주위에 무언가를 사용하려면 최소한 표준 큰 따옴표를 사용하십시오. "

이것은 MySQL, PostgreSQL, SQL Server, Oracle 등에서 작동합니다. MySQL의 경우 기본 구성에 따라 SQL 모드 ansi_quotes 가 필요할 수 있습니다 .

SET sql_mode = 'ANSI_QUOTES';

Backticks`는 MySQL에서만 사용되며 다른 브랜드의 DBMS에서는 작동하지 않는 SQL 유형을 배웁니다.


6

이는 테이블 이름에 공백이있을 수 있음을 의미합니다. 물론 특별한 매력은 없습니다. SQL Server의 []와 동일합니다.


3

이름이 예약 된 열이 있으면 도움이 될 수 있습니다.

예 : 다음과 같은 문장을 쿼리 할 수 ​​있습니다.

select * from tablename group by `group`;

1

내 관점에서 @ Mr.Brownstone 답변은 부분적으로 만 정확합니다.

백틱 `은 MySQL에서 문자열이 아닌 식별자를 나타내는 리터럴을 구분하는 데 사용됩니다.

공백, 예약어 등 일반적으로 허용되지 않는 문자를 식별자로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

SELECT * FROM `Strange table name`;

또한 존재하지 않는 열을 선택하는 것과 같은 잘못된 일이 있는지 파서가 알 수 있도록하는 것이 중요합니다. 예를 들면 다음과 같습니다.

SELECT notexistingcolumn FROM atable;

만약 atable존재하지만 notexistingcolumn열 (경고 발광 아마와) 값으로 선택 "notexistingcolumn"는 리터럴 문자열로 해석됩니다 존재하지 않습니다.

대신 다음을 사용하는 경우 :

SELECT `notexistingcolumn` FROM `atable`;

notexistingcolumn존재하지 않는 열의 이름 임을 인식 하고 오류를 발생시킵니다.

필자는 별칭을 포함하여 백틱으로 식별자를 둘러싸고 식별자에 예약어와 이상한 문자를 사용하지 않는 것이 항상 바람직하다고 생각합니다.

https://dev.mysql.com/doc/refman/8.0/en/identifiers.html 에서 MySQL의 백틱에 대한 자세한 내용을 읽을 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.