복붙노트

[SQL] 백틱 및 SQL 문에서 대괄호의 차이점은 무엇입니까?

SQL

백틱 및 SQL 문에서 대괄호의 차이점은 무엇입니까?

나는 이것에 대해 또 다른 질문이있을 것이라고 생각하지만 난 하나를 찾을 수 없습니다. PHP I와 MySQL의에서 일반적으로 모든 예약 된 이름 또는 문자를 마스크 역 따옴표 내 필드 이름을 캡슐화합니다. 하지만, 내 동료 중 하나가이 대괄호를 사용하여 달성 될 수 있다고 지적했다. 역 따옴표의 차이점은 무엇입니까, SQL 서버 (분명히)과 호환되지 않는 사실을 제외? 나는 어떤을 사용해야합니까?

SELECT `username` FROM `users`
SELECT [username] FROM [users]

해결법

  1. ==============================

    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. ==============================

    2.모두 두 경우를 구분해야 개체 이름을 인용하는 표준이 아닌 방법입니다, 예약어 또는 그렇지 않으면 허용되지 않는 특수 문자가 포함되어 있습니다.

    모두 두 경우를 구분해야 개체 이름을 인용하는 표준이 아닌 방법입니다, 예약어 또는 그렇지 않으면 허용되지 않는 특수 문자가 포함되어 있습니다.

    이러한 식별자 문자를 인용 표준은 큰 따옴표입니다. ANSI SQL 호환 될 수 있도록, 당신이 그들을 사용해야합니다 :

    SELECT "username" FROM "users"
    

    그러나 인용 식별자는 대소 문자를 구분 ANSI SQL에 따라 참고. 그러나 모두 언급 한 제품이 요구 사항에 순종하지 않습니다. 이러한 여부 식별자는 대소 문자를 구분 여부를 MySQL의에서 몇 가지 (다른) 구성 설정 및 MS SQL Server의 데이터베이스 데이터 정렬에 따라 달라집니다.

    두 DBMS는 (내 의견으로한다)뿐만 아니라 ANSI 표준 따옴표 문자를 허용하도록 구성 할 수 있습니다.

    난 강력하게 인용 필요로하는 모든 개체 이름을 피하기 위해 추천 할 것입니다. 인용이 필요하지 않은 식별자를 사용하는 것은 장기적으로 문제를 많이 절약 할 수 있습니다.

  3. 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