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

Ваш аккаунт

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

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

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

SELECT внутри ALTER TABLE

80K
18 апреля 2012 года
kermenter
3 / / 08.04.2012
В SQL есть возможность выбирать таблицу или значения из уже выбранной таблицы, пример :
SELECT column_name
FROM (SELECT *
FROM table_name) AS T

Если не добавить строчку " AS T ", то sql возвращает ошибку "Every derived table must have its own alias" мол каждая таблица должна иметь своё имя.
Вопрос, собственно, в следующем 1) Что делает строчка "AS T"? 2) почему такой же метод не проходит, когда я использую ALTER TABLE, код :

ALTER TABLE (
SELECT *
FROM table_name) AS T
ADD column_name datatype
385
18 апреля 2012 года
SomewherSomehow
477 / / 25.07.2004
Ио-маио. Как только народ не извращается над sql серверами.
Ув., kermenter, во первых, всегда указывайте СУБД, различные сервера, могут сильно различаться в требованиях.
Судя по тому, что есть тег phpmyadmin, я предполагаю что речь идет о MySQL (в котором я увы не спец, но тем не менее, что-то общее есть у всех СУБД).

AS T - это альяс. Альясы, существуют для того, чтобы ссылаться на любое отображение к таблице или выборки из нее. Вы когда альтерите, вы запрос альтерите? А если вы там напишете не звездочку а: Colum1*Colum2/Comun3, то что вам сервер должен изменить? Видимо по-этому, альясы не совместимы с DDL инструкциями. Зато вы их можете влегкую использовать в DML инструкциях. Просто примите это как факт. Альяс не означает ссылку на талицу напрямую, он означает ссылку на некое действие над таблицей, если оно совпадает полностью с таблицей - это просто частный случай. Это если объяснять упрощенно. Возможно в других субд это не так, но в MSSQL это так, и видимо в MySQL тоже.
412
18 апреля 2012 года
grgdvo
323 / / 04.07.2007
Перемешивать выражения DDL (CREATE, DROP, ALTER...) и DML (SELECT, INSERT, UPDATE...) нельзя.

Если речь действительно об MySQL, то почитайте про динамический SQL.
Выражения PREPARE и EXECUTE
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог