Понятие запроса к базе данных

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

Запрос является инструкцией, с помощью которой SQL обращается к базе данных. Запрос состоит из одной или более логических частей, которые называются предложениями. Предложения начинаются ключевым словом и состоят из ключевых слов и аргументов. Ключевое слово – используемые в выражениях языка SQL слова, имеющие специальное значение (например, конкретные команды языка – CREATE, DROP, SELECT). Ключевые слова не могут быть использованы ни для каких других целей, например, в качестве имени объекта базы данных.

В языке SQL можно выделить следующие основные ключевые слова:

Операторы определения данных DDL

CREATE Создает структуры для хранения данных

ALTER Изменяет структуры данных или ограничения

DROP Удаляет структуры данных

TRUNCATE Очищает объекты, удаляя все записи и оставляя структуру неизменной

COMMENT Добавляет комментарии к объекту

RENAME Переименовывает объект

Операторы манипулирования данными DML

SELECT Выбирает данные из базы данных

INSERT Вставляет данные в базу данных

DELETE Удаляет данные из базы данных

UPDATE Изменяет данные в базе данных

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

COMMIT Завершает транзакцию

ROLLBACK Отменяет (откатывает) транзакцию

SAVEPOINT Сохраняет промежуточное состояние базы данных

Средства администрирования данных

GRANT Предоставить права

REVOKE Лишить прав

Программный SQL

DECLARE Определяет курсор (имя и связанный с ним запрос), соответствующий виртуальному набору данных

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

FETCH Считывает очередную строку из множества, определенного курсором

CLOSE Закрывает курсор и прекращает доступ к этому виртуальному набору данных

PREPARE Подготавливает оператор SQL к динамическому выполнению

EXECUTE Выполняет оператор SQL, ранее подготовленный к выполнению

Помимо ключевых слов в предложениях также используются аргументы. Аргументами предложений могут быть константы одного из поддерживаемых SQL типов данных, а также имена объектов базы данных.

SQL поддерживает следующие основные типы данных:

CHAR(n) или CHARACTER(n) Символьные строки постоянной длины n. Для значения этого типа всегда отводится n символов, даже если фактически оно короче, тогда недостающие символы автоматически заменяются пробелами

NUMERIC[(n,m)] Точные сила, n – общее число цифр в числе, m – число цифр справа от запятой (то есть в десятичной числа)

DECIMAL[(n,m)] или DEC[(n,m)] Точные сила, n – общее число цифр в числе, m – число цифр справа от запятой (то есть в десятичной числа)

INTEGER или INT Целые числа

SMALLINT Целые числа меньшего диапазона значений

FLOAT[(n)] Числа с плавающей запятой большой точности, n – число байт, отводимое для хранения одного числа, диапазон значений определяется конкретной реализацией

REAL Числа с плавающей запятой меньшей точности, чем FLOAT

DOUBLE PRECISION Числа с плавающей запятой большей точности, чем та, что определена в данной реализации для типа REAL

Типы данных языка SQL/89

Необходимо обратить внимание, что в стандарте SQL1 не определялось точно, что подразумевается под типами INT и SMALLINT, а было указано только соотношение между ними. В большинстве реализаций тип данных INTEGER соответствует целым значениям, хранимым в 4 байтах, а SMALLINT – целым значениям, хранимым в 2 байтах. Выбор того или иного типа определяется, естественно, размером числа. Аналогично, типы REAL и DOUBLE PRECISION не указывались точно, а лишь связывались между собой.

VARCHAR(n) Строки символов переменной длины

NCHAR(n) Строки локализованных символов постоянной длины

NCHAR VARYING(n) Строки локализованных символов переменной длины

BIT(n) Битовая последовательность постоянной длины

BIT VARYING(n) Битовая последовательность переменной длины

DATE Календарная дата

TIMESTAMP(точность) Дата и время

INTERVAL Временной интервал

Типы данных, добавленные в языке SQL/92

Многие производители коммерческих СУБД поддерживают и дополнительные типы данных, не включенные в спецификацию SQL, например, тип данных для представления неструктурированного текста большого объема, аналог MEMO настольных СУБД. Однако, следует отметить, что специфика реализации даже отдельных основных типов данных серьезным образом влияет на результаты выполнения запросов к базе данных. Особенно это касается типов данных, связанных со временем и датой, - DATE и TIMESTAMP. Одна и та же дата, например 12 марта 2007 года, может быть записана в MS SQL Server как March 12, 2007, а в ORACLE – 12-MAR-07, что может отрицательно сказаться на переносимости приложения с одной базы данных на другую.

В свою очередь объекты базы данных также должны называться согласно определенным правилам:

- должны начинаться с буквы;

- могут быть не длиннее 30 символов;

- могут содержать только символы A-Z, a-z, 0-9, _ (подчеркивание), $ и #;

- не могут совпадать с именем другого объекта;

- не могут совпадать с зарезервированными словами сервера базы данных.

Как и многие другие языки программирования, SQL допускает использование арифметических операторов, операторов сравнения и логических операторов. Список арифметических операторов ограничен пятью:

+ Сложение

- Вычитание

* Умножение

/ Деление

|| Конкатенация (сложение строк)

Все эти операции могут быть использованы в любом предложении команды SQL, за исключением FROM. Операторы сравнения условно можно разделить на две группы: обычные и операторы сравнения SQL. Обычные операторы сравнения полностью аналогичны операторам сравнения любых других языков программирования:

= Равно

<> Не равно

> Больше

< Меньше

>= Больше или равно

<= Меньше или равно

Однако, есть в языке SQL и четыре специальных оператор сравнения SQL:

BETWEEN … AND … Между двумя значениями (включительно)

IN (список) Совпадает с одним из значений в списке

LIKE Соответствует символьному шаблону

IS NULL Является неопределенным значением

Эти операторы удобны для работы с множествами кортежей. Их отрицания строятся специальным образом:

NOT BETWEEN … AND … НЕ между двумя значениями (включительно)

NOT IN (список) НЕ совпадает с одним из значений в списке

NOT LIKE НЕ соответствует символьному шаблону

IS NOT NULL НЕ является неопределенным значением

Список логических операторов языка SQL ограничивается тремя стандартными операторами:

AND Логическое И

IN (список) Логическое ИЛИ

LIKE Логическое НЕ

Комментарии

Все комментарии
2комментарий

Ян ОПИ(Э) 07 27 октября, 2009 в 13:16:47

а где операторы запросов? непорядок ... так же в SQL моно использовать оператор сравнения "IF" в ОС Windows работает )

Ян ОПИ(Э) 07 27 октября, 2009 в 13:13:51

Точные сила :D имеется ввиду числа?:)

Добавить комментарий