Язык структурированных запросов ( SQL ) — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Язык структурированных запросов ( SQL )

2019-05-27 422
Язык структурированных запросов ( SQL ) 0.00 из 5.00 0 оценок
Заказать работу

ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ (SQL)

Язык SQL (Structured Query Language – язык структурированных запросов) представляет собой наиболее распространенный язык управления базами данных клиент/сервер. Он используется в реляционных СУБД в качестве стандартного средства доступа к данным. Основное достоинство SQL заключается в том, что он унифицирован: стандартный набор инструкций можно использовать в любой СУБД, которая совместима с SQL.

SQL является языком реляционных баз данных, а не языком системного программирования. SQL – язык, ориентированный на работу с множествами. Таким образом, ANSI SQL не включает ни средств управления выполнением программы (ветвлений и циклов), ни средств для создания форм или отчетов.

ANSI SQL включает набор стандартных команд, сгруппированных по шести задачам:

 

Описание данных

Выполнение запросов

Манипулирование данными

Управление курсором

Управление транзакциями

Администрирование

 

Внимание!

В базах данных курсором называется результирующее множество записей, а также указатель на конкретную запись в этом множестве. Не следует путать с точкой вставки, которая появляется при редактировании текста.

  

В 1989 г. в исходный стандарт ANSI были добавлены инструкции для обеспечения целостности данных.

 

Существует три способа реализации SQL: непосредственный вызов, язык модулей и встроенный SQL. При непосредственном вызове инструкции SQL передаются в СУРБД, которая создает требуемую таблицу и выводит ее. Наиболее распространенным методом реализации является встроенный SQL: инструкции SQL генерируются системой управления или включаются как текст в команды языка этой системы.

 

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

 

Access SQL предназначен для создания запросов, а не для создания или модификации таблиц, поэтому в Access SQL не входят многие из примерно 100 инструкций языка ANSI SQL. Большая часть инструкций, исключенных из Access SQL, реализуется с помощью выражений, включающих операторы, встроенные функции и функции, определенные пользователем с помощью Access VBA. Другие операции, выполняемые инструкциями ANSI SQL, можно выполнить, используя команды меню или окно базы данных.

 

SQL-2008 – самый полный вариант стандарта, в котором учтены многие решения, уже реализованные разработчиками СУБД и ставшие стандартами de-facto.

Классификация команд SQL

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

Команды DQL (языка запросов) предназначены для извлечения данных из таблиц и описания внешнего вида полученных данных. Основной инструкцией данной категории является инструкция SELECT. Команды DQL часто причисляют к командам категории DML.

Команды DML (языка обработки данных) включают инструкции INSERT и DELETE, которые позволяют добавить и удалить записи, а также инструкцию UPDATE, предназначенную для обновления значения требуемых полей.

Команды TPL (языка обработки транзакций) включают инструкции BEGIN TRANSACTION, COMMIT [WORK] и ROLLBACK [WORK], позволяющие объединить команды DML в группы, которые называются транзакциями. Если одна из команд DML, входящая в транзакцию, не может быть выполнена, то отменяются все предшествующие ей операции DML той же транзакции (это называется откат транзакции).

Команды DDL (языка определения данных) включают инструкции CREATE TABLE и CREATE VIEW, которые определяют внешний вид таблиц. Команды DDL также используются для изменения таблиц, создания и удаления индексов. Инструкции, обеспечивающие целостность данных, используются совместно с инструкциями DDL.

Команды CCL (языка управления курсором) позволяют выбрать для обработки одну строку результирующего множества запроса. Инструкции управления курсором, например, UPDATE WHERE CURENT, реализованы ядром базы данных Jet, а потому не рассматриваются.

Команды DCL (языка управления данными), например, инструкции GRANT и REVOKE, выполняют присваивание прав доступа к базе данных, подмножеству таблиц в базе данных или к конкретным командам SQL. Access SQL не поддерживает DCL: для защиты данных следует использовать средства самого Access.

 

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

Инструкции, например, SELECT, позволяют выполнить некоторую операцию.

Инструкция/строка SQL - выражение, которое определяет команды на языке SQL (Structured Query Language), такие как SELECT, UPDATE или DELETE, и может включать такие предложения как WHERE и ORDER BY. Строки и инструкции на языке SQL обычно используются в запросах, объектах Recordset и статистических функциях, но также могут применяться для создания или изменения структуры базы данных.

Предложения, например, WHERE, определяют диапазон значений поля, входящего в запрос.

Операторы, например, =, < или >, используются для сравнения значений и создания соединений, если операция объединения таблиц JOIN не используется.

Статистические функции по подмножеству, например, MIN (), возвращают одно значение для множества параметров.

Остальные ключевые слова модифицируют операцию или определяют поведение курсора при выборе требуемых строк запросов.


Синтаксис SQL

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

Идентификаторы языка SQL предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений, столбцов и других объектов базы данных. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов. Стандарт SQL задает набор символов, который используется по умолчанию, – он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). На формат идентификатора накладываются следующие ограничения:

  • идентификатор может иметь длину до 128 символов;
  • идентификатор должен начинаться с буквы;
  • идентификатор не может содержать пробелы.

Большинство компонентов языка не чувствительны к регистру. Поскольку у языка SQL свободный формат, отдельные SQL-операторы и их последовательности будут иметь более читаемый вид при использовании отступов и выравнивания.

Язык, в терминах которого дается описание языка SQL, называется метаязыком. При построении синтаксической диаграммы (дерева) главным образом использу­ются условные обозначения, известные как стандартные формы Бэкуса-Наура (BNF), но, кроме того, введены некие дополнения, способствующие более глубокому пониманию смысла операций. Ниже приведен полный список обозначений:

 

  • Символ::= означает равенство по определению. Используется для пояснения элементов синтаксической диаграммы оператора.
  • Ключевые слова записываются прописными буквами. Они зарезервированы для обозначения и составляют часть оператора.
  • Метка-заполнитель конкретных значений элементов схемы и переменных (например, имя домена в операторе CREATE DOMAIN) записывается курсивом. Метки-заполнители указывают тип собственного значения, который должен использоваться в реальном SQL-операторе; они не являются частью оператора и не несут никакой смысловой нагрузки. Соглашения о метках не относятся к стандарту BNF.
  • Необязательные элементы оператора заключены в квадратные скобки "[ ]".
  • Вертикальная черта "|" указывает на то, что все предшествующие ей элементы являются необязательными и любой из них может быть заменен на другой, принадлежащий списку после этой черты.

· Фигурные скобки "{ }" указывают, что все находящееся внутри них является единым целым при использовании других специальных символов (например, вертикальной черты или круглых скобок).

· Многоточие "..." (точнее три точки) означает, что предшествующая часть оператора может быть повторена любое число раз.

  • Многоточие, внутри которого есть запятая ".,.." (точнее, точка, запятая, две точки) указывает, что предшествующая часть оператора, состоящая из нескольких элементов, разделенных запятыми, может иметь произвольное число повторений. Запятую нельзя ставить после последнего элемента. Замечание: данное соглашение не входит в стандарт BNF, а используется в качестве дополнения, обеспечивающего более точное представление структуры SQL-оператора.

 

Типы данных

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице Типы данных.

Типы данных

Тип данных Объявления Символьный CHAR | VARCHAR Битовый BIT | BIT VARYING Точные числа NUMERIC | DECIMAL | INTEGER | SMALLINT Округленные числа FLOAT | REAL | DOUBLE PRECISSION Дата/время DATE | TIME | TIMESTAMP Интервал INTERVAL

Символьные данные

Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

<символьный_тип>::={ CHARACTER [ VARYING][длина] | [CHAR | VARCHAR][длина]}

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

Битовые данные

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

<битовый_тип>::=BIT [VARYING][длина]

Точные числа

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

<фиксированный_тип>::={NUMERIC[точность[,масштаб]|{DECIMAL|DEC}  [точность[, масштаб]| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT – для хранения небольших положительных или отрицательных целых чисел; в этом случае расход внешней памяти существенно сокращается.

 

Округленные числа

Тип округленных чисел применяется для описания данных, которые нельзя точно представить в компьютере, в частности действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), например: 10Е3, +5.2Е6, -0.2Е-4. Для определения данных вещественного типа используется формат:

<вещественный_тип>::={ FLOAT [точность]| REAL |  DOUBLE PRECISSION}

Параметр точность задает количество значащих цифр мантиссы. Точность типов REAL и DOUBLE PRECISSION зависит от конкретной реализации.

 

Дата и время

Тип данных «дата/время» используется для определения моментов времени с некоторой установленной точностью. Стандарт SQL поддерживает следующий формат:

<тип_даты/времени>::={DATE | TIME[точность][WITH TIME ZONE]| TIMESTAMP[точность][WITH TIME ZONE]}

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данных TIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP – для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6 (т.е. отметки времени сохраняются с точностью до миллисекунд). Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE и HOUR TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).

Данные типа INTERVAL используются для представления периодов времени.

Синтаксис оператора SELECT

SELECT Поле1, Поле2, …, ПолеN

FROM Таблица;

Например,

SELECT Фамилия, Имя, Отчество, Группа

FROM Студенты;

 

Если хотим вывести все поля нашей таблицы, то

SELECT *

FROM Студенты;

 

Если название поля содержит пробелы, оно заключается в квадратные скобки:

SELECT Фамилия, Имя, Отчество, [Дата рождения]

FROM Студенты;

 

В операторе SELECT любому полю можно задать псевдоним (для удобства восприятия результатов запроса). Например,

SELECT [ Наименование товара] AS Товар,

[Стандартная стоимость] AS Цена

FROM Товары;

 

Синтаксис предложения WHERE

SELECT Поле1, Поле2, …, ПолеN

FROM Таблица

WHERE Условие1 AND / OR Условие2 …;

 

Группировка результатов

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

В языке SQL для осуществления операции группировки в оператор SELECT включается фраза GROUP BY. Запрос, в котором присутствует фраза GROUP BY, называется группирующим запросом, а столбцы, перечисленные в этой фразе, называются группирующими столбцами.

Вложенные запросы

Стандарт языка SQL позволяет в тело одного оператора SELECT внедрять другой оператор SELECT. Если внутренний оператор запроса помещен в предложения WHERE и HAVING внешнего оператора SELECT, то создается ситуация вложенных запросов (подзапросов).

Многотабличные запросы

При работе с базами данных потребности пользователей не ограничиваются только реализацией простых запросов данных из одной таблицы. Во многих случаях для получения ответа на запрос необходимо объединить информацию из нескольких исходных таблиц. Для того чтобы осуществить такое объединение в результирующей таблице, необходимо выполнить операцию соединения, при которой объединение информации из двух таблиц происходит посредством образования пар связанных строк, выбранных из каждой таблицы. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою и в ряде других ситуаций.

Если в операторе SELECT указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Самый простой запрос SELECT такого рода без необязательных частей выглядит следующим образом:

SELECT *

FROM rl, r2;

и соответствует декартову произведению таблиц r1 и r2.

Выражение

SELECT rl.A, r2.B

FROM rl, r2;

соответствует проекции декартова произведения двух таблиц на два столбца А из таблицы r1 и В из таблицы r2.

 


INSERT INTO S2

VALUES (' Сидоров П. П.', '02- КТ -21');

Между списком имен столбцов и списком значений должно быть следующее соответствие:

• количество элементов в обоих списках должно быть одинаковым;

• между положением элементов в списках должно быть строгое соответствие, которое определяется слева направо: первый элемент одного списка соответствует первому элементу второго списка и т. д.;

• типы данных соответствующих элементов списков должны быть одинаковые и принадлежать к одному и тому же домену.

 

DELETE FROM s1

Условия отбора в части WHERE имеют тот же вид, что и условия фильтрации в операторе SELECT. Эти условия определяют, какие строки из исходного отношения будут удалены. Например, исключение по какой-либо причине студента Иванова И.И. из таблицы s2 можно выполнить оператором:

DELETE FROM s2

WHERE ФИО = ' Иванов И. И.'

Создание таблиц

Создание таблицы осуществляется посредством оператора CREATE TABLE. Его упрошенная версия выглядит следующим образом:

CREATE TABLE Имя_таблицы (Имя_столбца Тип_данъи [NULL | NOT NULL ] [,...]}

Оператор такого вида приведет к созданию таблицы с именем <Имя_таблицы>, которая будет содержать столько столбцов, сколько их задано в операторе. При определении столбца необходимо задать его имя, тип данных, к которому будут относиться значения этого столбца, а также определить, можно ли в качестве значения рассматриваемого столбца использовать ключевое слово NULL. Ключевым словом NULL помечается такой столбец, который может содержать неопределенные значения.

Определения столбцов первичных ключей отношений всегда должны содержать ключевые слова ROT NULL.

 

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

Дисциплина VARCHAR (20) NOT NULL,

Оценка SMALLINT NOT NULL);

Полное описание оператора CREATE TABLE должно включать средства поддержки целостности данных. Такие средства представляют собой спецификаторы, позволяющие задать ограничения для предотвращения попыток нарушить согласованность данных. Базовое определение оператора CREATE TABLE имеет следующий формат:

CREATE TABLE имя_таблицы

({ имя _столбца тип _даных [NOT NULL] [UNIQUE]

[DEFAULT значение по умолчанию]

[CHECK (условие проверки на допустимость) [,...] }

[PRIMARY KEY (список столбцов),]

{[UNIQUE (список столбцов),] [,...]}

{[FORING KEY {список столбцов внешних ключей)

REFERENCES имя родительской таблицы [(список столбцов ключей-кандидатов)],

[MATCH {PARTIAL | FULL}

[ON UPDATE правило ссылочной целостности]

[ON DELETE правило ссылочной целостности]] [,...]}

{[CHECK (условие проверки на допустимость)] [,...]})

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

 

Обновление таблиц

В уже созданную таблицу изменения могут быть внесены с помощью оператора ALTER TABLE, который имеет следующий обобщенный формат:

ALTER TABLE имя _таблицы

[ADD [COLUMN] имя столбца тип даных [NOT NULL] [UNIQUE]

[DEFAULT значение по умолчанию] [CHECK (условие проверки на допустимость)]]

[DROP [COLUMN] ] имя _столбца [RISTRICT | CASCADE]]

[ADD [CONSTRAINT [имя ограничения)] ограничение]

[DROP CONSTRAINT имя ограничения [RISTRICT I CASCADE]]

[ALTER [COLUMN] SET DEFAULT значение по умолчанию ]

[ALTER (COLUMN] DROP DEFAULT]

В данном формате предусмотрены возможности для выполнения ряда действий:

• добавить новый столбец в существующую таблицу — ADD COLUMN;

• удалить столбец из существующей таблицы — DROP COLUMN;

• добавить в определение таблицы новое ограничение — ADD CONSTRAINT;

• удалить из определения таблицы существующее ограничение — DROP CONSTRAINT;

• задать для существующего столбца значение по умолчанию — ALTER [COLUMN] SET DEFAULT;

• отменить установленное для столбца значение по умолчанию — ALTER [COLUMN] DROP DEFAULT.

 

Добавить в таблицу s1 столбец Группа, содержащий символьный тип данных, можно с помощью оператора:

ALTER TABLE s1

Удаление таблиц

Ставшая ненужной таблица может быть удалена из базы данных оператором

DROP TABLE имя таблицы [RISTRICT I CASCADE].

Ключевые слова RISTRICT и CASCADE используются для определения условий удаления таблицы в том случае, если в базе данных присутствуют ее дочерние таблицы. Ключевое слово RISTRICT при наличии в базе данных зависимых от удаляемой таблицы объектов вызовет отмену удаления.

Ключевое слово CASCADE в этой ситуации вызовет автоматическое удаление всех объектов базы данных, существование которых зависит отданной таблицы. Удалим таблицу s1:

DROP TABLE s1;

Статистические функции SQL

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

Список статистических функций в СУБД Access:

Знак операции Значение
COUNT() Возвращает число строк в таблице или столбце
SUM() Возвращает сумму значений в столбце
MIN() Возвращает наименьшее значение в столбце
MAX() Возвращает наибольшее значение в столбце
AVG() Возвращает среднее значение в столбце

ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ (SQL)

Язык SQL (Structured Query Language – язык структурированных запросов) представляет собой наиболее распространенный язык управления базами данных клиент/сервер. Он используется в реляционных СУБД в качестве стандартного средства доступа к данным. Основное достоинство SQL заключается в том, что он унифицирован: стандартный набор инструкций можно использовать в любой СУБД, которая совместима с SQL.

SQL является языком реляционных баз данных, а не языком системного программирования. SQL – язык, ориентированный на работу с множествами. Таким образом, ANSI SQL не включает ни средств управления выполнением программы (ветвлений и циклов), ни средств для создания форм или отчетов.

ANSI SQL включает набор стандартных команд, сгруппированных по шести задачам:

 

Описание данных

Выполнение запросов

Манипулирование данными

Управление курсором

Управление транзакциями

Администрирование

 

Внимание!

В базах данных курсором называется результирующее множество записей, а также указатель на конкретную запись в этом множестве. Не следует путать с точкой вставки, которая появляется при редактировании текста.

  

В 1989 г. в исходный стандарт ANSI были добавлены инструкции для обеспечения целостности данных.

 

Существует три способа реализации SQL: непосредственный вызов, язык модулей и встроенный SQL. При непосредственном вызове инструкции SQL передаются в СУРБД, которая создает требуемую таблицу и выводит ее. Наиболее распространенным методом реализации является встроенный SQL: инструкции SQL генерируются системой управления или включаются как текст в команды языка этой системы.

 

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

 

Access SQL предназначен для создания запросов, а не для создания или модификации таблиц, поэтому в Access SQL не входят многие из примерно 100 инструкций языка ANSI SQL. Большая часть инструкций, исключенных из Access SQL, реализуется с помощью выражений, включающих операторы, встроенные функции и функции, определенные пользователем с помощью Access VBA. Другие операции, выполняемые инструкциями ANSI SQL, можно выполнить, используя команды меню или окно базы данных.

 

SQL-2008 – самый полный вариант стандарта, в котором учтены многие решения, уже реализованные разработчиками СУБД и ставшие стандартами de-facto.

Классификация команд SQL

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

Команды DQL (языка запросов) предназначены для извлечения данных из таблиц и описания внешнего вида полученных данных. Основной инструкцией данной категории является инструкция SELECT. Команды DQL часто причисляют к командам категории DML.

Команды DML (языка обработки данных) включают инструкции INSERT и DELETE, которые позволяют добавить и удалить записи, а также инструкцию UPDATE, предназначенную для обновления значения требуемых полей.

Команды TPL (языка обработки транзакций) включают инструкции BEGIN TRANSACTION, COMMIT [WORK] и ROLLBACK [WORK], позволяющие объединить команды DML в группы, которые называются транзакциями. Если одна из команд DML, входящая в транзакцию, не может быть выполнена, то отменяются все предшествующие ей операции DML той же транзакции (это называется откат транзакции).

Команды DDL (языка определения данных) включают инструкции CREATE TABLE и CREATE VIEW, которые определяют внешний вид таблиц. Команды DDL также используются для изменения таблиц, создания и удаления индексов. Инструкции, обеспечивающие целостность данных, используются совместно с инструкциями DDL.

Команды CCL (языка управления курсором) позволяют выбрать для обработки одну строку результирующего множества запроса. Инструкции управления курсором, например, UPDATE WHERE CURENT, реализованы ядром базы данных Jet, а потому не рассматриваются.

Команды DCL (языка управления данными), например, инструкции GRANT и REVOKE, выполняют присваивание прав доступа к базе данных, подмножеству таблиц в базе данных или к конкретным командам SQL. Access SQL не поддерживает DCL: для защиты данных следует использовать средства самого Access.

 

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

Инструкции, например, SELECT, позволяют выполнить некоторую операцию.

Инструкция/строка SQL - выражение, которое определяет команды на языке SQL (Structured Query Language), такие как SELECT, UPDATE или DELETE, и может включать такие предложения как WHERE и ORDER BY. Строки и инструкции на языке SQL обычно используются в запросах, объектах Recordset и статистических функциях, но также могут применяться для создания или изменения структуры базы данных.

Предложения, например, WHERE, определяют диапазон значений поля, входящего в запрос.

Операторы, например, =, < или >, используются для сравнения значений и создания соединений, если операция объединения таблиц JOIN не используется.

Статистические функции по подмножеству, например, MIN (), возвращают одно значение для множества параметров.

Остальные ключевые слова модифицируют операцию или определяют поведение курсора при выборе требуемых строк запросов.


Синтаксис SQL

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

Идентификаторы языка SQL предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений, столбцов и других объектов базы данных. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов. Стандарт SQL задает набор символов, который используется по умолчанию, – он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). На формат идентификатора накладываются следующие ограничения:

  • идентификатор может иметь длину до 128 символов;
  • идентификатор должен начинаться с буквы;
  • идентификатор не может содержать пробелы.

Большинство компонентов языка не чувствительны к регистру. Поскольку у языка SQL свободный формат, отдельные SQL-операторы и их последовательности будут иметь более читаемый вид при использовании отступов и выравнивания.

Язык, в терминах которого дается описание языка SQL, называется метаязыком. При построении синтаксической диаграммы (дерева) главным образом использу­ются условные обозначения, известные как стандартные формы Бэкуса-Наура (BNF), но, кроме того, введены некие дополнения, способствующие более глубокому пониманию смысла операций. Ниже приведен полный список обозначений:

 

  • Символ::= означает равенство по определению. Используется для пояснения элементов синтаксической диаграммы оператора.
  • Ключевые слова записываются прописными буквами. Они зарезервированы для обозначения и составляют часть оператора.
  • Метка-заполнитель конкретных значений элементов схемы и переменных (например, имя домена в операторе CREATE DOMAIN) записывается курсивом. Метки-заполнители указывают тип собственного значения, который должен использоваться в реальном SQL-операторе; они не являются частью оператора и не несут никакой смысловой нагрузки. Соглашения о метках не относятся к стандарту BNF.
  • Необязательные элементы оператора заключены в квадратные скобки "[ ]".
  • Вертикальная черта "|" указывает на то, что все предшествующие ей элементы являются необязательными и любой из них может быть заменен на другой, принадлежащий списку после этой черты.

· Фигурные скобки "{ }" указывают, что все находящееся внутри них является единым целым при использовании других специальных символов (например, вертикальной черты или круглых скобок).

· Многоточие "..." (точнее три точки) означает, что предшествующая часть оператора может быть повторена любое число раз.

  • Многоточие, внутри которого есть запятая ".,.." (точнее, точка, запятая, две точки) указывает, что предшествующая часть оператора, состоящая из нескольких элементов, разделенных запятыми, может иметь произвольное число повторений. Запятую нельзя ставить после последнего элемента. Замечание: данное соглашение не входит в стандарт BNF, а используется в качестве дополнения, обеспечивающего более точное представление структуры SQL-оператора.

 

Типы данных

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице Типы данных.

Типы данных

Тип данных Объявления Символьный CHAR | VARCHAR Битовый BIT | BIT VARYING Точные числа NUMERIC | DECIMAL | INTEGER | SMALLINT Округленные числа FLOAT | REAL | DOUBLE PRECISSION Дата/время DATE | TIME | TIMESTAMP Интервал INTERVAL

Символьные данные

Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

<символьный_тип>::={ CHARACTER [ VARYING][длина] | [CHAR | VARCHAR][длина]}

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

Битовые данные

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

<битовый_тип>::=BIT [VARYING][длина]

Точные числа

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

<фиксированный_тип>::={NUMERIC[точность[,масштаб]|{DECIMAL|DEC}  [точность[, масштаб]| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительны<


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.17 с.