집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server 2008 Management Studio에서는 상관 하위 쿼리에 잘못된 열 참조가 포함된 삭제 쿼리가 성공적으로 실행되도록 허용하는 이유는 무엇입니까?
SQL Server 2008 Management Studio 구문 검사 동작
SQL Server 2008 Management Studio에서 잘못된 열 참조가 포함된 쿼리를 실행할 때 예기치 않은 동작이 관찰되었습니다. 쿼리는 다음과 같습니다.
<code class="language-sql">delete from Photo where hs_id in (select hs_id from HotelSupplier where id = 142)</code>
"hs_id"는 "HotelSupplier" 테이블의 유효한 열 이름이 아니지만(올바른 열 이름은 "hs_key"임) 쿼리가 성공적으로 실행되어 "Photo" 테이블의 모든 행을 삭제합니다. 이는 다음과 같은 질문을 제기합니다. 구문 문제로 인해 쿼리가 실패해야 합니까?
그 대답은 상관 하위 쿼리의 개념에 있습니다. "DELETE" 문은 하위 쿼리와 연결되어 있습니다. 즉, 하위 쿼리의 "hs_id" 참조가 외부 쿼리("Photo")의 "hs_id" 열로 확인됩니다.
이는 유효한 동작이며 쿼리가 테이블 이름을 명시적으로 지정하지 않고도 상위 테이블의 열을 참조할 수 있게 해줍니다. 이 경우 결과는 다음과 같습니다.
<code class="language-sql">delete from Photo where Photo.hs_id in (select Photo.hs_id from HotelSupplier where id = 142)</code>
하위 쿼리 자체가 명시적으로 열을 투영하지 않더라도 외부 쿼리의 패턴은 하위 쿼리로 전파됩니다.
그러므로 "구문에 맞지 않는" 쿼리가 성공하도록 허용하고 하위 쿼리의 정규화되지 않은 열 참조를 외부 쿼리와 연관시키는 것은 SQL Server의 정상적인 동작으로 간주됩니다.
위 내용은 SQL Server 2008 Management Studio에서는 상관 하위 쿼리에 잘못된 열 참조가 포함된 삭제 쿼리가 성공적으로 실행되도록 허용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!