Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

2.4.23. Язык запросов sql

В FoxPro включены команды языка запросов SQL (Structured Query Language) (п. 1.3.8.3). Детальное описание команд с примерами можно получить в спра­воч­ной системе Visual FoxPro. Рассмотрим примеры.

П ример создания базы данных “Выпуск изделий” (п. 1.5.2.) с таблицами и связями (рисунок 2.4.23.1).

Рис. 2.4.23.1. Логическая модель базы данных “Выпуск изделий”

CLOSE DATABASES && закрытие всех баз

CLEAR && очистка экрана

CREATE DATABASE “Выпуск изделий“ && создание базы “Выпуск изделий“

CREATE TABLE “Типы изделий“ ; && создание таблицы “Типы изделий“

(KTI i PRIMARY KEY NOT NULL, ; && ключевое поле с кодом типа изделия

NTI c(20) UNIQUE NOT NULL) && поле с наименованием типа изделия

CREATE TABLE “Изделия“ ; && создание таблицы “Изделия“

(KI i PRIMARY KEY NOT NULL, ; && ключевое поле с кодом изделия

NI c(20) UNIQUE NOT NULL, ; && поле с наименованием изделия

KTI i,; && поле с кодом типа изделия

FOREIGN KEY KTI TAG KTI REFERENCES “Типы изделий“) && связь

CREATE TABLE “Подразделения“ ; && создание таблицы “Подразделения“

(KP i PRIMARY KEY NOT NULL, ; && ключевое поле с кодом подраздел.

NP c(20) UNIQUE NOT NULL) && поле с наименованием подразделения

CREATE TABLE “Выпуск изделий“; && создание таблицы “Выпуск изделий“

(KP i NOT NULL, ; && поле с кодом подразделения

KI i NOT NULL,; && поле с кодом изделия

DVI d NOT NULL,; && поле с датой выпуска изделия

KVI n(10,0) ; && поле с количеством выпущенных изделий

DEFAULT 1,; && значение по умолчанию равно 1

SI n(14,2) ; && поле с себестоимостью изделия

CHECK (KVI>=0) ERROR “Количество отрицательное число!“,; &ошибка

FOREIGN KEY KI TAG KI REFERENCES “Изделия“,; && связь

FOREIGN KEY KP TAG KP REFERENCES “Подразделения“) && связь

SET SAFETY OFF && блокировка вывода предупреждений

MODIFY DATABASE && просмотр структуры базы данных (рисунок 2.4.23.1)

CLOSE DATABASE && закрытие базы данных

DELETE DATABASE “Выпуск изделий“ DELETETABLES && удаление базы

Примеры

  1. Выборка всех полей из таблицы KADR: SELECT * FROM kadr

  2. Вывод минимального, максимального и среднего значений поля SZAR (средняя зарплата). Колонки получат имена MIN_SZAR, МАХ_SZAR и AVG_SZAR.

SELECT MIN(szar), MAX(szar), AVG(szar) FROM kadr.

  1. Вывод фамилий работников, получающих от 500 до 80000 рублей. SELECT fam FROM kadr WHERE szar BETWEEN 5000 AND 800000.

  2. Выборка названий всех подразделений (поле PODR) предприятия из таблицы KADR. Опция DISTINCT предотвращает повторный вывод одних и тех же названий, если они повторяются.

SELECT DISTINCT podr FROM kadr.

  1. Выборка фамилий (FAM) всех мужчин из KADR.

SELECT fam FROM kadr WHERE pol='M'.

  1. Выборка всех фамилий и табельных номеров из KADR, вы­ра­боток из таблицы BRIG1 для записей, у которых совпадают табельные номера.

SELECT s.fam, s.tab, t.tab, t.vir FROM kadr s, brig1 t WHERE s.tab=t.tab

Здесь для сокращения записи команды таблицам KADR и BRIG1 заданы новые временные имена S и Т.

  1. Вывести фамилии и табельные номера (поля FAM и TAB) по алфавиту и с другими именами колонок FAMILII и TABEL.

SELECT fam AS familii, tab AS tabel FROM kadr ORDER BY fam.

  1. Вывод полей FAM и TAB, отсортированных по полям POL и FAM в таблицу FAMTAB.

SELECT fam, tab FROM kadr ORDER BY pol, fam INTO TABL famtab.

  1. Вывод для каждого табельного номера из таблицы KADR выра­бо­ток из таблиц BRIG1 и BRIG3, а также суммарной выработки работника в обеих бригадах.

SELECT kadr.tab, brig1.vir, brig3.vir, brig1.vir+brig3.vir;

FROM kadr, brig1, brig3 WHERE kadr.tab=brig1.tab AND kadr.tab=brig3.tab

  1. Вывод фамилий всех сотрудников, занятых ранее в конструк­тор­ском бюро (КБ). Поиск ведется в мемо-поле PER таблицы KADR.

SELECT fam FROM kadr WHERE per LIKE “%КБ%“.

  1. Вывод табельных номеров и суммарной выработки каждого работ­ника в бригаде номер 1. Вывод осуществляется в порядке увеличения табельных номеров.

SELECT tab.SUM(vir) FROM brig1 GROUP BY tab ORDER BY tab.

  1. Вывод названий всех подразделений, количества сотрудников и зна­чений суммарной заработной платы. Информация выводится только для подразделений, где количество сотрудников больше пяти.

SELECT podr,COUNT(*),SUM(szar) ;

FROM kadr GROUP BY podr HAVING COUNT(*)>5.