Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
1.04 Mб
Скачать
      1. Скалярные операторы языка sql.

Основа всякой мудрости - терпение” ПЛАТОН 427-348 гг. до н.э.

Язык SQLвключает в себя некоторое количество встроенных операторов, которые могут быть использованы для построения скалярных выражений (т.е. иметь скалярный результат). Помимо обычных знаков арифметических операторов (+, -, * и /) они определены в языке в языке. Ниже приводится таблица с краткими комментариями скалярных операторовISO SQL92.

BIT_LENGTH

Возвращает длину заданной строки в битах.

BIT_LENGTH(X’FFFF’) => 16

OCTET_LENGTH

Возвращает длину заданной строки в октетах(битах/8).

OCTET_LENGTH(X’FFFF’) => 2

CHAR_LENGTH

Возвращает длину заданной строки в символах.

CHAR_LENGTH(’Beech’) => 5

CAST

Преобразует данные из одного типа в другой.

CAST(5E3 AS INTEGER) => 5000

||

Оператор конкатенации строк.

Full_name = fname || lname

USER

Возвращает символьную строку – идентификатор текущего пользователя.

SESSION_USER

Возвращает символьную строку, представляюую собой идентификатор текущего сеанса.

SYSTEM_USER

Возвращает символьную стороку идентификатора пользователя, активизировавшего текущий модуль.

LOWER

Преобразование всех символов в заданной строке в строчные.

LOWER(SELECT fn FROM st WHERE n=’N21’)=>’john’

UPPER

Преобразование всех символов в заданной строке в прописные.

LOWER(SELECT fn FROM st WHERE n=’N21’)=>’JOHN’

TRIM

Функция удаляет ведущие (LEADING), конечные (TRAILING) или и те и другие (BOTH) указанные символы из заданной строки.

TRIM(BOTH ‘*’ FROM ‘***Hello!***’)=>’Hello!’

POSITION

Функция возвращает позицию одной строки в пределах другой.

POSITION(‘ee’ IN ‘beech’) => 2

SUBSTRING

SUBSTRING(‘Beech’ FROM 1 TO 3) => ‘Bee’

CASE

Оператор возвращает одно из допустимых значений в результате проверки условий.

CASE type

WHEN ‘House’ THEN 1

WHEN ‘Flat’ THEN 2

ELSE 0

END

CURRENT_DATE

Функция возвращает точную дату той временной зоны, которая является локальной для пользователя.

RURRENT_TIME

Функция возвращает текущее время той временной зоны, которая является локальной по умолчанию для текущего сеанса пользователя.

CURRENT TIME(6) – с точностью до микросекунды.

CURRENT_TIME_STAMP

Функция возвращает дату и текущее время той временной зоны, которая является локальной по умолчанию для текущего сеанса пользователя. Для CURRENT TIME(0) – с точностью до секунд.

EXTRACT

Функция возвращает значение указанного поля типа даты, времени или интервала.

      1. Создание баз данных.

Не прибавляй огонь к огню...” ПЛАТОН 427-348 гг. до н.э.

В различных СУБД процедура создания баз данных существенно различается. Для многопользовательских систем право создания базы данных закрепляется за администратором базы данных (АБД). Однопользовательские СУБД база данных создается и модифицируется опытным пользователем в процессе решения прикладных задач. Стандарт ISO не регламентирует, как должны создаваться базы данных, что является причиной возникновения диалектовSQL. Рассмотрим пример.

  • СУБД INGRES включает специальную утилиту под именемCREADEDB, с помощью которой создаются БД, и утилитуDESTROYDB– для их удаления.

  • В СУБД ORACLE создание БД является частью установки системы. Чаще всего все пользовательские таблицы размещаются в единственной общесистемной базе данных.

В соответствии со стандартом ISO, объекты БД существуют в некоторой среде (environment). Она состоит из одного или нескольких каталогов (catalog), а каждый каталог – из набора схем (schema). Стандарт оставляет право выбора механизма создания и удаления каталогов, но регламентирует механизм создания и уничтожения схем. Ниже дан формат оператора создания схемы (упрощенно).

CREATE SCHEMA [name | AUTORIZATION creator-identifier]

Схема удаляется с помощью оператора, формат которого приводится ниже.

DROP SCHEMA name [ RESTRICT | CASCADE ]

При указании ключевого слова RESTRICT удаляемая схема должна быть пустой, иначе выпонение операции будет отменено. Осторожно! Если указывается CASCADE,то привыполнении оператора будут автоматически удалены все объекты, связанные с данной схемой.

Создание таблиц.

CREATE TABLE table_name

(colomn_name data_type [ NULL | NOT NULL [, ...] ] )

После задания общей структуры базы данных можно приступить к созданию таблиц пользователя. Они образуют содержательное наполнение базы данных. В результате выполнения данного оператора в БД создается пустая таблица пользователя.

Удаление таблиц.

DROP TABLE table_name [ DISTRICT | CASCADE ]

Создание индекса.

CREATE [UNIQUE] INDEX index_name

ON table_name (colomn [ ASC | DESC ] [ , ...])

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

Указанные в операторе столбцы составляют ключ индекса и должны быть перечислены в возрастающем или убывающем порядке.Индексы могут создаваться только для таблиц. Если есть ключевое слово UNIQUE, то уникальность ключа индекса автоматически поддерживается системой. Для каждого столбца в ключе индекса фиксируется порядок по возрастанию (ASC) или убыванию (DESC) значений.

Удаление индекса.

DROP INDEX index_name

Соседние файлы в папке УП_ОПТ2