SQL.pptx
- Количество слайдов: 17
Структурированный язык запросов SQL Дисциплина «Базы данных» специальность 230105 Программное обеспечение вычислительной техники и автоматизированных систем
Назначение и особенности встроенного языка SQL Язык SQL предназначен для организации доступа к базам данных. При этом предполагается, что доступ к БД может быть осуществлен в двух режимах: в интерактивном и в режиме выполнения прикладных программ (приложений). Благодаря этой двойственности SQL обладает следующими положительными качествами: Ø все возможности интерактивного языка запросов доступны в прикладном программировании; Ø в интерактивном режиме можно отладить основные алгоритмы обработки информации, которые в дальнейшем могут быть готовыми вставлены в работающее приложение.
Процесс выполнения операторов SQL может быть условно разделен на пять этапов (рис. 1): SELECT… FROM… WERE… 1 этап Синтаксический анализ операторов запроса 2 этап Проверка параметров оператора запросов 3 этап Оптимизация запросов 4 этап запроса Системный каталог БД Генерация плана выполнения План выполнения запроса 5 этап Выполнение запроса Рис. 1 Последовательность выполнения операторов SQL
На первом этапе выполняется синтаксический анализ оператора SQL. На этом этапе проверяется корректность записи операторов SQL в соответствии с правилами синтаксиса. На втором этапе проверяется корректность параметров оператора SQL: имен отношений, имен полей данных, привилегий пользователя по работе с указанными объектами. На этом этапе отыскиваются семантические ошибки. На третьем этапе проводится оптимизация запроса. СУБД проводит разделение целостного запроса на ряд минимальных операций и оптимизирует последовательность их выполнения с точки зрения временных затрат на выполнения запроса. На этом этапе строиться несколько планов выполнения запроса и выбирается из них один – оптимальный для данного состояния БД. На четвертом этапе СУБД генерирует двоичную версию оптимального плана опроса, подготовленного на третьем этапе. Двоичный план выполнения СУБД фактически является эквивалентом объектного кода программы. На пятом этапе СУБД реализует разработанный план, тем самым выполняя запрос. Этапы выполнения операторов SQL одни и те же, как в интерактивном режиме, так и внутри приложения.
Команд SQL В ANSI SQL имеется шесть основных типов команд: Ø команды языка определения данных (data definition language — DDL) позво ляютсоздавать новые таблицы в базе данных, добавлять индексы и т. д. ; ос новными командами языка определения данных являются: CREATE TABLE создает новую таблицу БД ALTER TABLE изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы DROP TABLE удаляет таблицу из БД CREATE INDEX создает индекс для некоторой таблицы для быстрого доступа по атрибутам, входящим в индекс DROP INDEX удаляет ранее созданный индекс ALTER INDEX модифицировать индекс CREATE VIEW создает виртуальную таблицу, соответствующую некоторому SQL запросу ALTER VIEW изменяет ранее созданное представление DROP VIEW удаляет ранее созданное представление
Ø команды языка обработки данных (data manipulation language — DML) используются для добавления, корректировки и удаления строк в таблицах и включают: INSERT вставить данные в таблицу UPDATE обновить данные DELETE удалить данные Ø команда языка запросов данных (data query language — DQL) (единственная команда) используется для получения данных из таблиц и определения фор мы представления этих данных: SELECT выполнить запрос из таблицы базы Ø команды языка управления данными (data control language — DCL) определя ют доступ отдельных пользователей и групп пользователей к объектам базы данных посредством полномочий, предоставляемых и отменяемых командами: GRANT предоставить привилегии REVOKE отменить привилегии
Ø команды языка обработки транзакций (transaction processing language — TPL) обеспечивают обновление всех строк, используемых в операторе DML, и включают следующие команды: BEGIN TRANSACTION начать транзакцию COMIT TRANSACTION завершить транзакцию SAVE TRANSACTION создать точку сохранения внутри транзакции Ø команды языка управления курсором (cursor control language — CCL) выполняют операции с отдельными строками одной или нескольких таблиц и включают: DECLARE CURSOR, FETCH INTO UPDATE WHERE CURRENT
Типы команд В языке SQL признаны пять предопределенных общих типов, внутри которых могут быть подтипы: q строковый (символьный): Ø CHARACTER ( или CHAR); Ø CHARACTER VARYNG (или VARCYAR); Ø CHARACTER LARGE OBJECT (или CLOB)
qчисловой: Ø точные числовые типы: 1. INTEGER; 2. SMALLINT; 3. BIGINT; 4. NUMERIC; 5. DECIMAL Ø приблизительные числовые типы: 1. 2. 3. REAL; DOUBLE PRECISION; FLOAT
q логический (булевский): Ø BOOLEAN q даты – времени: Ø DATE; Ø TIME WITHOUT TIME ZONE; Ø TIME WITH TIME ZONE; Ø TIMESTAMP WITHOUT TIME ZONE; Ø TIMESTAMP WITH TIME ZONE q интервальный. Кроме того, существуют особые типы: ROW – запись ARRAY массив MULTISET мультимножество
Строки Строковые данные (последовательности символов) имеют три главных строковых типа. Для столбца таблицы можно указать тип CHARACTER(n) или CHAR(n) (строка фиксированной длинны), где n – максимальное количество символов, содержащихся в строке. Если (n) не указано, то срока состоит из одного символа. Если в столбец типа CHARACTER (n) вводится m<n символов, то оставшиеся позиции закрываются пробелами. Тип данных CHARACTER VARYNG (n)или VARCYAR(n) (строка переменной длины) применяется когда вводимые данные имеют различную длину и нежелательно дополнять их пробелами. При этом сохраняется только то количество символов, которое ввел пользователь. В этом случае указание максимального количества символов обязательно (в отличие от CHARACTER) Данные типов CHARACTER и CHARACTER VARYNG могут участвовать в одних и тех же строковых операциях.
Тип данных CHARACTER LARGE OBJECT (CLOB – большой символьный объект) используется для представления очень больших символьных строк. В некоторых СУБД данный тип называется MEMO, а в других – TEXT. С данными этого типа можно выполнять не все операции, предусмотренные для первых двух типов. Данный тип нельзя использовать в операциях сравнения, за исключением равенства и неравенства. Кроме того, столбцы этого типа могут быть первичными и внешними ключами, или могут быть объявлены как имеющие уникальные значения. При создании таблиц с помощью оператора CREATE и объявлении столбцов типа CLOB нельзя использовать ключевые слова PRIMARY KEY, FOREIGN KEY и UNIQUE
Пример 1. создать таблицу с обычным символьным столбцом и столбцом типа CLOB , значения которого могут содержать 10 000 символов: CREATE TABLE my. Table ( FIELD 1 CHARACTER (60), FIELD 2 CLOB (10 000) ); Здесь оператор CREATE TABLE создает таблицу с именем my. Table, которая состоит из двух столбцов с именами FIELD 1 и FIELD 2, типы столбцов указаны рядом с их именами. Пример 2. Создать таблицу, в которой столбец FIELD 1 строковый с набором символов, принятым по умолчанию, столбец FIELD 2 строковый с греческим набором символов: CREATE TABLE my. Table ( FIELD 1 CHARACTER (60), FIELD 2 CHARACTER VARYING (80) CHARACTER SET GREEK );
Значения строкового типа в SQL – выражениях заключаются в одинарные кавычки. Например : `Иванович`, `345 рублей ` Пустая строка не содержит ни одного символа и имеет вид : ` ` Иногда бывает, что строковый столбец в таблице содержит только числа т. е. строки, содержащие цифры, знаки числа и разделительные точки. Тогда, чтобы использовать такие данные в операциях с числами, необходимо привести данные одного типа к другому типу с помощью функции CAST.
Числа К точным числовым видам относятся: INTEGER – целое (без дробной части) число. Количество разрядов (точность) зависит от реализации SQL. В некоторых реализациях числа этого типа лежат в диапазоне от 2147483648 до 2147483647 (четырехбайтовое целое число); SMALLINT – малое целое число. Количество разрядов зависит от реализации SQL, но не больше количества разрядов INTEGER в этой же реализации. В некоторых реализация числа этого типа лежат в диапазоне от – 32 768 до 32 767 (двухбайтовое целое число); BIGINT – большое целое число. Количество разрядов зависит от реализации SQL и превышает количество разрядов числа типа INTEGER ;
NUMERIC (х, у) – число, в котором всего x разрядов (точность), из которых у разрядов (масштаб)отводится для дробной части. Если у не указано (NUMERIC (х)), то для дробной части отводится количество разрядов, установленной в системе по умолчанию. Если не указаны ни х, ни у (NUMERIC ), то применяются оба эти величины, установленные по умолчанию. Пример: NUMERIC (6, 2), то максимальное значение числа равно 9999. 99
К приблизительным типам относятся: REAL – вещественное число одинарной точности с плавающей разделительной точкой (эта точка «плавает» , появляясь в различных местах числа). Точность числа зависит от реализации SQL и оборудования. Пример: 5. 25, 5. 2573
SQL.pptx