- •Языки баз данных Структурированный язык запросов sql
- •Создание таблицы
- •Итоговые запросы
- •Отбор строк с использованием условий поиска
- •Запросы с группировкой
- •Сортировка таблицы результатов запроса
- •Внесение изменений в бд
- •Операторы добавления, изменения и удаления данных:
- •Values ('Кондратенко а. В.', 321);
- •Вложенные запросы
Операторы добавления, изменения и удаления данных:
При внесении изменений должна сохраняться целостность данных и вводиться только допустимые значения.
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 в результат будут включены все строки как правой, так и левой таблиц.