Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Шехтман.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

6.1. История sql.

Первый международный стандарт языка SQL был принят в 1989 г. Иногда его называют стандартом SQL ANSI/ISO. Большинство коммерческих СУБД поддерживают его полностью. Однако развитие информационных технологий потребовали от языка SQL многочисленных усовершенствований этого стандарта. В 1992 году был принят второй стандарт языка. В 1999 г. был принят новый стандарт, который ознаменовал появление в языке качественно новых свойств, а не просто улучшений и усовершентсвований.

Каждый из упомянутых стандартов является весьма объемным документом. Для чего нужны эти стандарты языка и, в частности, нужны ли они разработчикам? На этот вопрос можно дать следующий ответ.

В серьезных разработках стандарт игнорировать нельзя по следующим причинам. Разработка любой информа­ционной системы, ориентированной на технологию баз данных, является трудоем­ким процессом. Следует отдавать себе отчет, что нельзя разработать сколько-нибудь серьезную систему за несколько дней. Поэтому, учитывая стремительность развития вычислительной техники, сис­тем телекоммуникаций и программного обеспечения, можно ожидать, что имеется риск того, что проект устареет еще до внедрения. Нельзя забывать и то, что сама предметная область, моделируемая и описываемая с помощью баз данных и программных приложений, тоже изменяется. Поэтому проект достаточно крупной информационной системы обязательно должен быть рассчитан на расширяемость и перено­симость на новые платформы. Это и обеспечивает стандарт.

Большинство поставщиков аппаратуры и про­граммного обеспечения поддерживают стандарты, так как это выгодно их пользователям. Однако многие поставщики стремятся улучшить свой продут введением дополнительных возможностей, не предусмотренных стандартом.

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

6.2. Структура sql.

Приведем основные разделы и операторы SQL.

1. DDL (язык определения данных, data definition language).

CREATE TABLE

Создает таблицу указанной структуры

DROP TABLE

Уничтожает таблицу

ALTER TABLE

Изменяет структуру или ОЦ

CREATE VIEW

Создает виртуальную таблицу, соотв. SQL-запросу

ALTER VIEW

Изменяет представление

DROP VIEW

Уничтожает представление

CREATE INDEX

Создает индекс для обеспечения быстрого доступа по атрибутам, входящим в индекс

DROP INDEX

Уничтожает индекс

2. DML (язык модификации данных, data manipulation language)

DELETE

Удаляет строки по условию

INSERT

Вставляет строку

UPDATE

Изменяет значения столбцов в строках по условию

3. DQL (язык запросов на выборку данных, data query language)

SELECT

Заменяет ВСЕ операторы реляционной алгебры! Формирует результирующее отношение.

4. Transactions (управление транзакциями)

COMMIT

Завершить взаимосвязанную обработку информации.

ROLLBACK

Отменить изменения, проведенные в ходе выполнения транзакции.

SAVEPOINT

Сохранить промежуточное состояние БД для возможности отката

5. Adm (администрирование)

ALTER DATABASE

ALTER DBAREA

ALTER PASSWORD

CREATE DATABASE

CREATE DBAREA

DROP DATABASE

DROP DBAREA

GRANT

REVOKE

6. PSM – язык загружаемых процедур.

7. ProSQL (язык программирования навигационных запросов; встраиваемый SQL)

DECLARE

Определяет имя и связанный с ним запрос – виртуальный набор данных (курсор)

OPEN

Формирует виртуальный набор

FETCH

Считывает очередную строку

CLOSE

Прекращает доступ к курсору

PREPARE

Формирует план выполнения

EXECUTE

Выполняет

В коммерческих СУБД набор операторов шире, в частности имеется так называемый раздел PSM (язык хранимых модулей, persistence storage modules), на котором программируются особые объекты СУБД, такие как хранимые процедуры и триггеры. Разговор о них впереди.

Типы данных (SQL89)

CHARACTER(n) CHAR(n)

NUMERIC[(n,m)]

DECIMAL[(n,m)] DEC[(n,m)]

INTEGER INT

SMALLINT

FLOAT[(n)]

REAL

DOUBLE PRECISION

SLQ92

VARCHAR(n)

NCHAR(n)

NCHAR VARYING(n)

BIT(n)

BIT VARYING(n)

DATE

TIMESTAMP

INTERVAL

Коммерческие СУБД – MEMO (LONG, TEXT, BLOB), MONEY (CURRENCY), …

При выполнении сравнений (фильтрация) – константы:

для числовых типов

  • последовательность цифр с знаком числа и десятичной точкой: +512, -11.23, 38;

  • с плавающей точкой мантисса и порядок: 3.75E-5, 0.000123E11

  • строковые константы в одинарных кавычках ‘Новокузнецк’

  • дата, время, интервал – в виде строковой константы: Сентябрь 11, 2001, 11-Сен-2001

  • USER

Выражения с +-*/

Встроенные функции

BIT_LENGTH – битов в строке

CAST( значение AS тип данных)

CHAR_LENGTH – длина строки символов

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

LOWER

OCTED_LENGTH – байтов в строке

POSITION( строка IN строка)

SUBSTRING(строка FROM индекс FOR длина)

TRIM(BOTH символ FROM строка)

TRIM(LEADING символ FROM строка)

TRIM(TRAILING символ FROM строка)

UPPER