В начало
Тема. Реляционный доступ к БД. Основные сведения о языке SQL
Увеличение объема и структурной
сложности хранимых данных, расширение круга пользователей информационных систем
привели к широкому распространению наиболее удобных и сравнительно простых для
понимания реляционных (табличных) систем управления базами данных. Все
языки манипулирования данными, созданные до появления реляционных баз данных и
разработанные для многих СУБД персональных компьютеров, так называемые дореляционные
языки манипулирования данными (ЯМД) – это языки, ориентированные на операции с
данными, представленными в виде логических записей файлов. Их применение
требовало от пользователей детального знания организации хранения данных и
достаточных усилий для указания не только того, какие данные нужны, но и того,
где они размещены и как шаг за шагом можно получить их. Появление
теории реляционных баз данных и предложенного Коддом Э.Ф. языка запросов
“alpha”, основанного на реляционном исчислении, инициировало разработку ряда
языков запросов, которые можно отнести к двум классам: 1.
Алгебраические языки запросов – языки, позволяющие выражать запросы средствами
специализированных операторов, применяемых к отношениям (JOIN – соединить,
INTERSECT – пересечь, SUBTRACT – вычесть и т.д.). 2.
Языки исчисления предикатов – набор правил для записи выражения, определяющего
новое отношение из заданной совокупности существующих отношений. Из
всех этих языков полностью сохранились и развиваются QBE (Query By Example) и SQL (Structured Query Language), а из остальных
взяты в расширение внутренних языков СУБД только наиболее интересные
конструкции. В начале 1980-х годов SQL “победил” другие языки запросов и стал
фактическим стандартом таких языков для профессиональных реляционных СУБД Непроцедурный,
структурированный язык запросов (SQL) – язык, ориентированный на операции с
данными, представленными в виде логически взаимосвязанных совокупностей таблиц.
Особенность предложений языка запросов SQL – ориентированность в большей степени на конечный результат
обработки данных, чем на процедуру этой обработки. SQL сам определяет, где
находятся данные, какие индексы и даже наиболее эффективные последовательности
операций следует использовать для их получения: не надо указывать эти детали в
запросе к базе данных. Недавно принятый стандарт ANSI
SQL-92 расширяет возможности встроенных SQL-операторов и позволяет включить
динамический SQL. И в интерактивной и во встроенной формах SQL имеются
многочисленные части, или субподразделения. К сожалению, эти термины не используются
повсеместно во всех реализациях. Они подчеркиваются ANSI и полезны на
концептуальном уровне, но большинство SQL программ практически не обрабатывают
их отдельно, так что они, по существу, становятся функциональными категориями
команд SQL. DDL (Data Definition Language – язык определения данных) – так
называемый язык описания схемы в стандарте ANSI, состоит из команд, которые
создают объекты (таблицы, индексы, просмотры и т.д.) в базе данных. DML (Data
Manipulation Language – язык манипулирования данными) – это набор команд,
которые определяют, какие значения представлены в таблицах в любой момент
времени. DCL (Data Control Language – язык управления данными) – комплекс
средств, которые определяют, разрешить ли пользователю выполнять определенные действия
или нет. Реализация
в SQL концепции операций, ориентированных на табличное представление данных,
позволило создать компактный язык с небольшим (менее 30) набором предложений.
Как в интерактивном, так и в встроенном SQL существуют следующие предложения:
Кроме того, SQL предоставляет
возможность выполнять в этих предложениях следующее:
Основные типы данных SQL –
используемые языком SQL основные типы данных, форматы которых могут несколько различаться
для разных СУБД: целое число; десятичное число; вещественное число; символьная
строка фиксированной или переменной длины; дата в формате (по умолчанию
mm/dd/yy); время в формате (по умолчанию hh.mm.ss); деньги в формате,
определяющем символ денежной единицы и его расположение (суффикс или префикс) и
др. Таблицы создаются командой CREATE
TABLE. Эта команда создает структуру таблицы. Значения вводятся с помощью DML
команды INSERT (см. далее). Команда CREATE TABLE в основном определяет имя
таблицы в виде описания набора имен столбцов, указанных в определенном порядке.
Она также определяет типы данных и размеры столбцов. Cинтаксис команды CREATE TABLE будет следующим: CREATE
TABLE базовая_таблица (столбец тип_данных [,столбец тип_данных] ...); Индекс
– это структура данных, которая помогает СУБД быстрее обнаруживать
отдельные записи в таблице, а потому позволяет сократить время выполнения
запросов пользователя. Таблицы могут иметь большое количество строк, а так как
строки не находятся в каком-нибудь определенном порядке, на их поиск по
указанному значению может потребоваться время. Индекс в базе данных аналогичен
предметному указателю, приведенному в конце книги. Это структура, связанная с
таблицей и предназначенная для поиска информации по тому же принципу, что и
предметный указатель в книге. Предложение
для создания следующее: CREATE Таблица
должна уже быть создана и должна содержать имя столбца. Однажды созданный
индекс будет невидим пользователю. SQL самостоятельно решает, когда он
необходим чтобы ссылаться на него, и делает это автоматически. Представления
(View) – это таблицы, чье содержание выбирается или получается из других
таблиц. Они работают в запросах и операторах DML точно так же, как и
базовые таблицы, но не содержат никаких
собственных данных. Представление создается командой CREATE VIEW. Она состоит
из слов CREATE VIEW (создать представление), имени представления, которое нужно
создать, слова AS (как) и, далее, запроса. Синтаксис
предложения CREATE VIEW имеет вид: CREATE
VIEW имя_представления [(столбец[,столбец]
...)] AS
подзапрос; Как
уже говорилось, SQL представляет собой структурированный язык запросов. Запросы
– наиболее часто используемый элемент SQL. Все запросы на получение практически
любых данных в SQL осуществляются с помощью единственного предложения SELECT –
предложения языка SQL, с помощью которого можно выполнить все запросы на
получение практически любого количества данных из одной или нескольких таблиц
БД, в общем случае результатом реализации предложения SELECT является другая
таблица. Предложение SELECT выглядит следующим образом: SELECT [ DISTINCT] <Список
полей > или * FROM < Список таблиц> [WERE<Условие отбора>] [ORDER BY <Список
полей для сортировки >] [GROUP BY < Список
полей для группирования>] [HAVING <Условия группирования >] [UNION<Вложенный оператор SELECT>] Критерий
отбора строк формируется из одного или нескольких условий, соединенных
логическими операторами:
Операторы
языка манипулирования данными DML управляют значениями, представляемыми в
таблицах. Значения могут быть помещены и удалены из полей тремя операторами
языка DML: INSERT (вставить), UPDATE (модифицировать), DELETE (удалить). В
языке SQL также имеется возможность изменения таблицы после того, как она была
создана. Команда ALTER TABLE используется, чтобы изменить определение
существующей таблицы. Обычно она добавляет столбцы к таблице. Иногда она может
удалять столбцы или добавлять в (удалять из) определение таблицы новые
(существующие) ограничения. Типичный синтаксис, чтобы добавить столбец к
таблице: ALTER
TABLE имя_таблицы ADD
имя_столбца; |
| |