[SQL] 백틱 및 SQL 문에서 대괄호의 차이점은 무엇입니까?
SQL백틱 및 SQL 문에서 대괄호의 차이점은 무엇입니까?
나는 이것에 대해 또 다른 질문이있을 것이라고 생각하지만 난 하나를 찾을 수 없습니다. PHP I와 MySQL의에서 일반적으로 모든 예약 된 이름 또는 문자를 마스크 역 따옴표 내 필드 이름을 캡슐화합니다. 하지만, 내 동료 중 하나가이 대괄호를 사용하여 달성 될 수 있다고 지적했다. 역 따옴표의 차이점은 무엇입니까, SQL 서버 (분명히)과 호환되지 않는 사실을 제외? 나는 어떤을 사용해야합니까?
SELECT `username` FROM `users`
SELECT [username] FROM [users]
해결법
-
==============================
1.MySQL은 역 따옴표를 사용하는 반면 SQL 서버 / T-SQL은 대괄호 (물론 MS Access와 같은)를 사용합니다.
MySQL은 역 따옴표를 사용하는 반면 SQL 서버 / T-SQL은 대괄호 (물론 MS Access와 같은)를 사용합니다.
지금까지 내가 아는 한, 문서에서 설정할 수 있습니다, 또는 시험에 사용 대괄호는 MySQL을 위해 유효하지 않습니다. 당신은 SQL Server에서 테이블 이름으로 키워드를 묶어야합니다 경우에 따라서, 사용 [], 그리고 MySQL을 사용 역 따옴표 또는 큰 따옴표로 ANSI_QUOTES이 활성화 된 경우.
문서에서 :
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
mysql> CREATE TABLE "test" (col INT); ERROR 1064: You have an error in your SQL syntax... mysql> SET sql_mode='ANSI_QUOTES'; mysql> CREATE TABLE "test" (col INT); Query OK, 0 rows affected (0.00 sec)
-
==============================
2.모두 두 경우를 구분해야 개체 이름을 인용하는 표준이 아닌 방법입니다, 예약어 또는 그렇지 않으면 허용되지 않는 특수 문자가 포함되어 있습니다.
모두 두 경우를 구분해야 개체 이름을 인용하는 표준이 아닌 방법입니다, 예약어 또는 그렇지 않으면 허용되지 않는 특수 문자가 포함되어 있습니다.
이러한 식별자 문자를 인용 표준은 큰 따옴표입니다. ANSI SQL 호환 될 수 있도록, 당신이 그들을 사용해야합니다 :
SELECT "username" FROM "users"
그러나 인용 식별자는 대소 문자를 구분 ANSI SQL에 따라 참고. 그러나 모두 언급 한 제품이 요구 사항에 순종하지 않습니다. 이러한 여부 식별자는 대소 문자를 구분 여부를 MySQL의에서 몇 가지 (다른) 구성 설정 및 MS SQL Server의 데이터베이스 데이터 정렬에 따라 달라집니다.
두 DBMS는 (내 의견으로한다)뿐만 아니라 ANSI 표준 따옴표 문자를 허용하도록 구성 할 수 있습니다.
난 강력하게 인용 필요로하는 모든 개체 이름을 피하기 위해 추천 할 것입니다. 인용이 필요하지 않은 식별자를 사용하는 것은 장기적으로 문제를 많이 절약 할 수 있습니다.
from https://stackoverflow.com/questions/9719869/what-is-the-difference-between-the-backtick-and-the-square-bracket-in-sql-statem by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 와이즈 최대 (0) | 2020.04.08 |
---|---|
[SQL] SELECT 쿼리의 기본 행 순서 - SQL 2012 대 SQL 서버 2008 (0) | 2020.04.08 |
[SQL] 액세스-SQL : 내부는 여러 테이블에 가입 (0) | 2020.04.08 |
[SQL] 어떻게 연속 범위에 나 나 그룹을 (0) | 2020.04.08 |
[SQL] C #을 사용 데이터베이스에 이미지를 저장하는 방법 [마감] (0) | 2020.04.08 |