Информационное обеспечение систем управления





НазваниеИнформационное обеспечение систем управления
страница12/19
Дата публикации05.12.2014
Размер3.02 Mb.
ТипРеферат
100-bal.ru > Информатика > Реферат
1   ...   8   9   10   11   12   13   14   15   ...   19


Таблица 6.1

Форма

Тип запроса

Пример

1. А(0)=?

Запрос значения атрибута

Звание служащего с номером 0001(Tnom=0001)

2. A(?)=V

Запрос объектов с заданным значением атрибута

Кто из служащих имеет оклад>300руб (Okl>300)

3. ?(0) r V

Запрос атрибутов с заданным значением для данного объекта

За какие месяцы заработки служащего 0004 превысили 350 руб.

4. ?(0)=?

Запрос всей информации о данном объекте

Сообщить всю хранимую информацию о служащем 0002

5. А(?)=?

Перечислить значение данного атрибута для каждого объекта

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

6. ?(?)=V

Перечислить все атрибуты объектов, имеющие данные значения

Для каждого служащего определить месяца, когда его заработок превышал 350 руб.

7. ?(?)=?

Запрос содержимого всего DBF-файла

Выдать всю хранимую информацию о всех служащих


В таблице использованы следующие обозначения: О – объект, А – атрибут, V – значение атрибута, r – знак отношения.

Реализация запросов на выборку в VFP осуществляется командой SELECT, которая имеет очень много возможностей. Она является самой важной и самой сложной для пользователя командой SQL.

Команда SELECT всегда выполняется над некоторыми таблицами, входящими в базу данных. На самом деле в базах данных могут быть не только постоянно хранимые таблицы, а также временные таблицы и так называемые представления. Представления   это просто хранящиеся в базе данные SELECT-выражения. С точки зрения пользователей представления   это таблица, которая не хранится постоянно в базе данных, а "возникает" в момент обращения к ней. С точки зрения команды SELECT и постоянно хранимые таблицы, и временные таблицы и представления выглядят одинаково. Конечно, при реальном выполнении команды SELECT системой учитываются различия между хранимыми таблицами и представлениями, но эти различия скрыты от пользователя.

Результатом выполнения команды SELECT всегда является таблица. Таким образом, по результатам действий команда SELECT похожа на операторы реляционной алгебры. Любой оператор реляционной алгебры может быть выражен подходящим образом сформулированной командой SELECT. Сложность команды SELECT определяется тем, что она содержит в себе все возможности реляционной алгебры, а также дополнительные возможности, которых в реляционной алгебре нет.

В состав VFP входит конструктор и мастер запросов на выборку. Если запрос построен с использованием конструктора, то мы всегда можем получить текст команды SELECT, соответствующий этому запросу. Запрос сохраняется в файле с расширением QPR как обычный текстовый файл и его можно редактировать, а откомпилированная версия храниться в файле с расширением QPX. Запрос можно запустить командой DO <имя>.QPR. Эту команду можно использовать в PRG-файле либо связать с определенным событием элемента управления на форме.

Конечно, конструктор и мастер запросов на выборку реализуют не все возможности команды SELECT, но просматривая QPR-файлы, мы имеем прекрасную возможность для знакомства с синтаксисом команды SELECT. Чтобы такое знакомство было осмысленным, приведем структуру и полный формат команды SELECT.

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

SELECT <что выводится >

FROM <откуда (источник)> INTO <куда (получатель)>

WHERE <каким условиям должен отвечать>

GROUP BY<колонки, по которым выполняются группирования>

HAVING <условие группирования записей в одну строку>

ORDER BY <в каком порядке выводить данные>

UNION <объединение результатов>.

Полный формат команды имеет следующий вид:

SELECT [DISTINCT]

[<псевдним>.]<выражение> [AS <колонка>]

[,[<псевдоним>.]<выражение> [AS <колонка>]…]

FROM [!] [AS <лок. псевдним>]

[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN

[!] [AS <лок. псевдним>]

[ON <условие связи DBF-файлов> …]

[[INTO<получатель>]/[TO FILE<файл>[ADDITIVE]/

/TO PRINTER [PROMPT]/TO SCREEN]]

[NOCONSOLE][PLAIN][NOWAIT]

[WHERE<усл.фильтра1> [AND/OR<усл.фильтра2>…]]

[GROUP BY <колонка1>[,<колонка2>…]]

[HAVING <условие фильтра группы>]

[ORDER BY<колонка>[ASC/DESC][,<колонка>][ASC/DESC]…]]

[UNION [ALL] <команда SELECT>]

В различных диалектах языка формат команды может иметь свои индивидуальные особенности.

6.2. Простые запросы на выборку данных

Пример 1. Приведем самый простой пример команды, реализующей запрос – "Выбрать все данные из таблицы поставщиков":

SELECT * FROM ПОСТАВЩИК.

В результате получим новую таблицу, содержащую полную копию данных из исходной таблицы (выбираются все поля и все записи таблицы и выводятся на экран в окне BROWSE). Это пример простого запроса по типу 7.

Пример 2. Запрос   "Выбрать все строки из таблицы поставщиков, удовлетворяющих некоторому условию":

SELECT DISTINCT * ;

FROM ПОСТАВЩИК P WHERE P.Город="Москва";

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

Имена полей могут быть с псевдонимами. Он необходимым, если выборка делается из нескольких DBF-файлов, в которых есть поля с одинаковыми именами. Например, TABN в DBF-файлах СОТРУДНИКИ и ДЕТИ. Псевдоним может быть не только "официальным" псевдонимом (ALIAS) DBF-файла, но и любое другое локальное имя, которое вы ему дали в команде SELECT. Никаких последствий за пределами команды SELECT это имя не имеет.

В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, отношения сравнения, скобки, логические функции и др.

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

Таблица 6.2

Операция

Пример использования

=, ==,
>, <,
>=, <=,
!=, , <>,

<Имя поля1> = <Имя поля2>; <Имя поля> ==<константа>
ДЕТАЛЬ.код = ПОСТАВКА.код
СОТРУДНИКИ.фио"Иванов"
стоимость>
2500

AND, OR, NOT

<Поле1> = <Поле2> AND <ПолеЗ> >= <Поле4>
<Поле1>
!= <константа> OR <Поле2> = <ПолеЗ>
ДЕТАЛЬ.код = ПОСТАВКА.код AND ДЕТАЛЬ.name  "Болт"

BETWEEN

<Поле> BETWEEN <выражение1> AND <выражение2>
ДЕТАЛЬ.код BETWEEN 90000 AND 99999

LIKE

<Поле> LIKE "<шаблон(%, _)>"
ДЕТАЛЬ.name LIKE "_Болт%"

IN

<Поле> IN (Список выражений)
СОТРУДНИКИ.должность NOT IN ("профессор", "доцент")

ALL, ANY, SOME

<Поле | выражение> < сравнениe> < ANY | SOME > (подзапрос)
фирма < ANY ;
(SELECT фирма FROM ПОСТАВЩИК WHERE страна = "RU")

EXISTS

EXISTS (подзапрос)
EXISTS (SELECT * FROM ДЕТАЛЬ WHERE ДЕТАЛЬ.код = ;
ПОСТАВКА.код)


Пример 3. Выбрать некоторые поля из исходной таблицы. Запрос – "Выбрать FIO всех сотрудников, родившихся в текущем месяце с указанием дня рождения, количества лет и премии по этому поводу – 50% от оклада.

SELECT fio, DAY(dr), ’число’, YEAR(DATE())-YEAR(dr),’лет’, ’премия-’, 0.5*okl FROM СОТРУДНИКИ WHERE MONTH(dr)= MONTH(DАTE()) PLAIN.

Если не указать PLAIN, то колонки получат имена FAM и от EXP_2 до EXP_7. Последовательность выражений в команде определяет последовательность колонок в результирующей таблице. Перед ключевым словом FROM указываются отбираемые в запрос <выражения>, а после   имена DBF-файлов. Фрагмент <выражение> может быть константой, выводимой в каждой строке выборки, функцией, полем и т.п.

Пример 4. Использование вычисляемых полей и переименование колонок в результирующей таблице запроса.

SELECT;

TOVAR.tname AS Наименование,;

TOVAR.kol AS Количество,;

TOVAR.price AS Цена, "=" AS Равно,;

TOVAR.KOL*TOVAR.PRICE AS Сумма FROM TOVAR;

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

Пример 5. Упорядочение результатов запроса.

SELECT fio AS Фамилия, dr AS Дата рождения ;

FROM СОТРУДНИКИ ORDER BY fio.

Здесь выводятся фамилии и даты рождения сотрудников с нестандартными заголовками. Записи упорядочены по алфавиту. Порядок можно задавать по нескольким полям. Если явно не указаны ключевые слова ASC или DESC, то по умолчанию принимается упорядочение по возрастанию (ASC).

6.3. Сложные запросы на выборку данных

Сложные запросы реализуют выборку данных из двух и более таблиц. Эти таблицы должны быть связаны по определенному условию. Существует два способа организации такой связи, каждый из них соответствует своему стандарту SQL. В старом стандарте связь осуществлялась опцией WHERE. В новом стандарте (ANSI-стандарт) для данной цели введена специальная опция ON, которая относится к опции FROM и имеет следующий формат:

FROM <первая_таблица>

<тип_объединения> <вторая_таблица>

<условие_объединения>

Пример 6. Вначале приведем пример, иллюстрирующий связь посредством опции WHERE.

SELECT R.fio, R.tabn, D.fio, D.gr ;

FROM Кафедра!СОТРУДНИКИ R, Кафедра!ДЕТИ D ;

WHERE R.tabn=D.tabn.

В VPF DBF-файлы могут быть помещены в контейнер, сведения о котором хранятся в файле с расширением DBC. Поэтому при обращении к таблицам из различных контейнеров мы обязаны указать сложные имена по формату [<DBC-файл>!]<DBF-файл> [[AS] <лок. псевдним>].

Предыдущей командой мы выбираем фамилии родителей, детей из таблиц СОТРУДНИКИ и ДЕТИ сцепленных по полю tabn. Результат выборки – это совокупность колонок, заголовками которых могут быть имена полей. Если имена полей совпадают, то такие колонки получают совпадающие имена, к которым присоединяются одна из букв (по алфавиту), например, FIO_A, FIO_B, и т.д. Колонки, полученные в результате вычисления выражений, получают имена EXP с соответствующим номером. Например, EXP1,EXP2. Исключение составляют выражения, использующие собственные функции SQL, например MIN() и MAX(). Имена колонок в этом случае будут включать имена функций.

Этот же запрос будем использовать для иллюстрации второго способа организации связей таблиц.

SELECT R.fio, R.tabn, D.fio, D.gr ;

FROM Кафедра!СОТРУДНИКИ R;

INNER JOIN Кафедра!ДЕТИ D ; ON R.tabn=D.tabn.

Четыре типа объединения (INNER, LEFT, RIGHT, FULL), задаваемые ключевым словом JOIN, будем иллюстрировать следующим примером. Имеем две логически взаимосвязанные таблицы ГОРОД и ПОСТАВЩИК.

ГОРОД ПОСТАВЩИК

Код_
города


Город




Код_
поставщика


Код_
города


Поставщик

1

Хабаровск




1

3

АО «Байт»

2

Владивосток




2

2

ТОО Пролог

3

Петропавловск




3

1

Фирма 555

4

Елизово




4

0

Завод ЖБИ

Пусть условие объединения DBF-файлов, хранящих эти таблицы задано следующим выражением
ON ГОРОД.код_города = ПОСТАВЩИК.код_города.

Тогда внутреннее объединение, задаваемое фрагментом
ГОРОД Inner Join ПОСТАВЩИК
даст результат, в который включаются только те записи из обеих таблиц, которые отвечают условию объединения.

Код_
города


Код_
поставщика


Поставщик

Город

1

3

Фирма 555

Хабаровск

2

2

ТОО Пролог

Владивосток

3

1

АО «Байт»

Петропавловск

Второй тип объединения   левое внешнее объединение, задается фразой
ГОРОД Left Join ПОСТАВЩИК,
и его результат включает все записи из таблицы слева и записи, отвечающие условию объединения, из таблицы справа.

Код_
города


Код_
поставщика


Поставщик

Город

1

3

Фирма 555

Хабаровск

2

2

ТОО Пролог

Владивосток

3

1

АО «Байт»

Петропавловск

4

-

-

Елизово

Третий тип объединения   правое внешнее объединение, задается фразой
ГОРОД Right Join ПОСТАВЩИК,
и его результат включает все записи из таблицы справа и записи, отвечающие условию объединения, из таблицы слева

Код_
города


Код_
поставщика


Поставщик

Город

1

3

Фирма 555

Хабаровск

2

2

ТОО Пролог

Владивосток

3

1

АО «Байт»

Петропавловск

0

4

Завод ЖБИ

-

Четвертый тип   полное внешнее объединение, задается фразой
ГОРОД Full Outer Join ПОСТАВЩИК,
и его результат включает все записи из обеих таблицы

Код_
города


Код_
поставщика


Поставщик

Город

1

3

Фирма 555

Хабаровск

2

2

ТОО Пролог

Владивосток

3

1

АО «Байт»

Петропавловск

4

-

-

Елизово

0

4

Завод ЖБИ

-


6.4. Использование агрегатных функций с группировками

Язык SQL в VFP имеет следующие встроенные функции: COUNT()   количество строк в выборке, COUNT(DISTINCT) – количество разных строк (например, COUNT(*)); MIN() – наименьшее число в колонке; MAX()   наибольшее число в колонке; AVG() – среднее значение числовых данных в колонке; AVG(DISTINCT) – среднее значение без повторения данных; SUM() и SUM(DISTINCT) – сумма значений колонки и сумма без повторений.

Пример 7. Сделаем выборку минимального, максимального и среднего значений оклада для сотрудников кафедры:

SELECT MIN(okl), MAX(okl), AVG(okl) FROM СОТРУДНИКИ

Колонки при этом получают имена MIN_OKL, MAX_OKL, AVG_OKL.

Группирование данных удобно для получения некоторых сводных показателей группы (суммы, количества, и др.). Вместо имени колонки, по которой осуществляется группирование, в опции GROUP BY можно указывать ее номер (нумерация идет слева направо, начиная с 1). Опция HAVING может использоваться только с соответствующим разделом GROUP BY , и она задает критерий отбора данных в каждую сформированную группу.

Пример 8. Запрос – "Для каждой детали получить суммарное поставленное их количество"

SELECT PD.Д_номер, SUM(PD.количество) AS Сумма;

FROM ПОСТАВКА PD;

GROUP BY PD.Д_номер

Этот запрос будет выполняться следующим образом. Сначала строки исходной таблицы будут сгруппированы так, чтобы в каждую группу попали строки с одинаковыми значениями поля Д_номер. Потом внутри каждой группы будет просуммировано поле количество. От каждой группы в результирующую таблицу будет включена одна строка:

Д_Номер

Сумма

1

1250

2

450

3

300

В списке отбираемых полей оператора SELECT, содержащего раздел GROUP BY можно включать только агрегатные функции и поля, которые входят в условие группировки. Следующий запрос выдаст синтаксическую ошибку:

SELECT PD.П_номер, PD.Д_номер, SUM(PD.количество) AS Сумма;

FROM ПОСТАВКА PD; GROUP BY PD.Д_номер

Причина ошибки в том, что в список отбираемых полей включено поле П_номер, которое не входит в раздел GROUP BY. И действительно, в каждую полученную группу строк может входить несколько строк с различными значениями поля П_номер. Из каждой группы строк будет сформировано по одной итоговой строке. При этом нет однозначного ответа на вопрос, какое значение выбрать для поля П_номер в итоговой строке. Некоторые диалекты SQL не считают это за ошибку. Запрос будет выполнен, но предсказать, какие значения будут внесены в поле П_номер в результирующей таблице, невозможно.

Пример 9. Запрос – "Получить номера деталей, суммарное поставленное количество которых превосходит 400 единиц".

Условие, заключающееся в том, что суммарное поставленное количество деталей должно быть больше 400 единиц не может быть сформулировано в разделе WHERE, т.к. в этом разделе нельзя использовать агрегатные функции. Условия, использующие агрегатные функции должны быть размещены в специальном разделе HAVING, а именно:

SELECT PD.Д_номер, SUM(PD.количество) AS Сумма;

FROM ПОСТАВКА PD; GROUP BY PD.Д_номер;

HAVING SUM(PD.количество) > 400

В результате получим следующую таблицу:

Д_номер

Сумма

1

1250

2

450

В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING, за исключением условий, включающих поля из списка группировки GROUP BY.

Пример 10. Запрос – "Выдать название всех должностей, количество сотрудников и фонд заработной платы для тех групп должностей, где количество сотрудников больше 1".

SELECT B.dol, A.COUNT(*), A.SUM(zps);

FROM СОТРУДНИКИ A, ДОЛЖНОСТИ B;

INTO DBF ФОНД; WHERE A.kdol=B.kdol;

GROOP BY A.kdol HAVING COUNT(*)>1.

Получателем результата выборки может быть DBF-файл, массив, текстовый файл, экран и принтер. Кроме того, информация может быть перенесена в так называемый курсор. Курсор – это временный набор данных, который может быть областью памяти (небольшой объем) или временным файлом на диске (этот процесс от пользователя не зависит) и имеет режим "только чтение". Созданный курсор нельзя изменить и он существует до тех пор, пока его не закроют. Данные курсора могут быть, например, предъявлены командой BROWSE, напечатаны, из них может быть образовано меню и т.д. Курсор может быть обработан другой командой SELECT. К колонкам курсора обращаются по имени, возможно с префиксом – именем курсора (через точку).

1   ...   8   9   10   11   12   13   14   15   ...   19

Похожие:

Информационное обеспечение систем управления icon«Учебно-методический комплекс дисциплины «Информационное обеспечение систем управления»

Информационное обеспечение систем управления iconПояснительная записка
«Современная организация и технология документационного обеспечения управления». Он связан с курсами «Документоведение», «Информационное...
Информационное обеспечение систем управления iconИсследование систем управления процесс определения организационной...
Место исследований систем управления в комплексе дисциплин по теории и практке управления
Информационное обеспечение систем управления iconПрограммное обеспечение для отладки систем управления упругими объектами
Целью данной работы является разработка программного обеспечения для лабораторного стенда для изучения систем управления упругими...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Информационное обеспечение, базы данных»
Факультет информационных систем и технологий Кафедра Прикладной математики и вычислительной техники
Информационное обеспечение систем управления iconУчебная программа по дисциплине " информационное обеспечение управления "
Изучение теоретических, методических и практических вопросов разработки, внедрения и совершенствования информационного обеспечения...
Информационное обеспечение систем управления iconРоссийской Федерации Самарский государственный архитектурно-строительный...
Информационные системы” являются информационные системы и сети, их математическое, информационное и программное обеспечение, способы...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Архитектура ЭВМ и вычислительных систем»...
«Автоматизированные системы обработки информации и управления» (по отраслям) и 230105 «Программное обеспечение вычислительной техники...
Информационное обеспечение систем управления iconИсследование систем управления
Целью работы является рассмотрение частных методов исследования систем управления, а именно эксперимент, наблюдение и опрос
Информационное обеспечение систем управления iconПримерная тематика рефератов по курсу «Исследование систем управления»
Современный менеджмент и необходимость исследования систем управления социально-экономической организацией
Информационное обеспечение систем управления iconОрганизационно-правовое обеспечение правовой деятельности
Информационное обеспечение организации и проведения внеучебной работы
Информационное обеспечение систем управления iconИсследование систем управления Специальности: «Менеджмент организации»
«Исследование систем управления» является ведущей,в учебном процессе среди смежных дисциплин
Информационное обеспечение систем управления iconРеферат по дисциплине "Избирательное право" тема: Информационное...
Информационное обеспечение выборов. Правовое регулирование предвыборной агитации в РФ
Информационное обеспечение систем управления iconИнформационное обеспечение управления
В настоящее время классификационные схемы (классификаторы) строятся не только на основе соподчинения понятий (метод иерархии), но...
Информационное обеспечение систем управления iconКурсовая работа По дисциплине «Базы данных»
Программное обеспечение для создания систем управления базами данных
Информационное обеспечение систем управления iconРабочая программа учебной дисциплины «исследование систем управления»
Студенты научатся методам планирования эксперимента и организации исследования систем управления и научатся использовать приобретенные...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск