>데이터 베이스 >MySQL 튜토리얼 >SQL Server 2008 Management Studio에서는 상관 하위 쿼리에 잘못된 열 참조가 포함된 삭제 쿼리가 성공적으로 실행되도록 허용하는 이유는 무엇입니까?

SQL Server 2008 Management Studio에서는 상관 하위 쿼리에 잘못된 열 참조가 포함된 삭제 쿼리가 성공적으로 실행되도록 허용하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-20 01:06:10771검색

Why Does SQL Server 2008 Management Studio Allow a Delete Query with an Invalid Column Reference in a Correlated Subquery to Execute Successfully?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.