Любая СУБД позволяет выполнять запросы. Результатом выполнения запросов тоже является таблица. При этом пользователь не должен сам программировать просмотр всей базы данных, анализировать каждую запись и отбирать нужную информацию. Всё это делает ядро СУБД по сформированному пользователем запросу. Наличие языка запросов позволяет эффективно реализовывать сетевые системы по технологии «Клиент-сервер».
При работе сетевых приложений база данных может располагаться на файл-сервере или файл-серверах. Функции файл-сервера заключаются, в основном, в хранении базы данных и обеспечении доступа к ней пользователя. При этом вся обработка осуществляется на компьютере пользователя.
…
При небольших объёмах данных эта схема работает вполне удовлетворительно. Однако, при увеличении числа пользователей в сети и ростом базы данных, начинают возникать проблемы, связанные с падением производительности. Это связано с увеличением объёмов данных, передаваемых по сети, т.к. обработка производится на компьютере пользователя.
Технология «Клиент-сервер» разделяет приложение на 2 части: клиентская часть (в основном обеспечивает интерфейс и находится на компьютере пользователя) и серверная часть (управляет данными, администрирует базу данных и находится на специальном выделенном компьютере (сервере)). Клиентское приложение формирует запрос к серверу, где он эффективно обрабатывается, и результаты выполнения передаются пользователю. Схема технологии «Клиент-сервер» имеет следующий вид:
|
|
|
|
запрос
данные запрос данные
запрос
…..
Такая технология позволяет резко сократить объём данных, передаваемых по сети. Практическая реализация технологии «Клиент-сервер» возможна только при стандартизации языка запросов, для того чтобы приложения, разрабатываемые на различных языках программирования или в различных организациях могли функционировать совместно. Таким мировым стандартом на сегодняшний день является структурированный язык запросов SQL. SQL является стандартом при работе с реляционными базами данных. Первый международный стандарт языка SQL был принят в 1989 году и являлся стандартом SQL 1 или ANSI/ISO. В конце 1992 года был принят стандарт SQL 2. Он не лишён недостатков, но является более полным и точным, чем SQL 1. В 1999 был разработан новый стандарт SQL 3. Его основным отличием от SQL 1 и SQL 2 является то, что в него введены новые типы данных. При этом предполагается возможность создания более сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. Также новый стандарт стандартизирует события и триггеры, которые мы дальше рассматривать не будем.
Различают 2 вида языка SQL: интерактивный и встроенный. Эти 2 формы работают одинаково, но используются по-разному.
Интерактивный SQL применяется для выполнения действий непосредственно в базе данных, чтобы получить результат. При применении этой формы вводится команда, выполняется и немедленно получается результат.
Встроенный SQL состоит из команд языка SQL, включённых в программы, Написанные на других языках программирования (С++, Pascal и т.д.).
Любые запросы в Microsoft Access хранятся в виде SQL-запросов. Это позволяет использовать Microsoft Access в любой другой совместной и использующей SQL СУБД.
С помощью языка SQL можно выполнить следующие виды запросов СУБД:
- Запросы выборки данных, в том числе, с сортировкой, подсчётом итоговых значений и т.д.
- Запросы обновления базы данных (добавление, изменение, удаление строк таблицы).
- Запросы создания таблицы.
- Запросы управления базой данных (определение прав доступа к данным, переименование таблиц, определение синонимов для имён таблицы и т.д.).
Структура SQL.
В отличие от реляционной алгебры, в которой представлены только операции запросов базы данных, SQL является полным языком. В нём присутствуют не только операции запросов, но и операторы, соответствующие языку описания данных.
SQL содержит несколько разделов:
Операторы определения данных DDL:
Операторы | Смысл | Действие |
CREATE TABLE | Создать таблицу | Создаёт новую таблицу БД |
DROP TABLE | Удалить таблицу | Удаляет таблицу БД |
ALTER TABLE | Изменить таблицу | Изменяет структуру существующей таблицы |
CREATE VIEW | Создать представление | Создаёт виртуальную таблицу |
DROP VIEW | Удалить представление | Удаляет созданное представление |
CREATE INDEX | Создать индекс | Создаёт индекс для некоторой таблицы |
DROP INDEX | Удалить индекс | Удаляет ранее созданный индекс |
Операторы манипулирования данных:
Операторы | Смысл | Действие |
DELETE | Удалить строки | Удаляет одну или несколько строк |
INSERT | Вставить строку | Вставляет одну строку в базовую таблицу |
UPDATE | Обновить строку | Обновляет значение одной или нескольких строк |
Язык запросов DQL (состоит из одного оператора):
Операторы | Смысл | Действие |
SELECT | Выбрать строки | Оператор заменяет все операции реляционной алгебры |
Средства управления транзакциями:
Операторы | Смысл | Действие |
COMMIT | Завершить транзакцию | Завершает комплексную обработку данных, включённых в общую транзакцию |
ROLLBACK | Откатить транзакцию | Отменяет изменения в ходе выполнения транзакции |
SAVEPOINT | Сохранить промежуточную точку выполнения транзакции | Сохраняет промежуточное состояние базы данных |
Средства администрирования данных:
Операторы | Смысл | Действие |
ALTER DATABASE | Изменить БД | Изменяет набор основных объектов БД |
ALTER DBAREA | Изменить область хранения БД | Изменяет ранее созданную область хранения БД |
ALTER PASSWORD | Изменить пароль | Изменяет пароль для БД |
CREATE DATABASE | Создать БД | Создаёт новую БД |
CREATE DBAREA | Создать область хранения БД | Создаёт новую область хранения БД |
DROP DATABASE | Удалить БД | Удаляет существующую БД |
GRANTE | Предоставить права | Предоставляет права доступа к БД |
REVOKE | Лишить прав | Лишает прав доступа к некоторым объектам |
Программный SQL:
Операторы | Смысл | Действие |
DECLARE | Определяет кур/сор | Задаёт имя курсора |
OPEN | Открыть курсор | |
FETCH | Считать строку из множества строк | |
CLOSE | Закрыть курсор | |
PREPARE | Подготовить оператор SQL к динамическому выполнению | |
EXECUTE | Выполнить оператор SQL |
SQL 1 поддерживает следующие типы данных:
- CHARACTER – CHAR – это символьные строки постоянной длинны. При задании данного типа под каждое значение отводится n символов и, если реальное значение < n символов, то СУБД автоматически дополняет недостающие символы пробелами.
- NUMERIC (n, m) – точные числа. Здесь n – общее число цифр в числе, m – количество цифр слева после запятой.
- DECIMAL (n, m) – точные числа, где n – общее число цифр в числе, m – количество цифр слева от десятичной точки.
- DEC (n, m) – практически идентичен двум предыдущим типам.
- INTEGER – INT – это целые числа.
- SMALLINT – целые числа меньшего диапазона.
- FLOAT [(n)] – числа большой точности, хранимые в форме с плавающей точкой.
- REAL – вещественный тип чисел, который соответствует числам с плавающей точкой с меньшей точностью.
- DOUBLE PRECISION – этот тип данных специфицирует тип данных с определённой в реализации точностью, большей, чем определённой в реализации типа REAL.
Тема 6.
1. Запрос выборки в языке SQL. Выборка из одной таблицы.
2. Суммирование данных с помощью функций агрегирования (групповых функций).