- •Лабораторная работа №7
- •7.1. Типы запросов данных в sql
- •7.2. Формирование запросов из тбд командным способом
- •Указание результатов выборки и источников данных
- •Указание объекта, куда пересылается выборка
- •Критерий отбора данных
- •Группирование данных
- •7.2.1.2. Сложные однотабличные и многотабличные запросы (несколько условий отбора)
- •7.3.Оператор select, формируемый интерактивным способом с помощью метода построения запроса qbe
- •7.3.1. Характеристика до «Конструктор запросов»
- •7.3.2. Файлы запросов на языке sql и результаты их выполнения
- •7.3.2.1. Однотабличные запросы Запрос 1: запрос по точному совпадению значения одного поля
- •Внимание !
- •1.Предъявляемые ниже тексты всех остальных запросов служат для проверки правильности настройки конкретного бланка запроса.
- •Запрос 3: запрос по неточному совпадению значения одного поля
- •Запрос 4: запрос с вычисляемым полем
- •Запрос 5: запрос поиск по точному совпадению значения даты
- •Самостоятельная работа
- •7.2.1.2. Многотабличные запросы
- •Сложные запросы.
- •Вложенные запросы.
- •Values (‘п6’, ‘Быков’, ‘Москва’, 30, ‘Иван’, ‘Борисович’)
- •7.6 Арифметические операции в опции where
Вложенные запросы.
vlog_zapr1.prg:
Выдать famp поставщика/поставщиков, осуществившего/осуществивших наибольшее (наименьшее)количество участий в поставках.
CLEAR
SELECT poshk.famp, poshk.nomp, sum(poski.kolw), COUNT(*) as Р1;
FROM data1!poshk INNER JOIN data1!poski;
ON poshk.nomp = poski.nomp;
GROUP BY poshk.nomp,poshk.famp;
INTO CURSOR Z11
BROWSE
WAIT
SELECT MAX (Р1) AS MP;
FROM Z11;
INTO CURSOR Z112
BROWSE
WAIT
SELECT Z11.famp, MP;
FROM Z11, Z112;
WHERE Р1 = MP;
INTO CURSOR Z113
BROWSE
WAIT
RETURN
7.3 SQL – оператор INSERT INTO
I
NSERT
INTO db1_name [(bname1[,bname2,…])]
имя таблицы для список полей таблицы
добавления записи
VALUES (eExpression1 [,eExpression2,…])
список заносимых значений в эти поля
Если список полей опущен, то значения должны быть указаны в таком же порядке, в каком они определены в строке таблицы.
USE poshk_k
INSERT INTO poshk_k(nomp, famp, gord, stat, first_name, last_name)
Values (‘п6’, ‘Быков’, ‘Москва’, 30, ‘Иван’, ‘Борисович’)
7.4 SQL – оператор UPDATE
UPDATE [DatabaseName1!]TableName 1
SET Column_Name 1 = eExspression1[,ColumnName2 = eExpression 2…]
новое имя
W
HERE
FilterCondition 1 [AND|OR FilterCondition 2…]
фильтр условия
Эта команда обновляет записи только в одной таблице.
Когда необходимо изменить только одно определённое значение, необходимо использовать опцию WHERE.
UPDATE data1!poshk_k SET FirstName = ‘Василий’;
WHERE FirstName = ‘Иван’ AND LastName = ‘Иваницкий’.
Заменить имя Иван на Василий.
7.5 SQL – оператор DELETE
Внимание! Будьте осторожны! Запрос Delete удаляет целые строки!
DELETE FROM [DatabaseName1!] TableName
[WHERE FilterCondition1 [AND|OR FilterCondition2…]]
Эта команда помечает записи для удаления.
Запрос DELETE полностью удаляет строку из таблицы.
Если надо удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL (в структуре таблицы).
Запрос DELETE надо обязательно ограничивать условием WHERE, иначе можно потерять всё содержимое таблицы! После удаления строка не восстанавливается!
USE poshk_k
DELETE FROM data1!poshk_k;
WHERE nomp = ‘П6’ AND famp = ‘Иван’ AND gord = ‘КИЕВ’
7.6 Арифметические операции в опции where
Пример: определить, сколько будут стоить две штуки одной детали при условии, что их стоимость будет меньше 40.
SELECT Detl.nomd, Detl.naim, Detl.cena, Detl.cena*2 AS DOUBLE ;
FROM data1!detl ;
WHERE Cena * 2 <40
