Смекни!
smekni.com

Оптимизация запросов SQL (стр. 3 из 3)

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

Если необходимо вывести все столбцы таблицы, не обязательно писать все имена столбцов, звёздочка (*) может применяться для вывода полного списка столбцов следующим образом: SELECT * FROM Sales;

INSERT INTO имя таблицы

[( имя столбца.,..)] выражение запроса

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

| {DEFAULT VALUES};

Данный оператор вносит одну или более строк в таблицу, имя которой указано в операторе. Вставляемые строки являются результатом исполнения запроса (выражение для которого определено в операторе) или представляют собой конструкторы значений строк из списка конструкторов значений таблицы. Эти строки должны относиться к тому же типу данных, что и столбцы, в которые они вносятся. Если в один из столбцов нельзя записать значение по умолчанию (например, когда установлено ограничение NOT NULL, но не определено никаких других значений), то выполнение оператора INSERT будет прервано. Если же не будет указан список имен столбцов, то во все столбцы таблицы должны быть занесены значения, предусмотренные в операторе INSERT. Количество и порядок имен столбцов в списке должны соответствовать количеству и порядку имен столбцов, полученных в результате запроса.[6]

В качестве таблицы может выступать представление. В этом случае представление должно быть обновляемым, а новые строки вставляются в базовую таблицу, содержащую данные, на основе которых построено представление (так называемую основную "таблицу-лист'). Для представления может быть определено предложение WITH CHECK OPTION, которое будет ограничивать заносимые значения. В действительности может быть несколько уровней представлений "на пути" к базовой таблице, и если они помечены как WITH CASCADED CHECK OPTION, то оператор INSERT может быть отвергнут при нарушении условий какого-то из них

Если текущий тип транзакции (TRANSACTION MODE) определен как READ ONLY (только чтение), таблица должна быть временной, иначе оператор INSERT будет отвергнут.

Заносимые в таблицу течения можно определять непосредственно в конструкторе значений таблицы (в качестве элементов которого могут использоваться переменные или параметры, передаваемые приложениями) или получать в результате запроса к уже существующей в базе данных информации.

Пример:

Данный оператор заносит строку в таблицу people, используя конструктор значений таблицы.

INSERT INTO people (ID_num. Iname, fname, city)

VALUES (1023, 'Blanco', Mercedes', 'Barcelona')

UPDATE [DatabaseName1!]TableName1
SET Column_Name1 = eExpression1
[, Column_Name2 = eExpression2 ...]
WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]

Где UPDATE задает таблицу, в которой необходимо обновить записи.

Аргумент DatabaseName1! задает имя содержащей таблицу базы данных, отличной от текущей. Это имя необходимо указывать, когда база данных, которой принадлежит таблица, не является текущей. Восклицательный знак (!) служит разделителем между именем базы и именем таблицы базы данных.

SET Column_Name1 = eExpression1
[, Column_Name2 = eExpression2

Задает обновляемые столбцы и их новые значения. Если предложение WHERE опущено, каждая строка одного столбца обновляется одним и тем же значением. WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]

Определяет, какие записи следует обновлять. Условие FilterCondition задает критерий, которому должны удовлетворять обновляемые записи. Можно включить сколько угодно условий фильтрования, объединяя их операторами AND и OR. Можно также использовать оператор NOT, инвертирующий значение логического выражения, и функцию EMPTY(), проверяющую, является ли поле пустым.[7]

Команда UPDATE в SQL запросах может обновлять записи только в одной таблице.

DELETE FROM [DatabaseName!]TableName

[WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]

FROM [DatabaseName!]TableName задает таблицу, в которой записи помечаются на удаление. Аргумент DatabaseName! задает имя содержащей таблицу базы данных, отличной от текущей. Это имя необходимо задавать, когда база данных, содержащая таблицу, не является текущей.

WHERE FilterCondition1 [AND | OR FilterCondition2 ...] Указывает, что команда помечает на удаление только определенные записи. Условие FilterCondition устанавливает критерий, которому должны удовлетворять записи, помечаемые на удаление. Можно задать сколько угодно условий фильтрования, объединяя их с помощью операторов AND и OR. Можно также пользоваться оператором NOT, инвертирующим значение логического выражения, и функцией EMPTY(), проверяющей, является ли поле пустым.

Записи, помечаемые на удаление, физически не удаляются из таблицы до тех пор, пока не будет выдана команда PACK. Записи, помеченные на удаление, можно возвратить (снять пометку на удаление) командой RECALL. Если установка SET DELETED имеет значение ON, записи, помеченные на удаление, игнорируются всеми командами, использующими опцию диапазона.

3.1. Запросы в языке SQL

Запрос это команда, которую пользователь даёт программе базы данных и которая сообщает ей, что нужно вывести определённую информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, которым пользуется пользователь, хотя в большинстве случаев её можно также послать на принтер, сохранить в файле (как объект в памяти компьютера) или предоставить как вводную информацию для другой команды или процесса.

Запросы обычно рассматриваются как часть языка DML. Эти запросы не меняют информацию в таблицах, а просто показывает её пользователю. Любой запрос SQL имеет в своём составе одну команду. Структура этой команды обманчиво проста, её можно расширить так, чтобы выполнить сложные оценки и обработку данных. Эта команда называется SELECT (ВЫБРАТЬ).[8]

Заключение

Быстрое развитие потребностей применений БД выдвигает новые требования к СУБД:

- поддержка широкого спектра типов представляемых данных и операций над ними (включая фактографические, документальные, картинно-графические данные) ;

- естественные и эффективные представления в БД разнообразных отношений между объектами предметных областей (например, пространственно-временных с обеспечением визуализации данных);

- поддержка непротиворечивости данных и реализация дедуктивных БД;

- обеспечение целостности БД в широком диапазоне разнообразных предметных областей и операционных обстановок;

- управление распределенными БД, интеграция неоднородных баз данных;

- существенное повышение надежности функционирования БД.

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

- фон-неймановская архитектура ЭВМ неадекватна требованиям СУБД, в частности реализации поиска, обновления, защиты данных, обработки транзактов только программным способом неэффективны как по производительности, так и по стоимости;

- многоуровневое и сложное программное обеспечение СУБД снижает эффективность и надежность функционирования БД;

- универсальная ЭВМ оказывается перегруженной функциями управлениями базами данных, что снижает эффективность функционирования собственно прикладных систем;[9]

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

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

- централизация и интеграция данных в сетях персональных и профессиональных ЭВМ нереализуема с приемлемой стоимостью без включения в состав сетей специализированных ЭВМ для поддержки функции СУБД.

Эти соображения приводят к мысли о необходимости создания специализированных автономных информационных систем, ориентированных исключительно на реализацию функций СУБД.[10]

Глоссарий

№ п/п

Понятие

Определение

1) База данных поименованная, целостная, единая система данных, организованная по определенным правилам, которые предусматривают общие принципы описания, хранения и обработки данных
2) Система управления базами данных (СУБД) специальный комплекс программ, осуществляющий централизованное управление базой данных
3) SQL (Structured Query Language— «язык структурированных запросов») универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных
4) Данные последовательность элементарных символов,цифр или букв, являющихся значением некоторого атрибута
5) Файл Именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные
6) Информация Любые сведения о каком-либо событии, процессе и т.п., являющиеся объектом некоторых операций: восприятия, передачи, преобразования, хранения или использования
7) Реляционная база данных Набор нормализованных отношений
8) Архитектура фон Неймана Подразумевает физическое отделение процессорного модуля от устройств хранения программ и данных
9) Транзакция группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций
10) Informix семейство систем управления реляционными базами данных (СУБД), выпускаемых компанией IBM. Informix позиционируется как флагман среди СУБД IBM, предназначенный для онлайновой обработки транзакций (OLTP), а также как СУБД для интегрированных решений

Список использованных источников

1) Базиян, Менахем и др. Использование Visual FoxPro 6. Специальное издание: Пер. с англ – М.: Вильямс, 2001 – 928 с.
2) Глушаков С.В., Ломотько. Базы данных. – М.: АСТ, 2001.- 504 с.
3) Каратыгин С.А., Тихонов А.Ф., Тихонова Л.Н. Visual FoxPro «К вершинам мастерства» - М.: ЗАО «Издательство БИНОМ», 1999. 1462 с.
4) Кириллов В.В. Структурированный язык запросов SQL. – СПб.: ИТМО, 1994. 80 с.
5) Малыхина М.П. Базы данных: основы, проектирование, использование.- СПб.: БХВ - Петербург, 2006. 512 с.
6) Селько Дж. Программирование на SQL для профессионалов. –М.: Лори, 2004. 424 с
7) Ф.Фаронов. «Программирование баз данных в Delphi». – СПб.: «Питер». 2004. 457 с.
8) Федоров А., Елманова Н. Базы данных для всех. – М.: Компьютер-пресс, 2001. 256 с.
9) Хомоненко А. Базы данных: Учеб. для вузов. – 2-е изд. – СПб., 2000. 672 с.
10) Марков, А. С. Базы данных: Введение в теорию и методологию [Текст]/А.С.Марков, К. Ю. Лисовский. – М. : Финансы и статистика, 2006. 512 с.

Приложения

А

[1] Малыхина М.П. Базы данных: основы, проектирование, использование.- СПб.: БХВ - Петербург, 2006. - С.212

[2] Глушаков С.В., Ломотько. Базы данных. – М.: АСТ, 2001. - С.315

[3] Базиян, Менахем и др. Использование Visual FoxPro 6. Специальное издание: Пер. с англ – М.: Вильямс, 2001 - С.113

[4] Каратыгин С.А., Тихонов А.Ф., Тихонова Л.Н. Visual FoxPro «К вершинам мастерства» - М.: ЗАО «Издательство БИНОМ», 1999. - С.547

[5] Кириллов В.В. Структурированный язык запросов SQL. – СПб.: ИТМО, 1994. - С.35

[6] Селько Дж. Программирование на SQL для профессионалов. –М.: Лори, 2004. - С.129

[7] Ф.Фаронов. «Программирование баз данных в Delphi». – СПб.: «Питер». 2004. – С. 324

[8] Федоров А., Елманова Н. Базы данных для всех. – М.: Компьютер-пресс, 2001. - С.122

[9] Хомоненко А. Базы данных: Учеб. для вузов. – 2-е изд. – СПб., 2000. - С.354

[10] Марков, А. С. Базы данных: Введение в теорию и методологию [Текст]/А.С.Марков, К. Ю. Лисовский. – М. : Финансы и статистика, 2006 - С.298