집 >데이터 베이스 >MySQL 튜토리얼 >따옴표는 Oracle의 테이블 이름에 어떤 영향을 줍니까?
Oracle 테이블 이름: 따옴표의 중요성
오라클 데이터베이스 관리에서 자주 묻는 질문 중 하나는 테이블 이름 주위에 큰따옴표를 사용하는 것과 관련이 있습니다. 겉으로는 단순해 보이지만, 일반적인 오류를 피하려면 해당 기능을 이해하는 것이 중요합니다.
Oracle의 기본 동작은 대소문자를 구분하지 않는 식별자 처리입니다. 이는 MyTable
, mytable
, MYTABLE
이 모두 동일한 테이블로 취급된다는 의미입니다. 그러나 테이블 이름을 큰따옴표로 묶으면 변경됩니다.
큰따옴표는 대소문자를 구분합니다. "MyTable"
은 "mytable"
또는 "MYTABLE"
과 다릅니다. 따옴표를 사용하여 생성된 경우 테이블은 반드시 동일한 대소문자 및 따옴표로 참조되어야 합니다.
다음 예를 고려하세요.
<code class="language-sql">SELECT * FROM mytable WHERE id = 1; -- Works (case-insensitive)</code>
이 쿼리는 Oracle의 기본 대소문자 구분 일치로 인해 성공합니다. 그러나 이것은 실패합니다:
<code class="language-sql">SELECT * FROM "mytable" WHERE id = 1; -- Fails (case-sensitive)</code>
이 오류는 "mytable"
이 대소문자를 구분하도록 정의되었기 때문에 발생합니다. 쿼리에는 정확한 대소문자와 따옴표가 필요합니다.
Oracle은 내부적으로 대소문자 구분 비교를 사용하지만 비교하기 전에 따옴표가 없는 식별자를 대문자로 표시합니다. 인용은 이를 우회합니다.
따옴표가 포함된 표 만들기:
<code class="language-sql">CREATE TABLE "my_data"(col1 NUMBER, col2 VARCHAR2(255));</code>
올바른 검색어:
<code class="language-sql">SELECT * FROM "my_data"; SELECT * FROM "MY_DATA"; SELECT * FROM "My_Data";</code>
그러나 이는 실패합니다.
<code class="language-sql">SELECT * FROM my_data;</code>
반대로 따옴표 없이 테이블을 만드는 경우:
<code class="language-sql">CREATE TABLE my_other_data(col1 NUMBER, col2 VARCHAR2(255));</code>
다음 검색어는 모두 올바르지 않습니다.
<code class="language-sql">SELECT * FROM My_Other_Data; SELECT * FROM "my_other_data"; SELECT * FROM "MY_OTHER_DATA";</code>
이 방법만 작동합니다:
<code class="language-sql">SELECT * FROM my_other_data;</code>
효과적인 Oracle 데이터베이스 관리 및 쿼리 작성을 위해서는 대소문자 구분(따옴표 있음) 식별자와 대소문자 구분 안 함(따옴표 없음) 식별자의 차이점과 큰따옴표의 역할을 이해하는 것이 필수적입니다.
위 내용은 따옴표는 Oracle의 테이블 이름에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!