Давайте рассмотрим простую таблицу, скажем, products
в Oracle (я пробовал на 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');
Вставит три строки в таблицу products
.
Чтобы убедиться, что эти строки действительно вставлены или нет, мы можем выполнить инструкцию SELECT следующим образом.
SELECT * FROM products;
будет работать нормально и отобразит три вставленные строки.
Теперь актуальный вопрос здесь.Когда мы выполняем следующую инструкцию SELECT,
SELECT prod_id, product_name FROM products;
не будет работать, даже если мы не допустили ошибок в этом SQL.Вместо этого Oracle сообщит, что таких столбцов не существует.Почему это происходит?Я думаю, что для этого должна быть очень конкретная причина.
Я уверен, что добавление имен столбцов в двойные кавычки излишне, как я только что сделал, может быть не лучшей практикой, а просто вопрос, возникший у меня.