Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменение данных Select-ом??

4.6K
27 июля 2004 года
FLF
10 / / 03.03.2004
Можно ли в SQL-запросе SELECT изменить значения некоторых ячеек таблицы, может поменять их местами?:-? :???:
368
27 июля 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by FLF
Можно ли в SQL-запросе SELECT изменить значения некоторых ячеек таблицы, может поменять их местами?:-? :???:


Значения ячеек обычно меняется командой UPDATE.

Но можно и с помощью SELECT "менять" значения, типа:
INSERT INTO таблица1 SELECT ...

но желательно, чтоб таблица1 была пуста.

а если только нужно менять порядок столбцов таблицы в выборке, тогда перечисли их после слова SELECT в нужном порядке

265
28 июля 2004 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by rostyslav

Но можно и с помощью SELECT "менять" значения, типа:
INSERT INTO таблица1 SELECT ...

но желательно, чтоб таблица1 была пуста.

а если только нужно менять порядок столбцов таблицы в выборке, тогда перечисли их после слова SELECT в нужном порядке

В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.

Возможно задавшего вопрос интересует вовсе не изменение данных в таблице, а выдача данных пользователю в виде отличном от того как они хранятся в таблице?

10
04 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by FLF
Можно ли в SQL-запросе SELECT изменить значения некоторых ячеек таблицы, может поменять их местами?:-? :???:


Все SQL-сервера работают с данными путем создания транзакций. Соответственно, существует такое понятие, как транзакционная целостность данных. Согласно ему, оператор выборки select не может изменять данных. Поэтому, даже если пользователем будет написана собственная функция (если сервер это позволяет), изменяющая данные в процессе выборки, произойдет исключение по нарушению транзакционной целостности.

Следовательно, изменять данные select'ом нельзя.

368
06 августа 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by smartsoft

Следовательно, изменять данные select'ом нельзя.


В Oracle можно и в Delphi тоже.

UPDATE table t SET fld = (SELECT ...)

P.S. мне кажется вопрос FLF был крайне неоднозначным.

10
08 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by rostyslav
UPDATE table t SET fld = (SELECT ...)


Приведенный пример показывает, как изменять данные select'А.

А вот изменять данные select'ОМ действительно нельзя.

5.7K
25 августа 2004 года
forw
47 / / 24.08.2004
Цитата:
Originally posted by smartsoft

Приведенный пример показывает, как изменять данные select'А.

А вот изменять данные select'ОМ действительно нельзя.


Можно, в Oracle
insert into (select * from tabl1)
(select * from tabl2)

265
26 августа 2004 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by forw

Можно, в Oracle
insert into (select * from tabl1)
(select * from tabl2)


Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:


to: forw
В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.

to: rostyslav
В данном случае тоже значения изменяются в таблице командой UPDATE, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить вместо текущих.

368
26 августа 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Gauss

Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:

to: rostyslav
В данном случае тоже значения изменяются в таблице командой UPDATE, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить вместо текущих.


уважаемый Gauss!!

SELECT-ом ничего менять не можно, как и с UPDATE не можно делать выборку. один действует в направлении [out] второй в направлении [in].

но есть такое UPDATE выражение, которое содержит SELECT и меняет данные. но меняет данные не SELECT так как он по природе это сделать не может.

для меня это настолько однозначно, что под вопросом: как менять данные SELECT-ом?, я подразумеваю: как написать UPDATE выражение, чтоб новое значение поля задавал SELECT запрос.

оператор, что я приводил

UPDATE table t SET fld = (SELECT ...)

называется оператором UPDATE.

на счет каши в голове...быстро это у тебя получается...но зато спасибо:)

5.7K
27 августа 2004 года
forw
47 / / 24.08.2004
Цитата:
Originally posted by Gauss

Уважаемые ALL!
Я обнаружил здесь несколько постов показывающих что у их авторов каша в голове!!! Еще раз пишу:


to: forw
В данном случае тоже значения вставляются в таблицу командой INSERT, а команда SELECT используется в подзапросе для получения данных которые необходимо вставить.



Спокойнее!

Товарищ задал вопрос и забыл про него(одна мессага). А вы распыляетесь 10 раз. Конечно вопрос был некорректный, конечно ответы на него были не по сути, потому что суть вопроса непонятна.

Были заданы наводящие вопросы, предложены варианты использования. Видимо задающий не понял сам, что спросил, тем более не поймет что ответили с таким знанием тонкостей операторов SELECT, UPDATE и INSERT.

5.7K
27 августа 2004 года
forw
47 / / 24.08.2004
Возможно есть какие-нибудь мысли по поводу. Есть такое условие

[FONT=courier new][SIZE=3]
Выполнить операции INSERT одновременно для таблиц TAB2 и TAB3 на основании данных из таблицы TAB1. (Таблицы TAB2 и TAB3 имеют такую же структуру как TAB1)[/SIZE][/FONT]

это что параллельная обработка операторов или прикол SQL Oracle?
10
27 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by forw
[FONT=courier new][SIZE=3]
Выполнить операции INSERT одновременно для таблиц TAB2 и TAB3 на основании данных из таблицы TAB1. (Таблицы TAB2 и TAB3 имеют такую же структуру как TAB1)[/SIZE][/FONT]

это что параллельная обработка операторов или прикол SQL Oracle?


Что значит "одновременно"? Операторы все равно будут выполняться последовательно, даже если создать instead of триггер.

5.7K
27 августа 2004 года
forw
47 / / 24.08.2004
Цитата:
Originally posted by smartsoft

Что значит "одновременно"? Операторы все равно будут выполняться последовательно, даже если создать instead of триггер.



Вопрос звучит именно так, дословно. Взят из теста при собеседовании.
Instead of триггер вряд ли, было бы слишком просто.

Скорее всего это связано с именно с параллельным выполнением запросов. Параллельное запросы появились в версии 9i, к сожалению не пришлось использовать это нововведение.

10
27 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by forw
Скорее всего это связано с именно с параллельным выполнением запросов. Параллельное запросы появились в версии 9i, к сожалению не пришлось использовать это нововведение.


Насчет параллельных запросов не знаю, также не приходилось использовать. Дело в том, что в Oracle 9i добавилась также возможность вставлять данные одновременно в несколько таблиц. Об этом можно почитать здесь

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог