
- •Язык запросов sql
- •Введение в sql(0-0)
- •Аннотация к лекции
- •Краткая история развития sql
- •Возможности языка
- •Основы sql
- •Типы данных sql
- •Литералы
- •Операторы и выражения
- •Именование объектов
- •Комментарии
- •Итоги лекции
- •Простейшие запросы (0-0)
- •Аннотация к лекции
- •О предложении select
- •Основные фразы – select и from
- •Фраза select
- •Синтаксис фразы select
- •Указание выводимых столбцов
- •Исключение повторяющихся строк
- •Использование вычисляемых выражений
- •Переопределение имен результирующих столбцов
- •Включение литералов в результат запроса
- •Вывод результатов в файл
- •Фраза from
- •Синтаксис фразы from
- •Синонимы таблиц
- •Запрос в качестве имени таблицы
- •Итоги лекции
- •Отбор строк по условию (0-0)
- •Аннотация к лекции
- •Простейшие условия
- •Операторы сравнения
- •Логические операторы
- •Использование выражений над столбцами
- •Специальные операторы
- •Проверка на принадлежность множеству
- •Проверка на принадлежность диапазону значений
- •Проверка на соответствие шаблону
- •Проверка на неопределенное значение
- •Итоги лекции
- •Многотабличные запросы (0-0)
- •Аннотация к лекции
- •Декартово произведение таблиц
- •Условие соединения
- •Соединение таблиц по равенству
- •Соединение таблиц по неравенству
- •Самосоединение таблицы
- •Внешнее соединение таблиц
- •Соединение с использованием фразы from
- •Итоги лекции
- •Использование функций (0)
- •Аннотация к лекции
- •Агрегатные функции
- •Однострочныефункции
- •Строковые функции
- •Числовые функции
- •Временные функции
- •Функции преобразования
- •Итогилекции(урока)
- •Группировка и сортировка (0)
- •Аннотация к лекции
- •Запросы с группировкой строк
- •Понятие группировки строк
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Использование выражений
- •Условиеотборагрупп
- •Сортировка строк
- •Сортировка по столбцу или выражению
- •Сортировка по нескольким столбцам или выражениям
- •Итоги лекции
- •Множественные операции над таблицами (0-0)
- •Аннотация к лекции
- •Множественные операции в стандарте sql
- •Объединение таблиц
- •Пересечение таблиц
- •Разность таблиц
- •Дополнительные аспекты использования множественных операций
- •Множественные операции и группировка
- •Множественные операции и сортировка
- •Итоги лекции
- •Определение таблиц и представлений (0-0)
- •Аннотация к лекции
- •Создание таблицы
- •Изменениетаблицы
- •Возможности изменения таблиц
- •Добавление столбца
- •Изменение определения столбца
- •Удаление столбца
- •Переименование таблицы
- •Удаление таблицы
- •Определение индексов
- •Представления
- •Итоги лекции
- •Манипулирование данными (0-0)
- •Аннотация к лекции
- •Добавление новых строк
- •Варианты добавления строк
- •Вставка отдельных строк
- •Использование запроса при вставке строк
- •Вставка значений по умолчанию
- •Обновление существующих данных
- •Удаление существующих строк
- •Импорт и экспорт данных
- •Итоги лекции
- •Определение ограничений целостности, ключей, задание прав доступа к данным (0-18)
- •Аннотация к лекции
- •Виды ограничений целостности
- •Ограничение на отсутствие значения
- •Ограничениеуникальности
- •Ограничение первичного ключа
- •Ограничение ссылочной целостности
- •Изменение ограничений целостности
- •Итоги лекции
- •Программирование бд (19)
Удаление столбца
С помощью предложения ALTERTABLEможно удалить один или несколько столбцов, если в них больше нет необходимости. Синтаксис этого вариантаALTERTABLEв стандартеSQLследующий:
ALTERTABLEимя_таблицыDROP
имя_столбца {CASCADE|RESTRICT}
Удаляемый столбец может использоваться в описаниях ограничений целостности (о них см. в одной из следующих лекций). Наличие фразы CASCADE указывает, что такие ограничения также должны быть удалены. Фраза RESTRICT запрещает удалять столбец до тех пор, пока не будут удалены все ссылающиеся на него ограничения.
Удаление столбца предполагает его физическое удаление из таблицы. При больших размерах таблиц эта процедура может оказаться довольно продолжительной. В этом случае некоторые СУБД предоставляют возможность выполнить этот процесс в два этапа. Сначала выполняется логическое удаление столбца, при котором он физически не удаляется из таблицы, но становится невидимым и недоступным для использования. Затем в более удобное время можно произвести его физическое удаление.
Переименование таблицы
Стандарт SQL не допускает изменения имени таблицы, но во многих СУБД такая возможность предусматривается. Например, в Oracle имя таблицы изменяется предложением ALTER TABLE, имеющим следующий синтаксис:
ALTER TABLE имя_таблицы RENAME TO новое_имя_таблицы;
Например, можно следующим образом переименовать таблицу FACULTY:
ALTER TABLE FACULTY RENAME TO NEWJACULTY;
Удаление таблицы
С течением времени структура базы данных изменяется. Могут появляться новые таблицы и удаляться существующие. Удаление таблицы подразумевает удаление ее описания и всех содержащихся строк. Удаление таблиц базы данных производится командой DROP TABLE, которая имеет следующий синтаксис:
DROP TABLE имя_таблицы {CASCADE | RESTRICT};
Фразы CASCADE и RESTRICT имеют тот же смысл, что и при удалении столбца. Если какой-нибудь из столбцов удаляемой таблицы используется для описания целостности в другой таблице, попытка удаления будет отклонена при наличии фразы RESTRICT. При использовании фразы CASCADE таблица удаляется вместе со всеми ограничениями, определенными в других таблицах и ссылающимися на столбцы удаляемой таблицы.
Например, для удаления таблицы LECTURE следует выполнить
следующую команду:
DROP TABLE LECTURE;
Определение индексов
Индекс– это специальная таблица, построенная по значениям заданного столбца или группы столбцов заданной таблицы. В ней размещается перечень уникальных значений указанного столбца таблицы со ссылками на те строки основной таблицы, где встречаются эти значения. Структура индекса напоминает предметный указатель книги.
Решение о том, использовать или не использовать какой-либо индекс при обработке некоторого конкретного запроса, принимается оптимизатором СУБД, который учитывает множество фактором – размер таблиц, тип используемых структур хранения данных, статистическое распределение данных в таблицах и индексах и т.д. Однако, чтобы оптимизатор смог использовать индексы, их нужно определить. Индексы используются для следующих целей:
поддержка фраз UNIQUE и PRIMARY KEY;
поддержка логической упорядоченности данных согласно значениям одного или нескольких столбцов;
оптимизация выполнения запросов.
На практике большинство СУБД предоставляют возможность создавать индекс. Формы описания индексов отличаются, но их суть в различных СУБД одна и та же. Для построения индекса в Oracle существует предложение CREATE INDEX, имеющее следующий синтаксис:
CREATE [UNIQUE] INDEX имя_индекса ON имя_таблицы (
имя_столбца [ASC | DESC][,
имя_столбца [ASC | DESC]...);
Если необходимость в ранее созданном индексе отпала, его можно удалить командой DROPINDEX, которая имеет следующий синтаксис:
DROPINDEXимя_индекса;
Удаление индекса не оказывает воздействия на содержимое столбцов.
При использовании индексов следует руководствоваться следующими правилами.
Для небольших таблиц индексы практически не приводят к повышению производительности.
Индексы существенно повышают производительность, когда столбцы содержат в основном неповторяющиеся данные.
Индексы существенно оптимизируют выполнение запросов, которые выдают небольшое количество строк.
Индексы повышают скорость поиска данных, однако замедляют процесс их обновления. Помните об этом, когда необходимо произвести одновременно обновление большого количества строк с индексами. Не индексируйте столбцы, которые регулярно подвергаются интенсивному обновлению.
Помните, что индексы занимают определенное место в базе данных.
Всегда индексируйте столбцы, которые используются для соединения таблиц. Это существенно увеличивает скорость соединения таблиц.
В больших таблицах поиск индексированных значений выполняется на порядок быстрее, чем поиск неиндексированных, а в очень больших таблицах – на два-три порядка.