- •Введение в язык sql92.
- •О нотации грамматики языка sql.
- •Оператор select.
- •Выбор строк (фраза where).
- •Сортировка результата (фраза order by).
- •Стандартные обобщающие функции языка sql.
- •Группировка результата (фраза group by).
- •Примеры простой группировки.
- •Подзапросы и другие операции.
- •Многотабличные запросы.
- •Операции union, intersect, except.
- •Операции обновления базы данных.
- •Insert into table_name [ ( colomn_list ) ]
- •Values ( data_value_list )
- •Определение данных в языке sql.
- •Типы данных языка isq sql92.
- •Integer (можно сократить до int)
- •Скалярные операторы языка sql.
- •Создание баз данных.
- •Представления (виды).
Скалярные операторы языка 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 |
Функция возвращает значение указанного поля типа даты, времени или интервала. |
Создание баз данных.
“Не прибавляй огонь к огню...” ПЛАТОН 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