Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
языки БД.doc
Скачиваний:
4
Добавлен:
26.11.2018
Размер:
153.6 Кб
Скачать

Операторы добавления, изменения и удаления данных:

При внесении изменений должна сохраняться целостность данных и вводиться только допустимые значения.

INSERT - добавляет новые строки в таблицы

UPDATE – изменяет в таблице существующие строки

DELITE – удаляет строки из таблиц

Команда INSERT позволяет добавить запись и присвоить ее полям необходимые значения. Требуется определить только ключевые поля и поля, которые не могут принимать пустые значения. Остальные поля можно оставить незаполненными.

VALUES – значения полей

Формат команды INSERT:

INSERT INTO Имя Таблицы (ИмяПоля1, ИмяПоля2, …)

VALUES (ЗначениеПоля1, ЗначениеПоля2, …)

2. Добавим в таблицу Pokup" новую запись содержащую фамилию (Кондратенко) и код товара (321).

INSERT INTO Pokup ( cfam, nkod )

Values ('Кондратенко а. В.', 321);

3. Добавим в таблицу "Pokup" запись, используя запрос с параметром (можно не все поля)

INSERT INTO Pokup ( cfam, nkod, cvid, dpos )

VALUES ([cfam],[nkod],[cvid],[dpos]);

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

Команда UPDATE используется для изменения записей, которые уже существуют в таблице. Можно изменить любое количество записей в таблице, при этом указываются имя таблицы и столбца, в которых меняются данные, а также их новые значения и условия изменения.

Формат команды UPDATE:

UPDATE Имя Таблицы

SET ИмяПоля1=Новое ЗначениеПоля1, ИмяПоля2= Новое ЗначениеПоля2, …

WHERE Условие Отбора Записей

В качестве значения поля можно использовать любое выражение.

4. Изменим инициалы Гребнева, при условии совпадения кода товара

UPDATE tab_new SET cfam = 'Гребенев Н.А.'

WHERE ntov=389;

5. Команда без условия отбора изменит значение всех записей таблицы, в таблице Pokup изменить значения поля Ndos

UPDATE Pokup SET Ndos = '45';

Команда DELETE очень похожа на UPDATE, за исключением того, что в ней нет опции SET, и все записи, соответствующие условию отбора удаляются, а не модифицируются. Если использовать команду DELETE без условия, то удалятся все данные из таблицы.

Формат команды:

DELETE FROM Имя Таблицы WHERE Условие Отбора

6. Удалим из таблицы все записи, которые соответствуют условию ntov>500

DELETE *

FROM Pokup

WHERE ntov>500;

Многотабличные запросы. Выборка из нескольких таблиц

Для вывода связанной информации, хранящейся в нескольких таблицах, в SQL используются операция соединения отношений.

Соединение отношений имеют два типа синтаксиса:

  • Использование предложений FROM, WHERE

  • При помощи ключевого слова JOIN

Синтаксис операции соединения FROM, WHERE:

SELECT [DISTINCT] Список Выбираемых таблиц и Полей

FROM Список таблиц

WHERE имя таблицы1. имя столбца = имя таблицы2. имя столбца

Где имя столбца является Первичным ключом таблицы1 и внешним ключом таблицы2

1. Выберем из таблицы "Pokup" фамилию покупателя и стоимость товара, а из таблицы "Tovary" – наименование товара.

SELECT Pokup.cfam, Pokup.ntov, Tovary.cnaim

FROM Pokup, Tovary

WHERE Tovary.nkod=Pokup.nkod;

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

SELECT A.cfam, A.ntov, B.cnaim

FROM Pokup A, Tovary B

WHERE B.nkod=A.nkod;

Синтаксис с ключевым словом JOIN

SELECT [DISTINCT] Список Выбираемых Полей

FROM Таблиц1

{INNER LEFTRIGHTFULL} JOIN Таблиц2

ON Таблиц1.ИмяПоля= Таблиц2.ИмяПоля

Внутренние соединения INNER

При выполнении операции INNER JOIN из обеих объединяемых таблиц выбираются только те строки, которые удовлетворяют заданному условию объединения, т.е. для которых условие соединения верно. Обычно задается равенство ключевых полей (первичного для одной таблицы и внешнего для другой).

Слева от стандартных слов INNER JOIN указывается имя одной таблицы, справа – второй, а после слова ON – условие соединения.

1. Выберем из таблицы "Pokup" фамилию покупателя и стоимость товара, а из таблицы "Tovary" – наименование товара.

SELECT Pokup.cfam, Pokup.ntov, Tovary.cnaim

FROM pokup INNER JOIN tovary

ON Pokup.nkod = Tovary.nkod

Внешние соединения LEFT JOIN, RIGHT JOIN, FULL JOIN

Внешние соединения строятся только при помощи ключевого слова JOIN. Таблица, которая строит слева от слова JOIN называется левой, а таблица, стоящая справа, – правой.

Различают 3 вида внешних соединений: левое (LEFT), правое (RIGHT), полное (FULL).

2. Левое соединение строится при помощи опции LEFT JOIN…ON.

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

SELECT Pokup.cfam, Pokup.ntov, Tovary.cnaim

FROM pokup LEFT JOIN tovary

ON Pokup.nkod = Tovary.nkod

3.Правое соединение строится при помощи опции RIGHT JOIN…ON.

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

Pokup.cfam, Pokup.ntov, Tovary.cnaim

FROM pokup RIGHT JOIN tovary

ON Pokup.nkod = Tovary.nkod

Результат:

При использовании ключевого слова FULL в результат будут включены все строки как правой, так и левой таблиц.