2009-07-15 4 views
5

왜 MYSQL이보다 일반적인 두 개의 등호 대신 조건문에서 하나의 등호를 사용하는지 궁금합니다. 이것에 대한 기술적/역사적 이유가 있습니까? 감사.MYSQL의 동일 함

답변

7

안녕하세요, 왜 MYSQL이 더 일반적인 두 개의 등호 대신 조건문에서 하나의 등호를 사용하는지 궁금합니다. 이것에 대한 기술적/역사적 이유가 있습니까? 감사.

SQL은 할당보다 훨씬 더 일반적입니다.

그런 이유로 SQL은 더 일반적인 구문을 사용하여 더 짧은 구문을 사용합니다.

고전적인 SQL에서 비교는 문맥에 따라 할당과 구별 될 수 있습니다. 할당은 UPDATE 문에서 SET 절에만있을 수 있습니다. 따라서 한 연산자가 두 연산에 모두 사용될 수 있습니다. SQLMySQL의 확장에

은 세션 변수에 할당은 SQL의 모호성을위한 경우가 결코 :=

+0

SQL은 Ingres의 QUEL에서 진화하지 않았습니다. QUEL은 어떤면에서는 더 나은 디자인 이었지만 SQL로 대체되었습니다. – lavinio

+0

@lavinio : 정확하고 그 부분을 제거했습니다. – Quassnoi

7

더 많은 역사적인.

그것은 SQL입니다. 70 년대 초반부터 비교를 위해 하나의 등호를 사용했습니다.

+0

소스에 대한 아이디어가 있으십니까? – Anon

+0

IBM에서 '70 년대에 개발했습니다. 그것은 원래 Structured English Query Language로 명명되었으므로 일반적인 인간 언어에 가깝도록 의도되었습니다. – Guffa

5

로 표시됩니다. C.J.Date (1987 판), 할당 =으로 SQL 표준 원래 가이드에서

UPDATESET 절에 사용됩니다. 다른 곳에서는 =이 사용되고 비교를 위해 사용됩니다.

그러나 C/C++/C#/Java와 같은 다른 언어에서는 =을 할당으로 사용할 수 있지만 값도 반환합니다. 따라서 a = b은 "ab과 같게 설정하고"a을 반환하는 것을 의미하는 반면, a == b은 "true을 반환하고 ab이 같으면"을 의미합니다. 자바 스크립트/ECMAScript를 같은

일부 언어는 세 번째 유형으로 ===를 소개합니다 (이 if (a = b)if (a == b)는 결과가 부울 할 필요가 없기 때문에, 유효한 둘 때문이다., C 프로그램에서 매우 일반적인 버그로 연결) 비교. 해당 언어에서 ==은 "동일한 유형으로 변환하여 비교"를 의미하는 반면 ===은 "동일한 유형 및 동일한 값인 경우에만 true을 반환합니다"를 의미합니다.