SQL에서 작은 따옴표와 큰 따옴표의 차이점은 무엇입니까?


224

SQL에서 작은 따옴표와 큰 따옴표의 차이점은 무엇입니까?

답변:


153

작은 따옴표는 SQL에서 문자열의 시작과 끝을 나타내는 데 사용됩니다. 큰 따옴표는 일반적으로 SQL에서 사용되지 않지만 데이터베이스마다 다를 수 있습니다.

작은 따옴표를 사용하십시오.

그것은 어쨌든 주요 용도입니다. 열 별칭에 작은 따옴표를 사용할 수 있습니다. 응용 프로그램 코드에서 참조하는 열 이름이 실제로 데이터베이스에서 열이 호출되는 것과 다른 이름이되도록합니다. 예를 들어 : PRODUCT.id가보다 읽기 쉽기 product_id때문에 다음 중 하나를 사용합니다.

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

Oracle, SQL Server, MySQL에서 작동하지만 TOAD IDE가 작은 따옴표 접근 방식을 사용할 때 약간의 슬픔을주는 것으로 나타났습니다.

열 별칭에 공백 문자가 포함 된 경우 작은 따옴표를 사용해야 product id하지만 열 별칭이 두 단어 이상인 것은 권장되지 않습니다.


31
큰 따옴표는 일반적으로 개체 이름 (예 : 열 이름 "이름")에 사용됩니다. 그것은 SQL-92 표준의 일부입니다.
LukLed

19
아니요. 열 이름을 의미했지만 별칭과 관련이 있습니다. SQL-92 표준으로 인해 별명과 이상한 문자가있는 이름에 큰 따옴표를 사용하는 것이 좋습니다. SELECT * FROM USERS 'Users'SQL Server에서는 작동하지 않지만 작동 SELECT * FROM USERS "Users"합니다.
LukLed

122
나는 간단한 규칙을 실현 때까지 항상이 잘못을 얻을 : [S]에 대한 인용 화롯불 [S] trings, [D] atabase에서 [D]의 것들에 대한 ouble 인용
Spacedman

4
식별자에는 큰 따옴표를 사용해야합니다. 작은 따옴표는 표준에 반합니다.
Erwin Brandstetter

6
SELECT PRODUCT.id 'product_id'수 없습니다 오라클에서 작동합니다. 작은 따옴표는 문자 리터럴 에만 사용됩니다 . (표준) SQL의 식별자에는 사용할 수 없습니다 (일부 DBMS는 인용 된 식별자와 관련하여 SQL 표준을 무시하지만)
a_horse_with_no_name

80

어떤 경우에 무엇을 사용해야하는지 기억하는 간단한 규칙 :

  • [ S ] 작은 따옴표는 [ S ] 트레이딩을위한 것입니다; [ D ] 이중 인용 부호는 [ D ] atabase 식별자에 대한 것입니다.

MySQL과 MariaDB에서 ` (역 따옴표) 기호는 동일하다 " 기호. 당신이 사용할 수있는 " 당신이 때 SQL_MODEANSI_QUOTES수있었습니다.


4
명확히하기 위해, 역 따옴표 (`)를 사용하여 ANSI_QUOTES가 활성화되어 있는지 여부에 상관없이 식별자를 구분할 수 있지만 ANSI_QUOTES가 활성화되어 있으면 "큰 따옴표를 사용하여 리터럴 문자열을 인용 할 수 없습니다. 식별자로 해석되기 때문입니다." ( 소스 ). (이 모든 것은 당신이 MySQL에 대해 이야기하고 있다고 가정합니다.)
Sam

와! 훌륭한 메모!
Alex Yu

그러나 [ S ] 한 따옴표는 [ D ] ate 리터럴에도 사용됩니다. :-/
Bill Karwin

대부분의 DBMS에서 문자열로 날짜 리터럴 카운트
Please_Dont_Bully_Me_SO_Lords

64

작은 따옴표는 문자열 상수 또는 날짜 / 시간 상수를 구분합니다.

큰 따옴표는 테이블 이름 또는 열 이름과 같은 식별자를 구분합니다. 이는 일반적으로 식별자가 간단한 식별자 규칙에 맞지 않을 때만 필요합니다.

또한보십시오:

ANSI 표준에 따라 MySQL에서 큰 따옴표를 사용하도록 할 수 있습니다.

SET GLOBAL SQL_MODE=ANSI_QUOTES

Microsoft SQL Server가 ANSI 표준에 따라 큰 따옴표를 사용하도록 할 수 있습니다.

SET QUOTED_IDENTIFIER ON

36

ANSI SQL에서 큰 따옴표는 오브젝트 이름 (예 : 테이블)을 인용하여 다르게 허용되지 않는 문자를 포함하거나 예약어와 동일 할 수 있습니다 (실제로 피하십시오).

작은 따옴표는 문자열입니다.

그러나 MySQL은 SQL_MODE가 변경되지 않는 한 표준을 잊어 버리고 문자열에 대해 상호 교환 가능하게 사용할 수 있습니다.

또한 Sybase와 Microsoft는 식별자 인용에 대괄호를 사용합니다.

따라서 벤더마다 다릅니다.

Postgres 및 IBM과 같은 다른 데이터베이스는 실제로 ANSI 표준을 준수합니다. :)


4
MySql은 식별자 인용에 백틱`을 사용합니다. (완료를 위해)
dar7yl

1
예 : Postgres 열의 이름을 "date"(예약 됨)로 지정하려면 큰 따옴표로 묶어야합니다.
fny

9

이 니모닉을 사용합니다.

  • 작은 따옴표는 문자열에 대한 것입니다 (한 가지)
  • 큰 따옴표는 테이블 이름과 열 이름입니다 (두 가지).

사양에 따르면 100 % 정확하지는 않지만이 니모닉은 나를 도와줍니다 (인간).


1

차이점은 사용법에 있습니다. 작은 따옴표는 주로 WHERE, HAVING 및 CONCAT, STRPOS, POSITION 등과 같은 일부 내장 SQL 함수에서 문자열을 참조하는 데 사용됩니다.

사이에 공백이있는 별명을 사용하려는 경우 큰 따옴표를 사용하여 해당 별명을 참조 할 수 있습니다.

예를 들어

(select account_id,count(*) "count of" from orders group by 1)sub 

다음은 accounts_id를 외래 키로 주문 테이블의 하위 쿼리로, 각 계정이 주문한 수량을 알기 위해 집계합니다. 여기서는 목적을 위해 하나의 열에 임의의 이름을 "count"로 지정했습니다.

이제 "count of"가 20보다 큰 행을 표시하는 외부 쿼리를 작성해 봅시다.

select "count of" from 
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;

동일한 테이블을 공통 테이블 표현식에도 적용 할 수 있습니다.

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