Изменение данных Select-ом??
Можно ли в SQL-запросе SELECT изменить значения некоторых ячеек таблицы, может поменять их местами?:-? :???:
Значения ячеек обычно меняется командой UPDATE.
Но можно и с помощью SELECT "менять" значения, типа:
INSERT INTO таблица1 SELECT ...
но желательно, чтоб таблица1 была пуста.
а если только нужно менять порядок столбцов таблицы в выборке, тогда перечисли их после слова SELECT в нужном порядке
Но можно и с помощью SELECT "менять" значения, типа:
INSERT INTO таблица1 SELECT ...
но желательно, чтоб таблица1 была пуста.
а если только нужно менять порядок столбцов таблицы в выборке, тогда перечисли их после слова SELECT в нужном порядке
В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.
Возможно задавшего вопрос интересует вовсе не изменение данных в таблице, а выдача данных пользователю в виде отличном от того как они хранятся в таблице?
Можно ли в SQL-запросе SELECT изменить значения некоторых ячеек таблицы, может поменять их местами?:-? :???:
Все SQL-сервера работают с данными путем создания транзакций. Соответственно, существует такое понятие, как транзакционная целостность данных. Согласно ему, оператор выборки select не может изменять данных. Поэтому, даже если пользователем будет написана собственная функция (если сервер это позволяет), изменяющая данные в процессе выборки, произойдет исключение по нарушению транзакционной целостности.
Следовательно, изменять данные select'ом нельзя.
Следовательно, изменять данные select'ом нельзя.
В Oracle можно и в Delphi тоже.
UPDATE table t SET fld = (SELECT ...)
P.S. мне кажется вопрос FLF был крайне неоднозначным.
UPDATE table t SET fld = (SELECT ...)
Приведенный пример показывает, как изменять данные select'А.
А вот изменять данные select'ОМ действительно нельзя.
Приведенный пример показывает, как изменять данные select'А.
А вот изменять данные select'ОМ действительно нельзя.
Можно, в Oracle
insert into (select * from tabl1)
(select * from tabl2)
Можно, в Oracle
insert into (select * from tabl1)
(select * from tabl2)
Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:
to: forw
В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.
to: rostyslav
В данном случае тоже значения изменяются в таблице командой UPDATE, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить вместо текущих.
Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:
to: rostyslav
В данном случае тоже значения изменяются в таблице командой UPDATE, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить вместо текущих.
уважаемый Gauss!!
SELECT-ом ничего менять не можно, как и с UPDATE не можно делать выборку. один действует в направлении [out] второй в направлении [in].
но есть такое UPDATE выражение, которое содержит SELECT и меняет данные. но меняет данные не SELECT так как он по природе это сделать не может.
для меня это настолько однозначно, что под вопросом: как менять данные SELECT-ом?, я подразумеваю: как написать UPDATE выражение, чтоб новое значение поля задавал SELECT запрос.
оператор, что я приводил
UPDATE table t SET fld = (SELECT ...)
называется оператором UPDATE.
на счет каши в голове...быстро это у тебя получается...но зато спасибо:)
Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:
to: forw
В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.
Спокойнее!
Товарищ задал вопрос и забыл про него(одна мессага). А вы распыляетесь 10 раз. Конечно вопрос был некорректный, конечно ответы на него были не по сути, потому что суть вопроса непонятна.
Были заданы наводящие вопросы, предложены варианты использования. Видимо задающий не понял сам, что спросил, тем более не поймет что ответили с таким знанием тонкостей операторов SELECT, UPDATE и INSERT.
[FONT=courier new][SIZE=3]
Выполнить операции INSERT одновременно для таблиц TAB2 и TAB3 на основании данных из таблицы TAB1. (Таблицы TAB2 и TAB3 имеют такую же структуру как TAB1)[/SIZE][/FONT]
это что параллельная обработка операторов или прикол SQL Oracle?
[FONT=courier new][SIZE=3]
Выполнить операции INSERT одновременно для таблиц TAB2 и TAB3 на основании данных из таблицы TAB1. (Таблицы TAB2 и TAB3 имеют такую же структуру как TAB1)[/SIZE][/FONT]
это что параллельная обработка операторов или прикол SQL Oracle?
Что значит "одновременно"? Операторы все равно будут выполняться последовательно, даже если создать instead of триггер.
Что значит "одновременно"? Операторы все равно будут выполняться последовательно, даже если создать instead of триггер.
Вопрос звучит именно так, дословно. Взят из теста при собеседовании.
Instead of триггер вряд ли, было бы слишком просто.
Скорее всего это связано с именно с параллельным выполнением запросов. Параллельное запросы появились в версии 9i, к сожалению не пришлось использовать это нововведение.
Скорее всего это связано с именно с параллельным выполнением запросов. Параллельное запросы появились в версии 9i, к сожалению не пришлось использовать это нововведение.
Насчет параллельных запросов не знаю, также не приходилось использовать. Дело в том, что в Oracle 9i добавилась также возможность вставлять данные одновременно в несколько таблиц. Об этом можно почитать здесь