Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 6.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
117.5 Кб
Скачать

Некоторые другие команды sql

Помимо уже рассмотренных запросов на выборку данных при помощи команды SELECT, рассмотрим некоторые другие команды языка манипулирования данными. В частности, это команды INSERT (вставить), UPDATE (обновить) и DELETE (удалить).

Начнем со вставки - команды INSERT, которая добавляет запись с указанными значениями полей в конец таблицы. В упрощенной форме основной синтаксис этой команды можно представить следующим образом:

Insert into таблица [(поля)] values (значения)

В простейшем случае, когда надо заполнить все (или почти все) поля новой записи, достаточно написать подобное выражение:

Insert into regions values (77,'Москва')

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

INSERT INTO bill (BILL_CUST, BILL_SUMM, BILL_DATE) VALUES (1, 100, '01.01.2006')

В принципе, то, что выполняется при помощи команды SQL INSERT, похоже на то, что делает метод InsertRecord. Однако SQL предоставляет дополнительные возможности, в частности, вставку целой группы записей:

INSERT INTO bill (BILL_CUST, BILL_SUMM, BILL_DATE) VALUES (1, 100, '01.01.2006'), (1,200,'01.02.2006'), (1,150,'01.03.2006')

Еще более широкие возможности открываются при помощи комбинирования команды INSERT с командой SELECT, причем вставку можно производить как в ту же самую таблицу, так и в любую другую. Например, если нам надо в некую таблицу bill2 внести все записи из таблицы bill, имеющие суммы свыше 300, мы можем написать следующий запрос

INSERT INTO bill2 SELECT * FROM bill WHERE BILL_SUMM>300

Здесь предполагается, что структура таблиц bill и bill2 полностью идентична. Если же это было бы не так, то можно внести только часть полей (при условии, что типы полей будут совпадать). Например, если в таблице bill2 было бы поле для суммы, то для вставки всех подходящих сумм можно написать следующий запрос:

INSERT INTO bill2 (B2_SUMM) SELECT BILL_SUMM FROM bill WHERE BILL_SUMM>300

ПРИМЕЧАНИЕ

При помощи INSERT-SELECT можно очень просто копировать данные из одной таблицы в другую. В то же время, если надо просто вставить данные из подготовленного текстового файла, то ряд СУБД предлагает более удобные и быстрые команды, например, LOAD DATA INFILE в MySQL.

Другая команда SQL, применяемая для модификации данных - это UPDATE. Она позволяет изменять значения в столбцах данных таблицы. В общих чертах ее синтаксис можно представить следующим образом:

UPDATE таблица SET имя_поля = значение [WHERE условие]

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

UPDATE bill SET BILL_DATE = '01.01.2006'

Можно так же указывать не абсолютные, а вычисляемые значения:

UPDATE bill SET BILL_SUMM = BILL_SUMM * 2

Но чаще всего все-таки указывают условия, по которым следует находить те записи, которые следует изменить. Например, чтобы пересчитать все счета, выставленные до 31 января 2005 года, можно написать следующее выражение:

UPDATE bill SET BILL_SUMM = BILL_SUMM + 10 WHERE BILL_DATE<'31.12.2005'

Наконец, когда требуется изменить лишь какую-то определенную запись, что в качестве условия достаточно указать уникальное поле. Например, для таблицы счетов это поле BILL_ID, по которому можно однозначно идентифицировать какую-либо запись в таблице:

UPDATE bill SET BILL_SUMM = 1000 WHERE BILL_ID = 10

ВНИМАНИЕ

Следует учитывать, что если предусмотренные в VCL методы для работы с БД, как правило, влияют лишь на одну запись (т.е. на ту, что выделена курсором), то в SQL изменению подвержены все записи указанной таблицы.

Наконец, остается рассмотреть последнее часто применяемое действие - удаление записей из таблицы. В SQL для этих целей используют команду DELETE, определенную следующим образом:

DELETE FROM таблица [WHERE условие]

Подобно команде UPDATE, если не указано условие, то удалению будут подвержены все данные в таблице. Например, чтобы удалить все записи в таблице счетов, достаточно написать:

DELETE FROM bill

В более вероятном случае требуется удалить лишь единичные записи. Например, удалению могут быть подвержены счета, выписанные до 2006 года, или же какой-либо определенный (ошибочный) счет:

DELETE FROM bill WHERE BILL_DATE<'01.01.2006' DELETE FROM bill WHERE BILL_ID = 15

Таким образом, на текущий момент мы рассмотрели все основные команды SQL, относящиеся к языку манипулирования данными - SELECT, INSERT, UPDATE и DELETE. Во многих СУБД помимо этих команд имеется ряд дополнительных, например, TRUNCATE (аналог DELETE для всей таблицы) или REPLACE (вариация на тему вставки). Поэтому остается еще раз посоветовать ознакомиться с документацией на используемую СУБД.

То же самое касается и языка определения данных, представленного вариациями команд CREATE, DROP и ALTER: у каждой СУБД имеется собственный набор типов данных и свои тонкости работы с таблицами, индексами и т.д. В принципе, работая с "родными" для Delphi типами СУБД, вполне можно довольствоваться теми возможностями, что предоставляет утилита Database Desktop. Многие другие СУБД так же располагают собственными средствами, упрощающими процесс создания таблиц, в качестве примера можно привести широко распространенную утилиту phpMyAdmin, обеспечивающую управление СУБД MySQL через веб-интерфейс.