русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Заключение.


Дата добавления: 2015-07-09; просмотров: 787; Нарушение авторских прав


Введение

Занятие 1. Построение простых запросов на SQL к одной таблице

1.1. Построение запроса в QBE и просмотр его в режиме SQL

1.2. Задание списка имен столбцов и изменение имен столбцов в запросе.

1.3. Построение запросов с комплексными условиям

1.4. Вставка текстовых столбцов.

1.5. Вычисляемые столбцы

 

Занятие 2. Построение запросов со сложными условиями.

2.1. Использование в запросах специальных слов

2.2. Построение запросов на агрегирование

2.3. Включение сортировки строк в запросы

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

 

Занятие 3. Построение запросов к нескольким таблицам.

3.1. Объединение таблиц в запросах и выполнение операции JOIN (объединение)

3.2. Объединение копий таблиц

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

 

Занятие 4. Запросы на ввод и корректировку данных в базе.

4.1. Запросы на ввод данных в таблицы

4.2. Запросы на изменение данных в таблицах

4.3. Запросы на удаление данных из таблиц

 

Занятие 5. Запросы на создание и изменение базы данных.

5.1. Запросы на создание таблиц базы данных

5.2. Запросы на изменение таблиц базы данных

5.3. Запросы на удаление таблиц базы данных

 

Занятие 6. Создание приложений с использованием запросов на языке SQL.

6.1. Приложение в среде VBA

6.2. Разработка локальных Web-приложений (на VBScript).

6.3. Некоторые приемы ASP-технологии.

 

Заключение.

 

Литература.

Приложения:

Приложение 1. Описание схемы учебной базы данных «Автомобильный салон» (Avto.mdb).

Приложение 2. Разработка VBA приложения для обработки SQL-запросов.

 


Введение

 

В настоящий момент можно твердо утверждать, что наиболее распространенный способ организации больших объемов информации основан на методологии реляционных баз данных. В основе концепции реляционных баз данных и языка запросов SQL (Structured Query Language), лежит реляционная алгебра (или алгебра над отношениями), которая является развитием фундаментальных понятий теории множеств, известных нам из базового курса математики «теория множеств»[1].



Определения. Под множеством в математике понимается собрание определенных и различных между собой объектов (или элементов), представляемых как единое целое. Например, мы говорим «множество людей», «множество автомобилей», «множество предметов» и т.п. Изучая множества, математика не интересует ни предметная область, к которой относятся элементы множества, ни физические их свойства.

Иначе говоря, множество (A) состоит из элементов (a1, a2, a3,…,aN), которые объединены по некоторым правилам или признакам. Это обстоятельство обычно записывается так: A={ a1, a2, a3,…,aN }. Запись a1Î A обозначает, что элемент a1 принадлежит множеству A (противоположное утверждение записывается следующим образом- a1Ï A). Пустое множество, которое не содержит элементов, обозначается символом Æ.

Существует два способа определения конкретного множества:

- прямой (или явный) метод, когда перечисляются все элементы, входящие в множество;

- неявный (интенсиональный), основанный на использовании некоторой функции PA(ai), которая может принимать одно из двух значений {True,False} («ИСТИНА» или «ЛОЖЬ»). Значение «True» означает, что элемент aiÎA, «False» - в противном случае (a1Ï A). Например, пусть PA(ai), определяет A- множество «легковых автомобилей», тогда PA(«Жигули»)=True, а PA(«ЗИЛ-130»)=False.

Функция PA(x), определенная над множеством X, называется предикатом и представляет собой двухзначную функцию, принимающую в качестве аргумента значение xi из некоторого множества-универсума X (некоторого более общего множества по отношению к множеству A). Например, пусть X множество всех автомобилей, а A – множество легковых автомобилей, тогда PA(x) есть предикат, определяющий A, принимает значение True только тогда, когда xi является легковым автомобилем. Отношение между множествами X и A можно отобразить схемой, как показано на рис.1.

 

 
 

 


Рис.1. Схема отношений универсума X, множества A и предиката PA(x)

 

 

Таким образом, в нашем примере предикат PA(x) определяет отношение включения множества A в множества X, которое обозначается как AÍX. Например множество A – «легковые автомобили» включается в множество X - «все автомобили».

Обычно математики не интересуются предметной содержательной стороной реальных объектов, которые составляют множества, а изучают формальные свойства множеств и операции над ними. Из теории множеств известно, что над множествами можно выполнять различные операции, некоторые из которых определены ниже:

Объединение множеств: C=AÈB. Например, пусть A={a,b,c,d} и B={a,c,d,x}, тогда C={a,b,c,d,x}. Заметим, AÈÆ=A.

Пересечение множеств: C=AÇB. Пусть A и B такие же как и в примере выше, тогда C={a,c,d}. Заметим, AÇÆ=Æ.

Разность: C=A – B. Множество Cсодержит все элементы, принадлежащие множество A, но не содержатся в B. Пусть A={a,b,c,d,x,y} и B={a,b,x,y,z}, тогда разность C={c,d}.

Заметим, чтоA - Æ=A.

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

Часто предикат PA(x) интерпретируется как двухзначная функция P(x) над множеством X={x1, x2, xn}, которая определяет для каждого xi истинность утверждения: «обладает или нет этот элемент некоторым свойством xi». Например, пусть P(x1) определяет, является ли легковой автомобиль красным, тогда выражение P(«Жигули»)=True, обозначает, что конкретный легковой автомобиль марки «Жигули» является красным и его можно отнести к множеству B «красные легковые автомобили» (очевидно, что в данном случае выполняется условие BÍA).

Рассмотрим случай, когда для множества объектов Z («множество автомобилей») задано несколько свойств (или множество свойств X={x1, x2, xn}), каждое из которых задано одним из множеств X1, X2,…,Xn. Например, если Z множество всех автомобилей, и его объекты имеют свойства x1, x2 и x3 , то X1={«красный», «синий», «белый»} – множество, определяющее цвет автомобилей, X2={1999,2000,2001} – множество, определяющее год выпуска, X3={«Мерседес», «Опель», «БМВ»} - множество, определяющее фирму производителя. Тогда, если нам необходимо отобрать все автомобили со свойствами: x1=(«красный»), x2=(2000) и x3=(«Опель»), нам надо построить сложный предикат следующего вида:

PA(x)=PZ(x1=(«красный»)) Ç PZ(x2=(2000))Ç PZ(x3=(«Опель»)).

Применив, сконструированный предикат ко всем объектам множества Z, мы получим все автомобили, удовлетворяющие сформулированному в задаче запросу.

Формальные языки (в том числе и язык SQL) позволяют строить такие предикаты, не прибегая к программированию, а используя непроцедурные формальные конструкции языка похожие на предложения в обычном естественном языке. Например, выше описанный предикат PA(x) на формализованном языке (близком к естественному) можно представить так:

 

ВЫБЕРИ автомобили,

у которых цвет= «Красный» И год= «2000» И фирма= «Опель».

 

В этом выражении слова ВЫБЕРИ и И являются ключевыми словами формального языка запроса, а цвет, год и фирма - именами множеств свойств объектов из универсума «автомобили». В рассмотренном запросе (или предикате PA(x)) свойства принимают конкретные значения.

В общем случае функцию предиката можно построить над несколькими переменными PA(x1, x2, xn). Предикаты такого вида определяют множества из элементов вида (x1, x2,…,xn), которые называются кортежами. Например, пусть X- множество всех автомобилей, у которых x1- свойство, определяющее год выпуска, а x2 – фирму изготовителя. Например, построим кортежи: x1=(«красный»,2000, «Опель»), x2 =(«белый»,2001, «БМВ»), или x3 =(«белый»,2001, «Мерседес») и т.п.. Теперь, если мы хотим построить новое множество A, которое содержит легковые автомобили года выпуска 2000 и производства фирмы «Мерседес», то сначала надо построить предикат вида PA(x2, x3 ), который принимает значение True при x2=2000, x3=«Мерседес». Затем сформировать множество X всех кортежей (x2, x3), и после этого, применив, полученный предикат PA(x2, x3) ко всем кортежам множества X, мы получим множество А из объектов (т.е. автомобилей)с интересующими нас свойствами. На формализованном языке запросов данную процедуру можно записать так:

 

ВЫБЕРИ ВСЕ объекты ИЗмножества автомобили,

у которых год= «2000» И фирма= «Опель».

 

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

Следует отметить, что переменные x1, x2, xn, определяющие кортежи, могут определяться из различных универсумов. Множество, которое получается в результате применения многозначного предиката к нескольким универсам, называется отношение. Иными словами, отношение это множество, построенное из кортежей, которые в свою очередь формируются из элементов других множеств («цвет», «год выпуска», «пробег» и т.п.), описывающие свойства исходного универсума («автомобили»). Взаимосвязь понятий «множество» (универсум), «кортежи», многозначный «предикат» и «отношение» показано на Рис.2.

 
 

 

 


Рис.2. Схема связи основных понятий: универсум, кортежи, предикат и отношение

 

На рис.2 показана схема решения задачи синтеза кортежей из исходных множеств, которые описывают свойства объектов Xi («прямая» задача). Однако, на практике часто возникает «обратная» задача, которая заключается в том, что необходимо выполнить анализ исходных кортежей и провести их декомпозицию, с целью получения оптимальной структуры исходных множеств. Решению этих задач посвящено много теоретических работ, с которыми можно познакомиться в литературе, посвященной вопросам «реляционной алгебры»[].

Базы данных, построенные на отношениях, называются реляционными базами данных.

Отношения обозначаются либо как множества R={r1, r2,…,rm }, где riÎ R не что иное как i-й объект, свойства которого определяется кортежем (x1, x2,…,xn), либо как множество R={(x1, x2,…,xn)i}, где (x1, x2, ,xn)ii-й кортеж, однозначно определяющий свойства объекта ri Î R.

На практике при создании реляционных баз данных многомерные отношения R={(x1, x2,…,xn)i} обычно представляются в виде двухмерных таблиц R, которые удовлетворяют следующим основным свойствам:

- строки таблицы R содержат кортежи (x1, x2,…,xn)i, которые описывают свойства одного объекта ri Î R. Строка таблицы R называется записью.

- столбец – содержит данные, принадлежащие к одному свойству (xi). Столбец называется полем, которое имеет имя и тип данных;

- на пересечении записи и поля лежит атрибут, который является атомарным (т.е. «неделимым») и однозначным[1];

- порядок записей и полей в таблице R не имеет значения и не влияет на кортежи;

- - каждая запись определяется ключом, который однозначно идентифицирует объект. Например, в таблице, которая содержит список студентов, поле с номером зачетной книжки студента является ключом. Ключевое поле обычно выделяется (например, подчеркивается).

Ниже приведен пример реляционной таблицы R=(Номер, Марка, Цвет, Год выпуска, Цена), которая содержит описания свойств выставленных на продажу в автосалоне автомобилей :

Таблица 1

Пример отношения R=(Номер, Марка, Цвет, Год выпуска, Цена)

Номер Марка Цвет Год выпуска Цена
«Мерседес» зеленый
«БМВ» красный
«Опель» красный

 

Над отношениями R справедливы все те операции, которые применимы над множествами. Некоторые операции, которые описаны выше: объединение, пересечение, вычитание, здесь интерпретируются следующим образом.

Под операцией «объединение» двух отношений R1 и R2, понимается выборка всех записей, которые либо содержатся в одном из двух отношений, либо являются общими для двух отношений (в языке SQL соответствует операции UNION).

Под операцией «пересечение» двух отношений R1 и R2, понимается выборка всех строк, которые являются общими для двух отношений (в языке SQL соответствует операции INTERSECT).

Под операцией «разность» двух отношений R1 и R2, понимается выборка строк, которые содержатся только в одном из двух отношений (в R1) (в языке SQL соответствует операции EXPECT)..

Особую роль в реляционной теории играют специальные операции над отношениями, которые заложены в основу языка запросов SQL:

- «проекция», которая определяет подмножество полей из заданного отношения (или набора отношений). Иначе эту операцию называют «вертикальной выборкой». Пример, рассмотрим в качестве исходного отношения R=(Номер, Марка, Цвет, Год выпуска, Цена). На базе исходного отношения построим его проекцию R1, которая является новым отношением R1=(Год выпуска, Марка). Проекция R1 в табличной форме будет иметь вид:

Таблица 2

Пример проекции отношения R в виде нового отношения
R1=(Год выпуска, Марка).

Таблица 2
Проекция R1 на отношением R

Год выпуска Марка
«Мерседес»
«БМВ»
«Опель»

 

Построение проекции R1 над отношением R соответствует фразе на языке SQL: SELECT [Год выпуска],[ Марка] FROM R.

- селекция (или ограничение), - это операция выбора строк, удовлетворяющих определенным условиям (иначе эту операцию называют «горизонтальной выборкой»). Например, выберем из исходного отношения R (см. описание выше), автомобили красного цвета. Это соответствует фразе на языке SQL: SELECT * FROM R WHERE[Цвет]=«красный». В результате получается новое отношение R2, которое показано в таблице 3 ниже:

 

Таблица 3

Пример селекции отношения R и получение нового отношения R2=(Номер, Марка,[Цвет]= «красный», Год выпуска, Цена.).

Номер Марка Цвет Год выпуска Цена
«БМВ» красный
«Опель» красный

 

Оператор WHERE выполняет функцию предиката P(xi=a), фильтрующего нужные строки из исходного отношения R.

 

- естественное соединение – выполняет операцию объединения отношений. Здесь выбираются только те кортежи, у которых в указанном поле есть совпадения. Например, есть два отношение R1=([Имя],[Отдел]) и R2=([Отдел],[Название]), и требуется построить новое отношение R3=([Имя],[Отдел],[Название]). В табличном виде решение этой задачи показано на рис.3. ниже. На языке SQL эта операция выглядит так:

SELECT R1.[Имя], R1.[Отдел],R2[Название] FROM R1, R2 WHERE R1.[Отдел]= R2.[Отдел].

Иллюстрация процесса выполнения операции соединения показана на рис.3. ниже.

- произведение – результат соединения двух отношений, каждая запись одного отношения соединяется с записью второго отношения ( аналогично операции соединении без условия). На языке SQL эта операция выглядит так:

 

SELECT R1.[Имя], R1.[Отдел], R2[Название] FROM R1, R2.

 

 


Рис.3. Пример выполнения операции «соединения» (R3= R1Å R2)

 

В случае примера отношений R1 и R2, которые рассмотрены выше, результатом операции произведение будет новое отношение R3, строки которого показаны в таблице 3.

Таблица 3

Пример произведения отношений R1 и R2 и получение нового отношения R3= R1хR2 .

 

Имя Отдел Наименование
Иванов Бухгалтерия
Петров Бухгалтерия
Сидоров Бухгалтерия
Иванов Отдел кадров
Петров Отдел кадров
Сидоров Отдел кадров

 

Кроме обоснования структуры предложений формального языка запросов SQL, реляционная алгебра играет большую роль в описании методологии синтеза новых отношений и декомпозиции исходных отношений, полученных в результате анализа реальной объектной среды. Применение формальной реляционной теории помогает в построении оптимальной структуры базовых отношений, составляющих основу для проектирования реляционной базы. Решение этой задачи сводится к нахождению рациональной процедуры построения нормализованных отношений (или как принято говорить «нормальных форм»), т.е. таких отношений, которые удовлетворяют определенным требованиям полноты, целостности, отсутствия избыточности, непротиворечивости и т.п. Однако эти вопросы выходят за рамки данной методической работы и здесь не рассматриваются. В предлагаемых примерах используются базы данных, построенные на уже нормализованных отношениях.

Для построения реляционных баз данных используются специальные программные комплексы, которые называются СУБД (системы управления базами данных). Известно много СУБД различных фирм производителей программного обеспечения: Informix (IBM), FireBird (Borland), SQL Server 2000 (MicroSoft), Oracle (Oracle), MySql и т.п.

Одной из популярных СУБД для создания небольших офисных приложений является СУБД Access (продукт компании MicroSoft).

Процесс создания реляционной базы данных с использованием СУБД MicroSoft в упрощенном виде можно описать следующей последовательностью процедур:

- проектирование логической схемы базы данных (определения состава таблиц (базовых отношений), описание полей, выбор ключей и связей между таблицами);

- создание базы данных в среде СУБД;

- создание описаний таблиц (описание столбцов, назначение ключей, присвоение имени таблице);

- создание схемы базы данных ;

- ввод данных в таблицы;

- подготовка и выполнение запросов;

- разработка диалоговых форм для работы с базой данных;

- подготовка и выполнение отчетов, подключение отчетов к диалоговым формам.

Для выполнения упражнений на занятиях необходимо создать в СУБД Access учебную базу данных AVTO (учет заказов в автомобильном салоне) по описанию, которое представлено в Приложении 1. Эта база данных состоит из четырех таблиц:

 

Salespeople(snum, sname, saddress, comm., stel, semail) – список продавцов автомобилей;

Customers (cnum, cname, caddress, rating., ctel, cemail)- список покупателей (клиентов) автомобилей;

Price(pnun, pname, peddim, price, pdate) – прайс-лист, продаваемых автомобилей;

Orders (onum, odate, amount, snum, cnum, pnun) – журнал учета продаж автомобилей.

 

База данных AVTO используется для выполнения ежемесячных расчетов, определения доходов и расходов по автосалону в различных разрезах. Например, владельца салона интересует, кто из продавцов продал автомобилей больше чем другие, или кто из покупателей купил самый дорогой автомобиль, какие марки автомобилей за отчетный период пользовались большим спросом, какова общая сумма проданных автомобилей и т.д. Для получения ответов на эти и другие вопрос необходимо иметь возможность без утомительного программирования формулировать запросы к базе данных на языке, который похож на естественный язык. Иначе говоря, запросы к базе данных должны записываться на непроцедурном языке, с помощью которого пользователь формулирует «что он хочет получить» от базы данных, а компьютер сам реализует этот запрос в программу поиска нужной информации и представляет пользователю результаты запроса в удобной для анализа форме. Для большинства реляционных СУБД таким языком является язык структурированных запросов SQL, который был разработан в середине 70 годов прошлого столетия фирмой IBM. Затем в 1979 году фирма Oracle разработала коммерческую версию этого языка, который широко внедряла в различных приложениях.

Благодаря своим достоинствам язык SQL стал общепринятым языком для реляционных баз данных. В 1986 году Американский институт стандартов (ANSI – American Nation Standard Institute) присвоил языку SQL статус национального стандарта для реляционных СУБД. Позже этот статус был подтвержден Международной организацией стандартов (ISO – International Standard Organization). В настоящее время практически все разработчики реляционных СУБД придерживаются стандарта SQL ANSI.

                       
   
SQL (Structured Query Language)
 
   
 
       
 

 

 


Рис.4. Схема группировки команд языка SQL

 

Особенности языка SQL следующие:

· SQL похож на естественный английский язык, что позволяет пользователям легко формулировать свои запросы без программирования;

· SQL- это непроцедурный язык, используя который пользователь формулирует какая информация ему нужна, и не определяет алгоритма ее поиска;

· SQL включает достаточно широкий набор команд (и других ключевых слов), которые позволяют решать множество различных прикладных задач:

- извлечения данных (DQL- Data Query Language);

- вставка, изменение или удаление строк и столбцовDML -Data Manipulation Language) таблицы;

- создание, модификация и уничтожение объектов базы данных (DDL - Data Definition Language) ;

- обеспечение целостности базы данных и доступа к данным (DML - Data Control Language)

Обычно команды языка SQL группируют по функциям как показано на рис. 4.

Очень широко конструкции языка SQL используются в приложениях, которые создаются при помощи языков современных программирования (например, VBA, VB, Delphi, С++ и т.п.). Появляются специальные инструментарии, с помощью которых конструируются диалоговые приложения на базе реляционных систем и языка SQL. В последние годы все больше полезных и эффективных экономических приложений разрабатывается самими пользователями, без привлечения специалистов в области программирования. Поэтому курс по изучению основ языка SQL входит в состав базовых курсов информатики для студентов экономических направлений.

Настоящее пособие представляет собой методический материал, который позволяет получить базовые навыки в построении различных запросов к базам данных, построенных на Access. Такой подход позволяет осуществить «плавный» переход от освоения примитивных конструкторов запросов, которые несомненно являются эффективным средством построения запросов для начинающих пользователей, к мощным средствам языка SQL и использовать конструкции, созданные на SQL в различных приложениях.




<== предыдущая лекция | следующая лекция ==>
ХІ. Системи пожежної сигналізації | Построение запроса в QBE и просмотр его в режиме SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.081 сек.