Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Корр_Запросы на языке SQL и на базовом.doc
Скачиваний:
1
Добавлен:
17.11.2019
Размер:
539.14 Кб
Скачать

Сложные запросы.

max.prg:

Переименование полей в запросе.

SELECT COUNT(*), SUM(Poski.kolw), AVG(Poski.kolw), MAX(Poski.kolw),;

MIN(Poski.kolw), MAX(Poski.data), MIN(Poski.data);

FROM data!poski;

INTO CURSOR difficult

browse;

title "Сложный запрос";

FIELDS Cnt : H = "Всего записей",;

Sum_kolw : H = "Сумма всего",;

Avg_kolw : H = "Среднее кол-во",;

Max_kolw : H = "Макс. кол-во",;

Min_kolw : H = "Мин. кол-во",;

Max_data : H = "Макс. дата",;

Min_data : H = "Мин. дата"

mnt.prg:

SELECT Poshk.nomp, Poshk.famp, Detl.nomd, Detl.naim, Poski.nomr, Poski.kolw,;

Poski.data;

FROM ;

data1!poshk ;

INNER JOIN data1!poski ;

ON Poshk.nomp = Poski.nomp ;

INNER JOIN data1!detl ;

ON Poski.nomd = Detl.nomd;

WHERE Detl.nomd <= ( "Д3" );

AND Poski.data BETWEEN CTOD("09/12/01") AND CTOD("09/20/01");

ORDER BY Poshk.nomp, Detl.nomd, Poski.nomr;

INTO TABLE mnt_pr.dbf

USE mnt_pr

BROWSE

SELECT Mnt_pr.nomp, Mnt_pr.famp, Mnt_pr.nomd, Mnt_pr.naim, Mnt_pr.nomr,;

Proek.npro, Mnt_pr.kolw, Mnt_pr.data;

FROM ;

data1!mnt_pr ;

INNER JOIN data1!proek ;

ON Mnt_pr.nomr = Proek.nomr;

ORDER BY Mnt_pr.nomp, Mnt_pr.nomd, Mnt_pr.nomr;

INTO CURSOR Ask

BROWSE

nomr_nomd.prg:

Оформление заголовков в шапке запроса

SELECT Poski.nomr, Poski.nomd;

FROM data1!poski;

ORDER BY Poski.nomr, Poski.nomd;

INTO CURSOR Nomrd

BROWSE;

title "Ctrl+N - вставка Ctrl+W - Выход Ctrl+T - удаление";

fields Nomr: H = "Номер разработчика": 27,;

Nomd: H = "Номер детали": 20

zap_k_vosm1.prg:

SELECT *;

FROM vozm;

WHERE vozm.nomp = "П5";

ORDER BY vozm.nomd

zap_k_vosm2.prg:

SELECT *;

FROM vozm;

WHERE vozm.nomd = "Д6";

ORDER BY vozm.nomp

Вложенные запросы.

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 = ‘КИЕВ