백틱과 아포스트로피의 큰 차이점은 무엇입니까?
다음 두 가지 쿼리가 크게 다른 결과를 제공하는 이유는 무엇입니까?
MariaDB [mydatabase]> SELECT COUNT(DISTINCT(`price`)) FROM `products`; --Good
+--------------------------+
| COUNT(DISTINCT(`price`)) |
+--------------------------+
| 2059 |
+--------------------------+
1 row in set (0.01 sec)
MariaDB [mydatabase]> SELECT COUNT(DISTINCT('price')) FROM `products`; --Bad
+--------------------------+
| COUNT(DISTINCT('price')) |
+--------------------------+
| 1 |
+--------------------------+
1 row in set (0.01 sec)
backticks와 apostropes(단일 따옴표)의 차이에 대해 구글을 검색해 보았습니다만, 위와 같은 컬럼 이름에 대해 왜 다르게 해석되는지 알 수 없습니다.
후자의 쿼리에서 따옴표로 묶인 문자열은 실제로는 열 이름이 아니라 "1"이라고 할 수 있는 임의의 문자열 리터럴로 해석되는 것입니까?만약 그렇다면, 이 아포스트로피의 의미를 설명하는 페이지를 찾기가 쉽지 않다.
'price'(따옴표 또는 따옴표)는 문자열입니다.변경되지 않기 때문에 카운트는 항상 1입니다.
price(백틱스)는 칼럼을 말한다.price
1개 이상일 수 있습니다.
안쪽 괄호는 관계가 없습니다. COUNT(DISTINCT price)
backtic 버전과 동일합니다.
SELECT COUNT(*) FROM tbl WHERE ...
몇 줄인지 묻는 일반적인 방법입니다.SELECT foo, COUNT(*) FROM tbl GROUP BY foo
각 개별 값에 대해 몇 개의 행이 있는지 묻는 일반적인 방법입니다.foo
.SELECT foo, COUNT(foo) FROM tbl GROUP BY foo
상기와 동일하지만, 다음의 행은 카운트 되지 않습니다.foo IS NULL
.
SELECT DISTINCT ... GROUP BY ...
말도 안 되는 발언입니다.DISTINCT를 사용하거나 GROUP BY를 사용합니다.
스트링 리터럴에는 스트레이트 큰따옴표(')가 사용됩니다(스트레이트 큰따옴표(")).
backtick quote(')는 식별자를 인용하기 위한 것입니다.
식별자는 예약된 단어와 일치하거나 특수 문자가 포함된 경우 따옴표로 묶어야 합니다.따옴표로 둘러싸인 식별자는 대소문자를 구분하지 않는 필드에 소문자를 지정할 수도 있습니다(대문자로 표시될 수 있습니다).
CREATE TABLE MyTable (Field INT);
DESCRIBE MyTable;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| FIELD | INT | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
「ANSI 따옴표 모드」도 참조해 주세요.
식별자 이름 및 문자열 리터럴에 대한 MariaDB 설명서를 참조하십시오.
https://mariadb.com/kb/en/mariadb/identifier-names/
https://mariadb.com/kb/en/mariadb/string-literals/
뒷따옴표는 항상 식별자 이름을 따옴표로 묶습니다.작은 따옴표는 항상 문자열 리터럴을 따옴표로 묶습니다.
식별자 이름은 값으로 대체되지만 문자열 리터럴은 그렇지 않습니다.
SELECT `price`, 'price' FROM products;
+-------+-------+
| 1 | price |
| 1 | price |
| 2 | price |
| 3 | price |
| 3 | price |
+-------+-------+
언급URL : https://stackoverflow.com/questions/29402361/what-makes-the-big-difference-between-a-backtick-and-an-apostrophe
'programing' 카테고리의 다른 글
Maria에서의 LOCAL INFILE 비활성화DB (0) | 2022.12.11 |
---|---|
PHP의 echo, print, print_r의 차이점은 무엇입니까? (0) | 2022.12.11 |
$_POST를 발행하는 경우 (0) | 2022.12.11 |
디렉터리에서 필터링된 파일 목록 가져오기 (0) | 2022.12.11 |
MariaDB Galera 클러스터 설정 문제 (0) | 2022.12.11 |