Oracle에서 CREATE 명령을 사용하여 열 이름을 큰따옴표로 묶으면 제대로 작동하지 않습니다. 이유는 무엇입니까?
간단한 표를 생각해 봅시다.products
(Oracle 9i를 사용해 보았습니다.)아래 CREATE 문으로 이 테이블을 작성합니다.
CREATE TABLE products
("prod_id" varchar2(7) primary key, "product_name" varchar2(30) NOT NULL);
특별히 주의해야 할 것은, 나는 두개의 따옴표 안에 열 이름을 넣고 있다는 것입니다.""
우리가 평소에 그랬던 것처럼.분명히 효과가 있을 것이고 그리고products
테이블은 지정된 제약 조건이 있는 두 열로 생성됩니다.
이제 다음 INSERT INTO 명령을 사용하여 일부 행을 이 테이블에 삽입합니다.
INSERT INTO products VALUES('P0001', 'Nokia-N97');
INSERT INTO products VALUES('P0002', 'Nokia-1208');
INSERT INTO products VALUES('P0003', 'Nokia-1115');
3개의 행을 삽입할 것입니다.products
테이블.
이러한 행이 실제로 삽입되었는지 확인하기 위해 다음과 같이 SELECT 문을 발행할 수 있습니다.
SELECT * FROM products;
우리가 삽입한 3개의 행을 표시하면 됩니다.
자, 여기 진짜 질문이 있습니다.우리가 아래의 SELECT 문을 발행할 때,
SELECT prod_id, product_name FROM products;
우리가 이 SQL에서 어떤 실수도 하지 않았음에도 불구하고 작동하지 않습니다.오라클은 대신 이러한 열이 존재하지 않는다고 보고할 것입니다.왜 이런 일이 일어날까요?아주 구체적인 이유가 있을 거라고 생각합니다.
제가 방금 한 것처럼 불필요하게 큰따옴표 안에 칼럼 이름을 넣는 것은 최선의 방법이 아닐 수도 있지만, 저는 단지 질문 하나만 떠올랐습니다.
일반적인 생각과는 달리 Oracle은 열 및 테이블 이름에서 대소문자를 구분합니다.기본적으로 모든 것을 대문자로 변환합니다.
그러나 큰따옴표로 된 이름을 사용할 경우 Oracle에서 제공한 정확한 철자로 열을 생성하도록 지시합니다(의 소문자는CREATE
성명서).
그 이후로SELECT
statement, 따옴표를 사용하지 않으며, 이름이 대문자로 변환되므로 아래의 소문자 이름과 같지 않습니다.CREATE
진술.
따라서 이 작업은 다음과 같이 수행됩니다.
SELECT "prod_id", "product_name" FROM products;
열 또는 테이블 이름이 지정된 방법을 모르는 경우 데이터 사전에서 검색할 수 있습니다.사용자에 대한 소문자 열 이름을 찾을 수 있습니다.product
테이블, 그러나 대문자 테이블 이름, 인용되지 않았기 때문입니다.
언급URL : https://stackoverflow.com/questions/8628412/enclosing-column-names-within-double-quoatation-marks-with-create-command-in-ora
'source' 카테고리의 다른 글
f가 x를 수정하면 x*f(x)의 값이 지정되지 않습니까? (0) | 2023.10.07 |
---|---|
각도 모듈 구성이 호출되지 않음 (0) | 2023.10.07 |
Android 디버그 브리지(adb) 장치 - 권한 없음 (0) | 2023.10.07 |
SQL: 열 값이 이전 행에서 변경된 행 선택 (0) | 2023.10.07 |
RHEL 서버에서 mysql 클라이언트를 깨끗하고 안전하게 제거하는 방법은? (0) | 2023.10.07 |