2009-10-24 7 views
2

Я начинаю изучать SQL, и у меня есть некоторые проблемы.SQL Delete and Update

У меня есть одна база данных с 4 таблицами.

Все 4 таблицы имеют идентификатор столбца.

Что-то вроде этого:

Table name................Column #1..................Column #2 
    Table1.................... ID......................Data1.. 
    Table2......................ID......................Data2.. 
    Table3......................ID......................Data3.. 
    Table4......................ID......................Data4.. 

Я делаю выбор по ID.

SELECT Data1, Data2, Data3, Data4 FROM TABLE1 
INNER JOIN TABLE2 ON TABLE1.ID = TABLE2.ID 
INNER JOIN TABLE3 ON TABLE1.ID = TABLE3.ID 
INNER JOIN TABLE4 ON TABLE1.ID = TABLE4.ID 
WHERE TABLE.ID=' X ' 

Как удалить и обновить столбцы в этих 4 таблицах по ID? Может кто-нибудь мне помочь? Я новичок.

+0

Is ID в одной таблице является иностранным ключом в другой таблице? – srv

+2

Какие СУБД вы используете? – Macarse

ответ

2

колонка Обновление значений

UPDATE table1 
SET data1 = myvalue 
WHERE table1.id = ' X ' 

UPDATE table2 
SET data2 = myvalue 
WHERE table1.id = ' X ' 

UPDATE table3 
SET data3 = myvalue 
WHERE table1.id = ' X ' 

UPDATE table4 
SET data4 = myvalue 
WHERE table1.id = ' X ' 

Удалить строки, соответствующие определенным критериям

DELETE FROM table1 
WHERE data1 = myvalue 

DELETE FROM table2 
WHERE data2 = myvalue 

DELETE FROM table3 
WHERE data3 = myvalue 

DELETE FROM table4 
WHERE data4 = myvalue 

Удалить столбец из таблицы

ALTER TABLE table1 
DROP COLUMN data1 


ALTER TABLE table2 
DROP COLUMN data2 


ALTER TABLE table3 
DROP COLUMN data3 


ALTER TABLE table4 
DROP COLUMN data4 
+0

Хотя синтаксис ALTER TABLE/DROP COLUMN отвечает на заданный личный вопрос, я думаю, что Майкл, вероятно, собирался спросить об удалении строк, не отбрасывая столбцы. –

+0

Я не был уверен, что означает OP, надеюсь, что мой ответ поможет, обновлен, чтобы отразить это. –

+0

Намного лучше отказаться от столбцов идентификаторов и использовать естественные первичные ключи: D –

7

В стандартном SQL вы можете SELECT из более чем одной таблицы за раз, но вы не можете УДАЛИТЬ или ОБНОВИТЬ более одной таблицы за раз. Поэтому вы будете использовать команды:

UPDATE Table1 SET Column = NewData WHERE. , ,

и

DELETE FROM Table1 WHERE. , ,

Исключение состоит в том, что таблицы связаны друг с другом «официально», используя PRIMARY и FOREIGN KEYS, вы можете иметь UPDATE связующих столбцов и DELETE строк «поток» через связанные таблицы. Для этого вы используете параметр CASCADE SQL при объявлении ключей.

Некоторые поставщики предлагают дополнительные нестандартные расширения, которые позволяют вам ОБНОВЛЯТЬ или УДАЛИТЬ из более чем одной таблицы, но для тех, кому вы должны указать базу данных, которую используете.

0

Я не понимаю, почему вы так поступаете. Я думаю, что ваш дизайн неправильный.

Если вы собираетесь обновлять/удалять то, что находится в нескольких таблицах, добавьте новую таблицу и привяжите каждую таблицу к этой таблице.

+2

Вы не получите ответы на вопросы, которые начинаются с «I не поймите, почему вы так поступаете. Я думаю, что ваш дизайн неправильный ». –

+0

@ Крис: Вы правы, это звучит оскорбительно. Виноват :( – Macarse