Программирование >>  Sql: полное руководство 

1 ... 104 105 106 [ 107 ] 108 109 110 ... 264


rep таблицы orders, если данные о заказах часто извлекаются с использованием имени служащего, принявшего их.

cust таблицы orders, если данные о заказах часто извлекаются с использованием имени клиента, сделавшего их.

mfr и product таблицы orders, если данные о заказах часто извлекаются по названию заказанного товара.

В стандарте SQL2 ничего не говорится об индексах и о том, как их создавать. Они относятся к деталям реализации , выходящим за рамки ядра языка SQL. Тем не менее, индексы весьма важны для обеспечения требуемой производительности любой серьезной, корпоративной или промышленной, базы данных.

На практике в большинстве популярных СУБД (включая Oracle, SQL Ser/er, Informix, Sybase и DB2) для создания индекса используется та или иная форма инструкции create index (рис. 13.7). В инструкции указывается имя индекса и таблица, для которой он создается. Задается также индексируемый столбец (столбцы) и порядок его сортировки (по возрастанию или убыванию). Представленная на рис. 13.7 версия инструкции create index для СУБД DB2 - одна из наиболее простых. В ней можно использовать ключевое слово unique для указания того, что индексный столбец (столбцы) должен содержать уникальные значения в каждой строке таблицы.

- CREATE

UNIQUE-I

INDEX имя индекса ON имя таблицы

имя столбца

-ASC --DESC

Риа 13.7. Базовая синтаксическая диаграмма инструкции CREATE INDEX

Ниже дан пример инструкции create index, которая создает индекс для таблицы orders на основе столбцов mfr и product И содержит требование уникальности для комбинаций этих столбцов:

Создать индекс для таблицы orders.

CREATE UNIQUE INDEX ORD PROD IDX ON ORDERS (MFR, PRODUCT)

В большинстве СУБД инструкция create index содержит дополнительные, специфические для каждой СУБД предложения, в которых задаются местоположение индекса на диске и рабочие параметры: размер страниц индекса;-сколько свободного пространства (в процентах) должен резервировать индекс для дополнительных строк; тип создаваемого индекса; должна ли выполняться кластеризация (т.е. должны ли записи на диске физически располагаться в том же порядке, что и в самом индексе) и т.д.

Если вы создали для таблицы индекс, а позднее решили, что он не нужен, то можете удалить его из базы данных посредством инструкции drop index. Ниже приводится инструкция, которая удаляет индекс, созданный в предыдущем примере:

Удалить созданный ранее индекс.

DROP INDEX CRD PROD IDX



другие объекты базы данных

в SQL команды create, drop и alter образуют основу языка определения данных (DDL). Инструкции с этими командами используются во всех реляционных СУБД для управления таблицами, индексами и представлениями (последние рассматриваются в главе 14). В большинстве популярных СУБД эти команды служат также для образования дополнительных инструкций DDL, которые создают, удаляют и модифицируют другие объекты базы данных, имеющиеся в конкретной СУБД.

Например, Sybase была первой СУБД, в которой появились триггеры и хранимые процедуры, трактуемые как объекты реляционной базы данных наряду с таблицами, утверждениями, индексами и прочими структурами. Специально для работы с этими объектами в диалект языка SQL в СУБД Sybase были внедрены дополнительные инструкции create/drop trigger И create/drop procedure. По мере роста популярности концепций триггеров и хранимых процедур аналогичные инструкции стали появляться и в других СУБД.

Касательно новых инструкций DDL в различных СУБД используются следующие общие соглашения:

первой в инструкции должна стоять команда create/drop/alter;

второе слово должно определять тип объекта;

третье слово должно представлять собой имя объекта, подчиняющееся соглашениям об использовании имен в SQL.

В стандарте SQL2 поддерживаются такие же соглашения относительно создания, удаления и модификации всех объектов базы данных

Если не считать общие команды create/drop/alter, то эти инструкции являются нестандартными и зависят от конкретной СУБД. Тем не менее, они придают однообразие различным диалектам SQL. Если вы столкнетесь с новой реляционной СУБД и обнаружите, что в ней имеется такой объект, как BLOB (binary large object - большой двоичный объект), то вполне вероятно, что в этой СУБД имеются также инструкции create blob, drop blob и alter blob. В табл. 13.1 показано, как используются команды create, drop и alter в расширенных диалектах DDL популярных СУБД.

Таблица 13.1. Инсгрущии DDL в популярных СУБД

Инструкции DDL

В большинстве СУБД:

create/drop/alter table create/drop/alter view create/drop/alter index BDB2:

create/drop alias create/drop/alter bufferpool create/drop distinct type

create/drop function create/drop/alter nodegroup

Управляемый объект

таблица

представление

индекс

псевдоним таблицы или представления

коллекция буферов ввода-вывода

пользовательский вторичный тип данных (категория distinct)

пользовательская функция

группа разделов или узлов базы данных



Инструкции DDL

DROP PACKAGE

CREATE/DROP PROCEDURE

CREATE/DROP SCHEMA

CREATE/DROP/ALTER TABLESPACE

CREATE/DROP TRIGGER

В Informix:

CREATE/DROP CAST CREATE/DROP DATABASE CREATE/DROP DISTINCT TYPE

CREATE/DROP FUNCTION CREATE/DROP OPAQUE TYPE

CREATE/DROP OPCLASS

CREATE/DROP PROCEDURE CREATE/DROP ROLE CREATE/DROP ROUTINE CREATE/DROP ROW TYPE

CREATE SCHEMA CREATE/DROP SYNONYM CREATE/DROP TRIGGER В SQL Server:

CREATE/DROP/ALTER DATABASE CREATE/DROP DEFAULT CREATE/DROP/ALTER PROCEDURE CREATE/DROP RULE CREATE SCHEMA CREATE/DROP/ALTER TRIGGER В Oracle:

CREATE/DROP CLUSTER CREATE DATABASE CREATE/DROP DATABASE LINK CREATE/DROP DIRECTORY CREATE/DROP/ALTER FUNCTION CREATE/DROP LIBRARY

Управляемый объект

программный модуль доступа пользовательская хранимая процедура схема базы данных табличная область триггер

правило преобразования типов данных

именованная база данных Informix

пользовательский вторичный тип данных (категория DISTINCT)

пользовательская функция

пользовательский внешний тип данных (категория OPAQUE)

пользовательский метод доступа к дисковому хранилишу

пользовательская хранимая процедура

пользовательская роль в базе данных

пользовательская хранимая процедура

именованный тип данных на базе записи таблицы (объектное расширение)

схема базы данных

псевдоним таблицы или представления триггер

база данных

значение столбца по умолчанию

хранимая процедура

правило соблюдения целостности столбца

схема базы данных

триггер

табличный кластер

именованная база данных Oracle

канал связи с удаленной базой данных

каталог для хранения больших объектов

пользовательская функция

библиотека внешних функций, вызьгеае-мых посредством PL/SQL



1 ... 104 105 106 [ 107 ] 108 109 110 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика