Учебное пособие Допущено Министерством образования Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности
Вид материала | Учебное пособие |
СодержаниеРис. 29. Связывание двух таблиц Рис. 30. Связывание трех таблиц Инструкции языка SQL |
- В. В. Крупица Личность Коллектив Стиль отношений (социально-психологический аспект), 4876.34kb.
- Учебное пособие допущен о министерством образования и науки Российской Федерации, 3988.52kb.
- Учебное пособие Выпуск второй, 4617.34kb.
- М. В. Ломоносова Хрестоматия по истории государства и права зарубежных стран, 11295.75kb.
- В. И. Королева Москва Магистр 2007 Допущено Министерством образования Российской Федерации, 4142.55kb.
- Учебное пособие для вузов, 3736.61kb.
- Учебное пособие для вузов, 7834.87kb.
- И. М. Синяева, В. М. Маслова, В. В. Синяев сфера, 5230.77kb.
- Д. В. Андреев Программирование микроконтроллеров mcs-51, 2064.3kb.
- Т. В. Корнилова экспериментальная психология теория и методы допущено Министерством, 5682.25kb.
Пример 3.10. Запрос с составным условием сравнения (логическая операция И)
Т
ребуется вывести товары, цена которых больше 100 долларов и количество которых на складе больше 1000 единиц (рис. 25).
Результат запроса:
-
PROD_ID
PROD_NAME
PRICE
STORE
4P
Процессор Athlon XP 2600+
110
1200
Выводятся все данные выбранной строки, т.к. в шаблоне запроса команда вывода "P." стоит в первом столбце шаблона. Если два условия стоят на одной строке шаблона, то для выбора строки необходимо выполнение обоих условий (логическая операция И).
Пример 3.11. Запрос с составным условием сравнения (логическая операция ИЛИ)
В
ывести все товары, цена которых больше 100 долларов или количество которых на складе больше 1000 единиц (рис. 26).
Условия, записанные на двух разных строках шаблона запроса, соответствуют условиям, объединенным логическим оператором ИЛИ. Команда вывода P. расположена на обеих строках и в каждом из столбцов, которые должны выводится.
Результат запроса следующий:
-
PROD_NAME
PRICE
STORE
Процессор Athlon XP 2600+
110
1200
Процессор Pentium-4 2600
200
800
Материнская плата GA 81 PE 1000
100
1400
Материнская плата EPOX 8KRA2+
95
1350
Видеокарта Nvidia GeForce FX5600 128mb
140
770
Видеокарта Ati Radeon 9500 64mb
150
850
ОЗУ DDR 256 MB PC 2700
45
1150
ОЗУ DDR 256 MB PC 3200
50
1250
ОЗУ DDR 512 MB PC 3200
97
1600
Пример 3.12. Запрос с использованием блока условий
Например, требуется вывести товары с ценой от 100 до 150 долларов. Для этого введем блок условий с явным заданием операции "И". Этот блок, обозначенный CONDITIONS содержит любые требуемые ограничения данных. В нашем примере к значениям одного и того же столбца должны одновременно применяться два условия. Поэтому удобно применить одно условие в блоке условий (рис. 27).
В
этом примере введена переменная _S, которая является элементом-образцом и обозначает неопределенное значение в столбце таблицы. В данном примере элемент-образец обозначает любое возможное значение столбца PRICE.
Результат:
PROD_ID | PROD_NAME | PRICE | STORE |
4P | Процессор Athlon XP 2600+ | 110 | 1200 |
4MB | Материнская плата GA 81 PE 1000 | 100 | 1400 |
3V | Видеокарта Nvidia GeForce FX5600 128mb | 140 | 770 |
4V | Видеокарта Ati Radeon 9500 64mb | 150 | 850 |
Пример 3.13. Сравнение с элементами-образцами
О
пределить товар, цена которого больше, чем цена видеокарты Nvidia GeForce FX5600 128mb . Пример шаблона приведен на рис. 28.
По-другому запрос можно сформулировать следующим образом: "Цена видеокарты Nvidia GeForce FX5600 128mb обозначена как _В. Вывести все товары, цена которых больше, чем _В."
Результат:
-
PROD_NAME
PRICE
Процессор Pentium-4 2600
200
Видеокарта Ati Radeon 9500 64mb
150
Рассмотрим создание многотабличных запросов.
Пример 3.14. Объединение двух таблиц
Допустим, необходимо вывести название фирм-клиентов, заказавших количество товара больше 20 единиц. Для создания этого запроса необходимо объединить две таблицы. Элемент-образец _CN связывает две таблицы (рис. 29).
-
CUST
CUST_NUM
CUST_NAME
CUST_SUM
_CN
P.
ORDERS | ORDER_NUM | CUST_NUM | PROD_ID | QTY | DATE_ORDER |
| | _CN | | P. >20 | |
Рис. 29. Связывание двух таблиц
Это означает, что в выбранной паре строк из двух таблиц в соответствующих столбцах должно находиться одно и то же значение.
Результат:
-
CUST_NAME
QTY
ЧП Гришин П.В.
30
ЧП Гришин П.В.
27
ООО "Гермес"
21
Пример 3.15. Запрос с использованием трех таблиц
Вывести названия клиентов, заказавших процессор Celeron 2400 (рис. 30).
-
CUST
CUST_NUM
CUST_NAME
CUST_SUM
_CN
P.
ORDERS | ORDER_NUM | CUST_NUM | PROD_ID | QTY | DATE_ORDER |
| | _CN | _PI | | |
-
PROD
PROD_ID
PROD_NAME
PRICE
STORE
_PI
Процессор Celeron 2400
Рис. 30. Связывание трех таблиц
Результат:
-
CUST_NAME
ООО "PC-Style"
ЧП Федоров В.Г.
Пример 3.16. Связывание таблиц с вычислениями
О
пределить объем каждого заказа в таблице ORDERS (рис.31).
В этом запросе введена дополнительная таблица, не имеющая заголовков столбцов. Такая таблица называется целевой и используется для определения данных, выводимых запросом. Данная таблица содержит информацию о цели (результате запроса). Команда вывода P. расположена в первом столбце целевой таблицы, следовательно, выводятся все столбцы целевой таблицы.
Результат:
-
ORDER_NUM
221 Объем заказа=1350
222 Объем заказа=3000
223 Объем заказа=3200
224 Объем заказа=1680
225 объем заказа=2970
226 Объем заказа=450
227 Объем заказа=1710
228 Объем заказа=1050
229 Объем заказа=1530
230 Объем заказа=1552
231 Объем заказа=1000
Пример 3.17. Запрос с частичным совпадением
В
ывести номера заказов, в которых требуется поставка только процессоров (рис. 32).
В этом примере выбор строк основан на частичном совпадении. В наших таблицах возможны два варианта записи модели процессоров, поэтому в качестве окончания названия товара используется элемент примера _RT, обозначающий любое возможное из окончаний.
При записи выражений на QBE могут использоваться встроенные функции: CNT (количество), SUM (сумма), AVG (среднее), MIN (минимум), MAX (максимум), UN (уникальный), ALL (все значения, в том числе и повторяющиеся).
Пример 3.18. Запрос с использованием функции MAX
Вывести максимальный объем из годовых заказов клиентов. Шаблон запроса представлен на рис. 33.
Результат запроса, состоящий из одного значения 160 000, тоже можно считать реляционной таблицей из одного столбца и одной строки.
П
ример 3.19. Запрос с использованием функции AVG
Каков средний годовой объем заказов клиентов?
Шаблон запроса представлен на рис. 34.
Пример 3.20. Запрос с использованием функции CNT
Сколько клиентов заказало процессор Celeron 2400?
Ш
аблон запроса показан на рис. 35.
Пример 3.21. Запрос с использованием оператора UNQ
Сколько всего клиентов сделало заказы?
Ш
аблон запроса приведен ниже (рис. 36).
Результат: 9. Оператор UNQ применяется для того, чтобы каждого клиента подсчитать ровно один раз (повторы исключаются).
Пример 3.22. Запрос с группировкой
В некоторых запросах можно сгруппировать строки, имеющее одинаковое значение в одном или нескольких столбцах. Одна такая группа формируется на каждое значение заданного столбца. Затем к группе можно применить статистические функции.
Вывести общее количество заказанного товара по каждому клиенту.
"G." обозначается столбец, по которому производится группировка. В нашем случае, группировка проводится по CUST_NUM, т. к. мы хотим подсчитать общее количество товара по каждому клиенту. Затем используется целевая таблица, задающая вывод столбца, по которому производится группировка и значений функций, примененных к группам (рис. 37)
Р
езультат:
-
CUST_NUM
QTY
3101
27
3105
57
3106
16
3104
10
3103
35
3102
21
3108
16
3107
10
Пример 3.23. Запрос с группировкой и условием
В
ывести номера клиентов, сделавших более одного заказа (рис. 38).
Результат:
-
CUST_NUM
3101
3103
3105
В отличие от рассмотренных операций, операции вставки, удаления и модификации приводят к изменению исходной таблицы. Вид операции (вставка – I., удаление – D., модификация – U.) записывается в шаблоне под именем таблицы, а константы и условные выражения указываются по тем же правилам, что и в операциях выборки.
Пример 3.24. Вставка данных в таблицу
В
ставка в таблицу ORDERS нового заказа может выглядеть следующим образом (рис. 39):
Пример 3.25. Удаление информации из таблицы
Пусть необходимо удалить информацию о заказах клиента 3105 (рис. 40).
Из таблицы ORDERS удаляется вся информация о клиенте 3105.
Пусть необходимо удалить информацию о заказах, сделанных до 17.01.03. Шаблон запроса выглядит следующим образом (рис. 41):
Пример 3.26. Изменение данных
Для изменения цены процессора Athlon XP 2600+ нужно сформировать запрос (рис. 42).
Пример 3.27. Изменение данных с вычислениями
Для того, чтобы повысить цену всех товаров на 5% можно сформировать запрос на изменение информации (рис. 43).
С
овременные СУБД имеют незначительные изменения от классического варианта QBE в интерпретации отдельных операций, введению дополнительных операций и изменению формы представления языка.
3.3.4. Структурированный язык запросов SQL
SQL (Structured Query Language) – структурированный язык запросов – является инструментом, предназначенным для выборки и обработки информации, содержащейся в компьютерной базе данных. SQL является языком программирования, применяемым для организации взаимодействия пользователя с базой данных (рис. 44). SQL работает только с реляционными базами данных и предоставляет пользователю следующие функциональные возможности:
- изменение структуры представления данных;
- выборка данных из базы данных;
- обработка базы данных, т. е. добавление новых данных, изменение, удаление имеющихся данных;
- управление доступом к базе данных;
- совместное использование базы данных пользователями, работающими параллельно;
- обеспечение целостности базы данных.
S
QL – это не полноценный компьютерный язык типа PASCAL, C++, JAVA. Еще раз отметим, что SQL, также как и QBE, является непроцедурным языком. С помощью SQL описываются свойства и взаимосвязи сущностей (объектов, переменных и т. п. ), но не алгоритмы решения задачи. Он не содержит условных операторов, операторов цикла, организации подпрограмм, ввода-вывода и т. п. В связи с этим SQL автономно не используется. Инструкции SQL встраиваются в программу, написанную на традиционном языке программирования и дают возможность получить доступ к базам данных (встроенный SQL). Кроме того, из таких языков, С, C++, JAVA инструкции SQL можно посылать СУБД в явном виде, используя интерфейс вызовов функций.
Язык SQL является многофункциональным языком. Во-первых, SQL используется в качестве языка интерактивных запросов пользователей с целью выборки данных и в качестве встроенного языка программирования баз данных. Кроме того, SQL используется в качестве языка администрирования БД для определения структуры базы данных и управления доступом к данным, находящимся на сервере; в качестве языка создания приложений клиент/сервер, доступа к данным в среде Internet, распределенных баз данных.
С помощью SQL можно динамически изменять и расширять структуру базы данных даже в то время, когда пользователи работают с ее содержимым. Таким образом, SQL обеспечивает максимальную гибкость. Статические языки определения данных запрещают доступ к БД во время изменения ее структуры
Официальный стандарт языка SQL был опубликован ANSI и ISO в 1986 г. В дальнейшем, он был расширен стандартами SQL-89 (1989 г.) и SQL-92 (1992 г.). Действующая версия стандарта SQL:1999 была принята ANSI и ISO в конце 1999 г. В настоящее время ведется работа над стандартом для SQL3, содержащим объектно-ориентированные расширения.
Кроме перечисленных выше версий языка SQL для универсальных ЭВМ существует множество версий типа "клиент-сервер", а также версий SQL для персональных компьютеров.
Основные инструкции языка SQL
Основные задачи, решаемые средствами языка SQL – манипулирование различными объектами базы данных (таблицами, индексами, представлениями и т. д.) и манипулирование данными, хранящимися в таблицах базы данных. В связи с этим, язык SQL принято делить на две части: язык определения данных DDL и язык манипулирования данными DML. Основные инструкции языка SQL представлены в табл. 9.
При описании синтаксиса инструкций будем использовать следующие правила:
- каждая инструкция начинается с команды – ключевого слова, описывающего действие, выполняемое инструкцией (например, CREATE – создать, DELETE – удалить и т. д.);
- после команды следует одно или несколько предложений, описывающих данные, с которыми работает инструкция, или содержащих дополнительную информацию о действии, выполняемом инструкцией. Каждое предложение начинается с ключевого слова, например, WHERE (где), FROM (откуда), INTO (куда), HAVING (имеющий);
- в квадратные скобки "[…]" заключены необязательные элементы;
- вертикальная черта "|" , разделяющая два элемента, указывает на то, что в инструкции используется либо один элемент, либо второй;
- в фигурные скобки "{…}"заключаются элементы, разделенные вертикальной чертой;
- троеточие означает, что далее в инструкции либо следует выражение, либо повторяются элементы, указанные перед тремя точками.
Таблица 9
Инструкции языка SQL
Вид | Название | Назначение |
DDL | CREATE TABLE | Добавление новой таблицы в БД |
DROP TABLE | Удаление таблицы | |
ALTER TABLE | Изменение структуры таблицы | |
CREATE INDEX | Создание индекса для столбца | |
DROP INDEX | Удаление индекса столбца | |
CREATE VIEW | Создание нового представления | |
DROP VIEW | Удаление представления | |
GRAND | Назначение привилегий доступа пользователей к БД | |
REVOKE | Удаление привилегий | |
CREATE SCHEMA | Добавление новой схемы в БД | |
DROP SCHEMA | Удаление схемы | |
DML | SELECT | Выборка данных из таблицы |
UPDATE | Обновление данных в таблице | |
INSERT | Вставка новых строк в таблицу | |
DELETE | Удаление строк из таблицы |
Рассмотрим основные инструкции языка SQL.
Инструкция создания таблицы имеет формат вида: