Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры бд.docx
Скачиваний:
111
Добавлен:
17.06.2021
Размер:
4.93 Mб
Скачать

31. Язык sql: вставка новой записи в таблицу.

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

VALUES (expression,...),(...),...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name

SET col_name=expression, col_name=expression, ...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

SELECT ...

Общие положения работы команды INSERT:

tbl_name

- Задает имя таблицы, в которую будет вставлена новая строка. На момент запуска команды INSERT таблица с таким именем должна существовать в базе данных.

LOW_PRIORITY

- Если указан этот параметр, то вставка новой записи будет отложена до тех пор, пока другие сценарии не закончат чтение из этой таблицы. Надо отметить, что если таблица часто используется, то при указании этого параметра может пройти достаточно много времени, прежде чем данная команда будет выполнена.

DELAYED

- Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.

IGNORE

- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.

Если MySQL был сконфигурирован с использованием опции DONT_USE_DEFAULT_FIELDS, то команда INSERT будет генерировать ошибку, если явно не указать величины для всех столбцов, которые требуют значений не-NULL.

Для того, чтобы узнать значение, присвоенное полю с ключом AUTO_INCREMENT, можно воспользоваться функцией mysql_insert_id().

Для добавления новых записей в существующую таблицу при помощи команды INSERT существует три основных синтаксиса:

INSERT ... VALUES

- В этом случае в команде четко указывается порядок следования устанавливаемых полей и их значений.

INSERT INTO Поставщик (КодПоставщика, ИмяПоставщика, КодРегиона)

VALUES (123, 'ЗАО Магистраль', 101)

INSERT INTO Регион

VALUES (301, 'Украина', 'Крымская', 'Алушта', 'ул.Франко, 24',

NULL, '46-49-16')

GO

32. Язык sql: удаление записей из таблицы.

Синтаксис оператора DELETE FROM

DELETE [LOW_PRIORITY | QUICK] FROM table_name

[WHERE where_definition]

[ORDER BY ...]

[LIMIT rows]

или

DELETE [LOW_PRIORITY | QUICK] table_name[.*] [,table_name[.*] ...]

FROM table-references

[WHERE where_definition]

или

DELETE [LOW_PRIORITY | QUICK]

FROM table_name[.*], [table_name[.*] ...]

USING table-references

[WHERE where_definition]

Команда DELETE удаляет из таблицы table_name все записи, удовлетворяющие условию where_definition. Если условие WHERE where_definition не задано, то из таблицы table_name удаляются все записи.

Команда DELETE возвращает количество удаленных записей.

Следует учитывать, что если в команде DELETE не задано условие WHERE where_definition, то команда возвратит 0, хотя записи были удалены.

Если все же необходимо удалить все записи и узнать их количество, то в условии where_definition нужно задать заведомо истинное значение:

Но в этом случае выполнение команды происходит значительно медленнее.

LOW_PRIORITY

- Если указано это ключевое слово, то удаление записей из таблицы table_name не будет произведено до тех пор, пока другие процессы не закончат чтение их этой таблицы.

QUICK

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

table_name

- Имя таблицы в базе данных, из которой будет происходить удаление строк.

LIMIT

- Задает максимальное количество строк, которые могут быть удалены за текущий запрос.

SET DATEFORMAT dmy -- задаем привычный формат даты: день.месяц.год

DELETE FROM Заказ WHERE СрокПоставки < '01.01.2013' GO