Основные команды языка запросов sql с примерами. Основные команды sql Основные команды sql с примерами

  • Дата: 18.10.2022

История SQL

Стандарты SQL

Основные команды SQL

Обработка команд SQL сервером Oracle

Стадии выполнения команды SQL

Выполнение команды DML

Выполнение команды SELECT

Выполнение команд DDL

Литература

Все операции над данными реляционной базы данных выполняются посредством языка доступа к данным, являющимся стандартным языком для систем управления реляционными базами данных. Таким стандартным языком является SQL Structured Query Language (структурированный язык запросов).

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

История SQL

Статья Кодда в 1970 году вызвала большой поток исследований, связанных с реляционными базами данных. Для реализации реляционной модели, фирма IBM в 1974 году начала разработку большого исследовательского проекта, названного System/R. Цель этого проекта заключалась в том, чтобы доказать работоспособность реляционной модели и приобрести опыт реализации реляционной СУБД.

В 1974 – 1975 годах на первом этапе выполнения проекта System/R был создан минимальный прототип реляционной системы управления базами данных. В это же время вышла первая статья с описанием языка запросов к базе данных, названного SEQUEL – Structured English Query Language (структурированный английский язык запросов).

В 1978 – 1979 годах на втором этапе выполнения проекта полностью переделанная реализация System/R была установлена на компьютерах нескольких заказчиков фирмы IBM для опытной эксплуатации. Эта эксплуатация принесла первый опыт работы с реляционной СУБД и с языком базы данных, который был переименован в SQL – Structured Query Language (структурированный язык запросов). Несмотря на изменение названия, произношение «сиквел» сохранилось и по сегодняшний день.

В 1979 году исследовательский проект System/R закончился, и IBM сделала заключение, что реляционные базы данных не только работоспособны, но и могут служить для создания коммерческих продуктов.

Стандарты SQL

В 1982 году началась работа над официальным стандартом SQL. В 1986 году стандарт был утвержден Американским институтом национальных стандартов (American National Standards Institute – ANSI) под номером X3.135, а в 1987 году – как стандарт Международной организации по стандартам (International Standards Organization – ISO). Этот стандарт, пересмотренный в 1989 году, обычно называют стандартом «SQL-89» или «SQL1».

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

Чтобы исправить эту ситуацию, комитет ANSI создал проект более жесткого стандарта «SQL2» и «SQL3». Эти стандарты оказались более противоречивыми, чем исходный стандарт, т.к. предусматривали возможности, выходящие за рамки уже существующих программных продуктов, использующих SQL. Тем не менее, стандарт «SQL2», был окончательно принят комитетом ANSI в 1992 году.

Все существующие коммерческие продукты поддерживают, несмотря на стандарт SQL2, собственный диалект языка SQL. Однако ядро SQL стандартизировано достаточно жестко, и поставщики СУБД пытаются привести свои продукты в соответствие со стандартом.

Основные команды SQL

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

Возможности SQL:

§ Подходит разным пользователям, включая пользователей с самым малым опытом программирования, т.к. является достаточно простым и наглядным языком

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

§ Сокращает время, необходимое для создания и сопровождения систем, т.к. является единым языком и для определения объектов, и для манипулирования данными

Несмотря на то, что Oracle SQL совместим со стандартом, некоторые свойства SQL2 не поддерживаются Oracle или отличаются от стандарта.

Команды SQL можно разделить на несколько категорий:


Команды

Описание

Язык манипулирования данными ( DML)
Запрашивают или манипулируют данными в объектах базы данных

Извлекает данные из одной или более таблиц или представлений

Добавляет новые строки в таблицу

Изменяет значения колонок в существующих строках таблицы

Удаляет строки из таблиц

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

Позволяет просмотреть план выполнения SQL-утверждения

Язык определения данных (DDL) базы данных

Определяют, изменяют определение или удаляют из словаря определение объектов базы данных

Используются для создания структур данных.

Используются для изменения структур данных.

Используются для удаления структур данных.

Изменяет имена объектов

Усекает объекты (удаляет все строки, оставляя определение объекта)

Собирает статистики об объектах, проверяет структуру объектов

Добавляет комментарии объектам в словарь данных

Команды управления транзакциями

Управляют изменениями, сделанными командами DML и группируют команды DML в одну транзакцию

Подтверждает изменения

Отменяет изменения до состояния данных на начало транзакции или до точки сохранения

Устанавливает точки сохранения, до которых можно отменить изменения

SET TRANSACTION *

Устанавливает свойства транзакции

Язык управления доступом ( DCL)

Предоставляют или отменяют права доступа к базе данных Oracle и ее структурам

Предоставляет права доступа к базе данных Oracle и ее структурам

Отменяет права доступа к базе данных Oracle и ее структурам

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

Позволяет выполнять команды SQL из программных модулей

Определяет явный курсор

Открывает курсор

Выбирает строку из курсора

Закрывает курсор

Извлекает данные из одной или более таблиц в программные переменные

EXECUTE IMMEDIATE *

Динамически выполняет оператор SQL

* - Не являются частью стандарта ANSI/ISO, но используются в СУБД Oracle

Обработка команд SQL сервером Oracle

Команды SQL проходят несколько стадий при обработке сервером Oracle. В процессе обработки задействованы различные процессы и структуры памяти Oracle (Рисунок 1).

Рисунок 1 Процессы и структуры памяти, участвующие в обработке команд SQL

· Команды SQL обрабатываются серверным процессом

· Идентичные команды SQL (дерево разбора и план выполнения) хранятся в одних и тех же разделяемых областях SQL разделяемого пула . Разделяемый пул располагается всегда в системной глобальной области . Команды SQL считаются идентичными, если:

o Их текст полностью идентичен, вплоть до регистра и количества пробелов

o Они ссылаются на одни и те же объекты

o Типы и имена используемых переменных совпадают

Каждая команда SQL начинается с ключевого слова – глагола, описывающего действие, выполняемое командой, например CREATE (создать). В команде может быть одно или несколько предложений. Предложение описывает данные, с которыми работает команда, или содержит уточняющую информацию о действии, выполняемом командой. Каждое предложение начинается с ключевого слова, например WHERE(где).Одни предложения в команде являются обязательными, другие – нет. Некоторые предложения могут содержать дополнительные ключевые слова, выражения. Многие предложения включают имена таблиц или полей. Имена должны содержать от 1 до 18 символов, начинаться с буквы и не содержать пробелы и специальные символы пунктуации. В качестве имен нельзя использовать ключевые слова.

52. SQL (Structured Query Language) – Структурированный Язык Запросов – это стандартный язык запросов по работе с реляционными базами данных.

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

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

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

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

· высокоуровневая структура, напоминающая английский язык;

· независимость от конкретных СУБД;

· наличие развивающихся стандартов;

· возможность выполнения интерактивных запросов извлечения данных и модификации их структуры;

· обеспечение программного доступа к базам данных;

· поддержка архитектуры клиент/сервер;

· расширяемость и поддержка объектно-ориентированных технологий;



· возможность доступа к данным в среде Интернет.

Основные функции языка SQL:

· SQL – язык интерактивных запросов . Пользователи вводят команды SQL в интерактивном режиме для выборки данных и отображения их на экране, а также для внесения изменений в базу данных;

· SQL – язык программирования баз данных . Чтобы получить доступ к базе данных, в прикладные программы вставляются команды SQL;

· SQL – язык администрирования баз данных . Администратор базы данных может использовать SQL для определения структуры базы данных и управления доступом к данным;

· SQL – язык создания приложений клиент/сервер . В прикладных программах SQL используется как средство организации связи по локальной сети с сервером баз данных, в которой хранятся совместно используемые данные и др.

55. Возможности зыка Язык SQL, соответствующий последним стандартам SQL:2003, SQL:1999 представляет собой очень богатый и сложный язык, все возможности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни. В одной из классификаций, предусмотренных стандартом SQL, этот язык разбивается на «базовый» (entry), «промежуточный» (intermediate) и «полный» (full) уровни. Базовый уровень содержит около сорока команд, которые можно сгруппировать в категории по их функциональному назначению.

CREATE TABLE Сведения (НОМЗ INT, ФИО CHAR(15), ГОД INT, ПОЛ CHAR(3))

DROP TABLE Сведения

ALTER TABLE Сведения (СЕМПОЛ CHAR(10))

CREATE VIEW УспеваемостьМ1 AS SELECT *FROM УспеваемостьWHERE ГРУП= "М-1"

INSERT INTO Сведения VALUES (980101, "ИВАНОВ И. И.", 1980, "МУЖ")

DELETE FROM Сведения WHERE НОМЗ=980201

UPDATE Сведения SET ФИО = "КРАВЦОВА И. И." WHERE НОМЗ=980201

SELECT * FROM Сведения WHERE ФИО="СИДОРОВ С. С." OR ФИО="ПЕТРОВ П. П."

54. Типы данных и выражения Для обращения к реляционной таблице в языке SQL необходимо написать (задать) команду. SELECT (выбрать) ключевое слово сообщает СУБД, какое действие будет выполнять данная команда. Команды запросы начинаются ключевым словом. Кроме SELECT это могут быть слова CREATE- создать, INSERT -вставить, DELETE - удалить,COMMIT –завершить и д.р..

FROM – ключевое слово, подобно SELECT, которое присутствует в каждой команде. Оно сопровождается пробелом, а затем именем таблиц, используемых в качестве источников информации. Имена таблиц, полей должны содержать от 1 до 18 символов, начинаться с буквы и не содержать пробелов или специальных символов.

WHERE ключевое слово, за которым следует предикат –условие, налагаемое на запись в таблице, которому она должна удовлетворять, чтобы пропасть в выборку.

ORDER BY – сортировка выводимых записей (Asc – по возрастанию, Desc – по убыванию. Если не указан вид сортировки, то происходит сортировка по возрастанию).

CHAR(длина) СHARACTER(длина) Строки символов постоянной длины

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

SMALLINT Малое целое число

NUMERIC(точность, степень) DECIMAL(точность, степень DEC(точность, степень) Число с фиксированной запятой

FLOAT (точность) Число с плавающей запятой

Double precision числа с плав зап высок точн

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

Константы используются для указания конкретных значений данных. Константы с фиксированной запятой , например: 21 -375.18 62.3

Константы с плавающей запятой, например: 1.5Е7 -3.14Е9 2.5Е-6 0.783Е24

Строковые константы должны быть заключены в одинарные кавычки. Примеры таких констант: "Минск" "New York" "Иванов И. И."

Отсутствующее значение (NULL). SQL поддерживает обработку отсутствующих данных с помощью понятия «отсутствующее значение».

Большинство SQL-ориентированных СУБД поддерживает так называемые агрегатные (итоговые) функции . К часто используемым агрегатным функциям можно отнести следующие:

· COUNT – количество значений в столбце таблицы;

· SUM – сумма значений в столбце;

· AVG – среднее арифметическое значений в столбце;

· MAX – максимальное значение в столбце;

· MIN – минимальное значение в столбце.

В выражениях можно использовать следующие типы операторов :

· арифметические : + (сложение), - (вычитание), * (умножение), / (деление);

· отношения : = (равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), <> (не равно);

· логические : AND (логическое "И"), OR (логическое "ИЛИ"), NOT (логическое отрицание);

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

SQL-транзакция – это несколько последовательных команд SQL, которые должны выполняться как единое целое.

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

Команды COMMIT и ROLLBACK используются в основном в программном режиме, хотя возможно их использование и в интерактивном режиме.

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

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

· INSERT – право добавлять данные в таблицу;

· UPDATE – право изменять данные таблицы;

· DELETE – право удалять данные из таблицы;

· REFERENCES – право определять первичный ключ.

58 Встраивание языка в прикладные программы.. К встроенным относятся команды, предназначенные для реализации обращения к базе данных из прикладных программ, написанных на определенном языке программирования.

Structured Query Language (Язык Структурированных Запросов) разработан корпораций IBM в начале 1970-х годов. В 1986 году SQL был впервые стандартизирован организаций ANSI .

SQL - этом мощный и в то же время не сложный язык для управления базами данных. Он поддерживается практически всеми современными базами данных. SQL подразделятся на два подмножества команд: DDL (Data Definition Language - язык определения данных) и DML (Data Manipulation Language - язык обработки данных). Команды DDL используются для создания новых баз данных, таблиц и столбцов, а команды DML - для чтения, записи, сортировки, фильтрования, удаления данных.

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

Команды DDL

CREATE - используется для создания новых таблиц, столбцов и индексов.

DROP - используется для удаления столбцов и индексов.

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

Команды DML

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

SELECT список_полей1 FROM имя_таблицы ]

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

Для примера создадим простейший запрос на получение данных из полей "name" и "phone" таблицы "friends":

SELECT name, phone FROM friends

Если необходимо получить все поля таблицы, то не обязательно их перечислять, достаточно поставить звездочку (*):

SELECT * FROM friends

Для исключения из выводимого списка повторяющихся записей, используется ключевое слово DISTINCT :

SELECT DISTINCT name FROM friends

Если необходимо получить отдельную запись, то используется оператор WHERE . Например, нам надо получить из таблицы "friends" номер телефона "Васи Пупкина":

SELECT * FROM friends WHERE name = "Вася Пупкин"

или наоборот, нам надо узнать кому принадлежит телефон 44-65-01:

SELECT * FROM friends WHERE phone = "44-65-01"

Помимо этого можно использовать подстановочные символы, таким образом создавая шаблоны поиска. Для этого используется оператор LIKE . Оператор LIKE имеет следующие операторы подстановки:

* - соответствует строке состоящей из одного или более символов;

Соответствует одному любому символу;

Соответствует одному символу из определенного набора;

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

SELECT * FROM friends WHERE name LIKE "*Вася*"

Для определения порядка, в котором возвращаются данные используется оператор ORDER BY . Без этого оператора порядок возвращаемых данных невозможно предсказать. Ключевые слова ASC и DESC позволяют определить направление сортировки. ASC - упорядочивает по возрастанию, а DESC - по убыванию.

Например, запрос на получение списка записей из поля "name" в алфавитном порядке будет выглядеть следующим образом:

SELECT * FROM friends ORDER BY name

Обратите внимание, ключевое слово ASC указывать не обязательно, поскольку оно используется по умолчанию.

INSERT - данная команда служит для добавления новой записи в таблицу. Записывается она следующим образом:

INSERT INTO имя_таблицы VALUES (список_значений )

Обратите внимание, типы значений в списке значений должны соответствовать типам значений полей таблицы, например:

INSERT INTO friends VALUES ("Анка Пулеметчица" , "32-09-81" )

В данном примере в таблицу friends добавляется новая запись с указанными значениями.

UPDATE - эта команда применяется для обновления данных в таблице и чаще всего используется совместно с оператором WHERE. Команда UPDATE имеет следующий синтаксис:

UPDATE имя_таблицы SET имя_поля = значение

Если опустить оператор WHERE, то будут обновлены данные во всех определенных полях таблицы. Для примера, поменяем номер телефона Васи Пупкуна:

UPDATE friends SET phone = "55-55-55" WHERE name = "Вася Пупкин"

DELETE - как вы уже наверное поняли, эта команда служит для удаления записей из таблицы. Как и UPDATE, команда DELETE обычно используется с оператором WHERE, если этот оператор пропустить, то будут удалены все данные из указанной таблицы. Синтаксис команды DELETE выглядит следующим образом:

DELETE FROM имя_таблицы

Для примера, давайте удалим этого надоедливого Васю Пупкина из нашей таблицы:) :

DELETE FROM friends WHERE name = "Вася Пупкин"

The конец

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

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

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

Вот стандартные условные обозначения (они называются BNF-условиями):

  • Ключевые слова набираются в верхнем регистре.
  • SQL и другие специальные условия заключаются в угловые скобки и набираются курсивом.(<и >)
  • Необязательные части команд находятся в квадратных скобках ([ и ]).
  • Многоточие (....) указывает на то, что предшествующая часть команды может повторяться любое число раз.
  • Вертикальная полоса (|) означает: то, что ей предшествует, может быть заменено на то, что следует за ней.
  • Фигурные Скобки ({ и }) указывают: всё, что внутри них, должно быть расценено как целое, для оценки других символов (например, вертикальных полос или эллипсов).
  • Двойное двоеточие и знак равенства (:: =) означают: то, что следует за ними, является определением того, что им предшествует.

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

    ОБРАТИТЕ ВНИМАНИЕ: Терминология которую мы используем здесь - не является официальной терминологией ANSI. Официальная терминология может вас сильно запутать, поэтому мы несколько ее упростили.
    По этой причине мы иногда используем условия, отличающиеся от ANSI, или используем те же самые условия, но несколько по-иному. Например, наше определение Отличается от используемой в ANSI комбинации стандартного определения С .

    ЭЛЕМЕНТЫ SQL

    Этот раздел определяет элементы команд SQL.

    Они разделены на две категории: Основные элементы языка и Функциональные элементы языка .

    Основные элементы - это создаваемые блоки языка; когда SQL исследует команду, то он сначала оценивает каждый символ в тексте команды в терминах этих элементов. Разделитель отделяет одну часть команды от другой; всё, что находится между разделителями , обрабатывается как модуль. Основываясь на этом разделении, SQL интерпретирует команду.

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

    Перечисленные здесь являются общими элементами для всех описываемых команд.

    Функциональные элементы могут определяться в терминах друг друга или даже в собственных терминах. Например, предикат Наш последний и наиболее сложный случай, содержит предикат Внутри собственного определения. Это потому, что предикат Использующий AND или OR, может содержать любое число предикатов Которые могут работать автономно. Мы представляли вам предикат В отдельной секции в этом приложении из-за разнообразия и сложности этого функционального элемента языка. Он будет постоянно присутствовать при обсуждении других функциональных частей команд.

    БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА

    ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ | | -- пробел определяемый реализацией конец символьной строки [{ | не должен быть длиннее 18-ти символов. ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ - % любое из следующих: , () <> . : = + " - | <> >= <= или [любой печатаемый текст в одинарных кавычках] Примечание: В , две последовательных одинарных кавычки (" ") интерпретируются как одна ("). окончание/терминатор, зависящее от главного языка. (*только вложенный SQL*)

    ФУНКЦИОНАЛЬНЫЕ ЭЛЕМЕНТЫ

    Следующая таблица показывает функциональные элементы команд SQL и их определения: ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ Предложение SELECT Заключённое в круглые скобки предложение SELECT внутри другого условия, которое фактически оценивается отдельно для каждой строки-кандидата другого предложения. | | любое из следующих: + - / * | | | | | ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ USER | [
    | .] | | NOT NULL | UNIQUE | CHECK () | PRIMARY KEY | REFERENCES
    [()] UNIQUE () | CHECK () | PRIMARY KEY () | FOREIGN KEY () | REFERENCES
    [()] ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ = Допустимый тип данных (См. в Приложении B описание типов, обеспечиваемых ANSI, или в Приложении C - другие общие типы.) Значение зависит от (См. Приложение B .) (*нестандартный*) .,.. .,..
    {
    [] } .,..

    ПРЕДИКАТЫ

    Здесь определён список различных типов предиката Описанных на следующих страницах:

    ::=

    { | | | | | | } BETWEEN
    AND

    - A BETWEEN B AND C имеет такое же значение, что и - (A>= B AND <= C). , для которого A NOT BETWEEN B AND C, имеет такое же значение, что и NOT (BETWEEN B AND C).
    может быть выведено с помощью нестандартного запроса (*nonstandard*).

    Синтаксис

    IN |

    Список значений будет состоять из одного или более значений в круглых скобках с разделением запятыми, которые имеют сравнимый с тип данных. Если используется подзапрос , он должен содержать только одно выражение в предложении SELECT (возможно и больше, но это уже будет вне стандарта ANSI).
    Подзапрос фактически выполняется отдельно для каждой строки-кандидата основного запроса, и значения, которые он выведет, будут составлять список значений для этой строки. В любом случае предикат будет верен, если выражение представленное в списке значений , если не указан NOT.
    Фраза A NOT IN (B, C) является эквивалентом фразы NOT (A IN (B, C)).

    Синтаксис

    LIKE

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

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

    Если совпадение произошло, верен, если не был указан NOT. Фраза NOT LIKE "текст" - эквивалентна NOT (A LIKE "текст").

    Синтаксис

    IS NULL

    = IS NULL, если NULL значение представлено в этом столбце. Это сделает верным, если не указан NULL. Фраза IS NOT NULL, имеет тот же результат что и NOT ( IS NULL).

    Синтаксис



    :: = ANY | ALL | SOME

    Предложение SELECT подзапроса должно содержать одно, и только одно, выражение значения . Все значения, выведенные подзапросом , составляют набор результатов . сравнивается, используя оператор связи , с каждым членом набора результатов . Это сравнение оценивается следующим образом:

  • Если = ALL и каждый член набора результатов делает это сравнение верным, верен.
  • Если = ANY и имеется по крайней мере один член из набора результатов , который делает верным это сравнение, то является верным.
  • Если набор результатов пуст, то верен, если = ALL , и неверен а ином случае.
  • Если = SOME, эффект - тот же, что и для ANY.
  • Если неверен и не неверен, он неизвестен.

    Синтаксис:

    EXISTS ()

    Если подзапрос выводит одну или более строк вывода, верен; и неверен в ином случае.

    SQL КОМАНДЫ

    Этот раздел подробно описывает синтаксис различных команд SQL. Это даст вам возможность быстро отыскивать команду, находить синтаксис и краткое описание её работы.

    ИМЕЙТЕ ВВИДУ: команды, которые начинаются словами - EXEC SQL, а также команды или предложения, заканчивающиеся словом, могут использоваться только во вложенном SQL.

    BEGIN DECLARE SECTION (НАЧАТЬ РАЗДЕЛ ОБЪЯВЛЕНИЙ)

    Синтаксис

    EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION

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

    CLOSE CURSOR (ЗАКРЫТЬ КУРСОР)

    Синтаксис

    EXEC SQL CLOSE CURSOR ;

    Эта команда указывает курсору закрыться, после чего ни одно значение не сможет быть выбрано из него до тех пор, пока он не будет снова открыт.

    COMMIT (WORK) (ПОДТВЕРДИТЬ (ТРАНЗАКЦИИ))

    Синтаксис

    Эта команда оставляет неизменными все изменения, сделанных в базе данных, до тех пор, пока начавшаяся транзакция не закончится и не начнется новая транзакция.

    CREATE INDEX (СОЗДАТЬ ИНДЕКС)

    (*NONSTANDARD*) (НЕСТАНДАРТНАЯ)

    Синтаксис

    CREATE INDEX
    ON

  • ();

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

    CREATE SYNONYM (*NONSTANDARD*)
    (СОЗДАТЬ СИНОНИМ) (*НЕСТАНДАРТНЫЙ*)

    Синтаксис

    CREATE IPUBLICl SYNONYM FOR
    .

    ;

    Эта команда создает альтернативное (синоним) имя таблицы. Синоним принадлежит его создателю, а сама таблица - обычно другому пользователю. Используя синоним, его владелец может не ссылаться на таблицу её полным (с включением имени владельца) именем. Если PUBLIC указан, синоним принадлежит каталогу SYSTEM и, следовательно, доступен всем пользователям.

    CREATE TABLE (СОЗДАТЬ ТАБЛИЦУ)

    Синтаксис

    CREATE TABLE


    ({ []
    [ . . .]
    []} . , . . . , . .);

    Команда создает таблицу в базе данных. Эта таблица будет принадлежать её создателю. Столбцы будут рассматриваться в поимённом порядке.
    определяет тип данных, которые столбец будет содержать. Стандарт описывается в Приложении B ; все прочие используемые типы данных обсуждались в Приложении C . Значение размера зависит от типа данных .
    и налагают ограничения на значения, которые могут быть введены в столбце.
    определяет значение (по умолчанию), которое будет вставлено автоматически, если никакого другого значения не указано для этой строки. (См. в Главе 17 подробности о самой команде CREATE TABLE и в Главах И - подробности об ограничениях и о ).

    CREATE VIEW (СОЗДАТЬ ПРОСМОТР)

    Синтаксис

    CREATE VIEW


    AS
    ;

    Просмотр обрабатывается как любая таблица в командах SQL. Когда команда ссылается на имя таблицы

    , запрос выполняется, и его вывод соответствует содержанию таблицы, указанной в этой команде.
    Некоторые просмотры могут модифицироваться, что означает, что команды модификации могут выполняться в этих просмотрах и передаваться в таблицу, на которую была ссылка в запросе . Если указано предложение WITH CHECK OPTION, эта модификация должны также удовлетворять условию предиката В запросе .

    DECLARE CURSOR (ОБЪЯВИТЬ КУРСОР)

    Синтаксис

    EXEC SQL DECLARE CURSOR FOR

    Эта команда связывает имя курсора с запросом . Когда курсор открыт (см. OPEN CURSOR), запрос выполняется, и его результат может быть выбран (командой FETCH) для вывода. Если курсор - модифицируемый, таблица, на которую ссылается запрос , может получить изменение содержания с помощью операции модификации в курсоре (См. в Главе 25 о модифицируемых курсорах).

    DELETE (УДАЛИТЬ)

    Синтаксис

    DELETE FROM


    { ; }
    | WHERE CURRENT OF

    Если предложение WHERE отсутствует, ВСЕ строки таблицы удаляются. Если предложение WHERE использует предикат Строки, которые удовлетворяют условию этого предиката Удаляются. Если предложение WHERE имеет аргумент CURRENT OF (ТЕКУЩИЙ) в имени курсора , строка из таблицы

    , на которую в данный момент имеется ссылка с помощью имени курсора , будет удалена. Форма WHERE CURRENT может использоваться только во вложенном SQL и только с модифицируемыми курсорами.

    EXEC SQL (ВЫПОЛНИТЬ SQL)

    Синтаксис

    EXEC SQL

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

    FETCH (ВЫБОРКА/ИЗВЛЕЧЕНИЕ)

    Синтаксис

    EXEC SQL FETCH
    INTO

    FETCH принимает вывод из текущей строки запроса , вставляет её в список главных переменных , и перемещает курсор на следующую строку. Список может включать переменную indicator в качестве целевой переменной (См. Главу 25).

    GRANT (ПЕРЕДАТЬ ПРАВА)

    Синтаксис (стандартный)

    GRANT ALL
    | {SELECT
    | INSERT
    | DELETE
    | UPDATE [()]
    | REFERENCES [()l } . , . .
    ON

    . , . .
    TO PUBLIC | . , . .
    ;

    Аргумент ALL (ВСЕ), с или без PRIVILEGES (ПРИВИЛЕГИИ), включает каждую привилегию в список привилегий. PUBLIC (ОБЩИЙ) включает всех существующих пользователей и всех созданных в будущем. Эта команда даёт возможность передать права для выполнения действий в таблице с указанным именем. REFERENCES позволяет дать права на использование столбцов в списке столбцов как родительский ключ для внешнего ключа. Другие привилегии состоят из права выполнять команды, для которых привилегии указаны их именами в таблице. UPDATE подобен REFERENCES и может накладывать ограничения на определенные столбцы. GRANT OPTION даёт возможность передавать эти привилегии другим пользователям.

    Синтаксис (нестандартный)

    GRANT DBA
    | RESOURCE
    | CONNECT ... .
    TO . , . .
    | . , . . }
    FROM { PUBLIC
    | . , . . };

    Привилегия Может быть любой из указанных в команде GRANT. Пользователь, дающий REVOKE, должен иметь те же привилегии, что и пользователь, который давал GRANT. Предложение ON может быть использовано, если применяется привилегия специального типа для особого объекта.

    ROLLBACK (WORK)
    (ОТКАТ) (ТРАНЗАКЦИИ)

    Синтаксис

    Команда отменяет все изменения в базе данных, сделанные в течение текущей транзакции. Она, кроме того, заканчивается текущую и начинает новую транзакцию.

    SELECT (ВЫБОР)

    Синтаксис

    SELECT { IDISTINCT | ALL] . , . . } / *
    FROM

    . , . .

    . , . . ];

    Это предложение организует запрос и выводит значения из базы данных (см. Главы 3 - 14).

    Применяются следующие правила:

  • Если ни ALL, ни DISTINCT не указаны, принимается ALL.
  • Выражение состоит из , агрегатной функции , нестандартной функции , постоянной или любой их комбинации с операторами в допустимых выражениях.
  • Таблица, на которую ссылаются,
  • , состоит из имени таблицы, включая префикс владельца, если текущий пользователь не владелец, или синоним (нестандартно) таблицы. Таблица может быть или базовой таблицей, или просмотром. В принципе псевдоним может указать, какой синонимом используется для таблицы, только на время текущей команды. Имя таблицы или синоним должны отделяться от псевдонима одним или более разделителями .
  • Если используется GROUP BY, все столбцы , используемые в предложении SELECT, должны будут использоваться как группа столбцов , если они не содержатся в агрегатной функции . Вся группа столбцов должна быть представлена среди выражений , указанных в предложении SELECT. Для каждой отдельной комбинации значений группы столбцов будет иметься одна, и только одна, строка вывода.
  • Если HAVING используется, предикат Применяется к каждой строке, произведённой предложением GROUP BY, и те строки, которые сделают этот предикат верным, будут выведены.
  • Если ORDER BY используется, вывод имеет определенную последовательность. Каждый идентификатор столбца ссылается на указанное в предложении SELECT. Если это является указанным столбцом , может быть таким же, как . Иначе может быть положительным целым числом, указывающим место, где находится в последовательности предложения SELECT. Вывод будет сформирован так, чтобы помещать значения, содержащиеся в , в порядке возрастания, если DESC не указан. Имя идентификатора столбца , стоящее первым в предложении ORDER BY, будет предшествовать позже стоящим именам в определении последовательности вывода.

    Предложение SELECT оценивает каждую строку-кандидат таблицы, в которой строки показаны независимо.

    Строка-кандидат определяется следующим образом:

  • Если только одна ссылаемая таблица
  • включена, каждая строка этой таблица в свою очередь является строкой-кандидатом.
  • Если более одной ссылаемой таблицы
  • включено, каждая строка каждой таблицы должна быть скомбинирована, в свою очередь, с каждой комбинацией строк из всех других таблиц. Каждая такая комбинация будет, в свою очередь, строкой-кандидатом.

    Каждая строка-кандидат производит значения, которые делают предикат В предложении WHERE верным, неверным, или неизвестным. Если GROUP BY не используется, каждое применяется, в свою очередь, для каждой строки-кандидата, чьё значение делает предикат верным, и результатом этой операции является вывод.
    Если GROUP BY используется, строки-кандидаты комбинируются, используя агрегатные функции. Если никакого предиката Не установлено, каждое выражение применяется к каждой строке-кандидату или к каждой группе. Если указан DISTINCT, дубликаты (двойники) строк будут удалены из вывода.

    UNION (ОБЪЕДИНЕНИЕ)

    Синтаксис

    {UNION } . . . ;

    Вывод двух или более запросов будет объединён. Каждый запрос должен содержать один и тот же номер в предложении SELECT и в таком порядке, что 1.. n каждого совместим по типу данных и размеру с 1.. n всех других.

    UPDATE (МОДИФИКАЦИЯ)

    Синтаксис

    UPDATE


    SET { = } . , . .
    {[ WHERE ]; }
    | {
    ]}

    UPDATE изменяет значения в каждом столбце на соответствующее значение . Если предложение WHERE использует предикат То только строки таблиц, чьи текущие значения делают этот предикат Верным, могут быть изменены. Если WHERE использует предложение CURRENT OF, то значения в строке таблицы

    , находящиеся в курсоре , меняются. WHERE CURRENT OF пригодно для использования только во вложенном SQL, и только с модифицируемыми курсорами. При отсутствии предложения WHERE, все строки меняются.

    WHENEVER (ВСЯКИЙ РАЗ КАК)

    Синтаксис

    EXEC SQL WHENEVER
    :: = SQLERROR | NOT FOUND | SQLWARNING
    (последнее - нестандартное)
    :: = CONTINUE | GOTO | GOTO
    :: = зависит от главного языка

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

    Язык SQL: классификация команд

    Стандартные команды SQL можно рассматривать, отталкиваясь от их назначения. За основу классификации можно взять следующие наборы:

    — команды для построения запросов;

    — команды встроенных функций и процедур;

    — команды системных таблиц и триггеров;

    — наборы комбинаций, предназначенных для работы со строковыми переменными и датой;

    — команды для работы с таблицами и данными.

    Эту классификацию можно продолжать бесконечно долго, однако основные наборы команд языка SQL будут строиться именно исходя из представленных типов. Рассматривая классификацию языка, нельзя не сказать о том, что он универсален. Об этом лишний раз свидетельствует сфера его применения. Данный язык программирования и его разновидности используются не только в стандартной среде, но и в других программах, которые вы использовали, так или иначе. Можно рассматривать сферу использования SQL с точки зрения офисного программного обеспечения. Речь идет о MicrosoftAccess. Данный язык, а если говорить точнее, его разновидность MySQL, дает возможность администрировать базы данных в Интернете. Среда разработки Oracle использует команды SQL на основе своих запросов.

    Применение SQL в Microsoft Access

    Пакет программного обеспечения Microsoft Office считается одним из самых простых примеров использования языка программирования баз данных. Изучение данного программного продукта предусмотрено даже в школьном курсе информатики. Система управления базой данных Microsoft Access рассматривается в одиннадцатом классе. При изучении данного приложения школьники могут ознакомиться с языком разработки баз данных. Именно тогда они получают базовое понимание процесса управления базами данных.

    SQL-команды в Microsoft Access довольно примитивны, если рассматривать их на профессиональном уровне. Выполнение данных команд осуществляется очень просто. Создаются они в специальном редакторе кода. Давайте рассмотрим конкретный пример:

    SELECTPe_SurName

    WHEREPe_Name = ‘Мери’;

    Рассматривая синтаксис данной программы, можно сказать, что она вернет пользователю фамилию человека. В данном случае речь идет о женщине по имени Мери, имя которой хранится в базе данных Contacts. Хотя использование SQL в Access ограничено, такие простые запросы иногда сильно упрощают выполнение поставленного задания.

    Использование команд SQL в Oracle

    Oracle является наверное единственным серьезным конкурентом Microsoft SQL Server. Эта среда разработки и управления БД постоянно приводит к усовершенствованию функций программного продукта от компании Microsoft, поскольку конкуренция является двигателем прогресса. Команды SQL Oracle, несмотря на постоянное соперничество, повторяют SQL. Необходимо отметить, что хотя Oracle практически считается копией SQL, логика данной системы и в целом языка считается проще. При использовании определенного набора команд система Oracle не имеет такой сложной структуры. Если рассматривать возможности этих сред разработки баз данных, то у Oracle нет сложной структуры вложенных запросов. Подобная разница дает возможность во много раз ускорить работу с данными. Однако в противовес это в некоторых случаях может привести к нерациональному использованию памяти в отдельных случаях. В основном структура Oracle построена на временных таблицах и их применении. К примеру, SQL команды в данной системе строятся по аналогии со стандартами языка SQL, хотя и отличаются от него.

    SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname),

    CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))),

    CONCAT(‘принят на работу ‘, acceptdate))

    FROM employees WHERE acceptdate>to_date(‘01.01.80′,’dd.mm.yyyy’);

    Такой запрос возвращает данные о сотрудниках, которые были приняты на работу в определенный промежуток времени. Хотя структура запроса и отличается от MicrosoftSQLServer, выполнение SQL-команд в этих системах похоже. Исключение составляют лишь мелкие детали.

    Применение SQL в сети Internet

    После появления всемирной паутины, или иначе говоря, интернета, сфера применения языка SQL была существенно расширена. В сети, как известно, хранится большой объем информации. При этом она расположена не хаотично, а размещена на серверах и сайтах по определенным критериям. За хранение информации в Интернете и других местах отвечают непосредственно базы данных. Сайты представляют собой системы управления. Сайты и их программный код, как правило, организованы на разных языках программирования. В основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, который ориентирован на веб-интерфейсы MySQL. Основной набор команд и синтаксис данного языка полностью копируют SQL. Однако имеются некоторые дополнения, которые и придают ему отличие от Microsoft SQL Server. Команды SQL похожи не только по синтаксису, но и по набору служебных слов. Разница заключается только в структурировании и вызове запроса. Можно рассмотреть для примера запрос для создания новой таблицы. Именно этому прежде всего и учат детей на уроках информатики.

    $link = mysqli_connect(‘localhost’, «root», », ‘tester’);

    if (!$link) die(«Error»);

    $query = ‘create table users(

    login VARCHAR(20),

    password VARCHAR(20))’;

    if (mysqli_query($link, $query)) echo «Таблицасоздана.»;

    elseecho «Таблица не создана: «.mysqli_error();

    mysqli_close($link);

    Результатом выполнения такого запроса будет создание новой таблицы Users с двумя полями: логин и пароль. В данном случае синтаксис изменен под Веб. В основе лежат команды MicrosoftSQLServer.

    Microsoft SQL Server: построение запросов

    Одной из основных задач SQL является выборка из таблиц определенного набора данных. Для выполнения таких операций в SQL предусмотрена команда select. О ней и будет идти речь ниже. Правила построения команд довольно просты. Сама команда select в SQL строится следующим образом. Предположим, у вас имеется таблица, в которой присутствуют данные о сотруднике. Таблица имеет имя Person. Вам нужно выбрать данные о сотрудниках, дата рождения которых лежит в промежутке с первого января по первое сентября текущего года. Чтобы осуществить такую выборку необходимо выполнить команду SQL, в которой будет использоваться не только стандартная конструкция, но и примерно такое условие выбора: Select * fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=09/01/2016’. Выполнение данной команды возвращает информацию о сотрудниках, дата рождения которых находится в заданном вами периоде. В некоторых случаях перед пользователем стоит задача вывести только ФИО сотрудника. Для этого можно построить запрос следующим образом: SelectP_Name – имя P_SurName – фамилия P_Patronimic – отчество fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=’09/01/2016’. В данном случае речь идет только о выборе чего-либо. По сути своей он ни на что не влияет, а только предоставляет информацию в запрашиваемом виде. Если вы решили всерьез заняться изучением языка SQL, то вам придется научиться вносить изменения в базы данных, поскольку их построение без этого просто невозможно. Чуть ниже будет рассмотрено, как это делается.

    Основные команды SQL для изменения информации

    Синтаксис языка построен не только для выполнения запросов, но и для осуществления манипуляций с данными. Задачей программиста БД в основном является написание скриптов для формирования отчетов и выборок. Иногда требуется вносить правки в таблицы. Список SQL-команд для выполнения таких действий не слишком велик. Он состоит всего из трех команд:

    — Insert (вставить);

    — Update (обновить);

    — Delete (удалить).

    Чтобы определить назначение этих команд, достаточно просто перевести их название. Эти команды довольно просты в использовании и при этом имеют не слишком сложную схему построения. Стоит упомянуть, что некоторые из них при неправильном использовании могут нанести базе непоправимый ущерб. Перед использованием таких команд MS SQL необходимо продумать и учесть все возможные последствия их выполнения. Только после изучения данных команд, вы сможете полноценно работать с базами данных, видоизменять их и вносить новые переменные или удалять старые.

    Использование команды Insert

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

    Insertintoperson

    Select ‘Иванов’,’Иван’,’Иванович’,’01/01/1990’

    Команды MSSQLServer такого типа автоматически заполняют ячейки таблицы указанными данными. Иногда возникают ситуации, когда у сотрудника отсутствует отчество. В этом случае необходимо выполнить команду вставки данных, которая занесет в таблицу только необходимую информацию. Синтаксис такой команды будет выглядеть следующим образом:

    Insertintoperson(P_Name, P_SurName ,P_BerthDay)

    Values (‘Джон’, ‘Джонсон’,’01/11/1988’)

    Данная команда заполнит указанные ячейки. Остальные будут иметь значение null.

    Команды для изменения данных

    Чтобы изменить данные во всей строке или в некоторых ячейках, необходимо использовать команду UpdateSQL. Выполнить такую команду нужно только с определенным условием. Необходимо точно указать в какую строку по номеру необходимо внести изменения. У команды UpdateSQL несложный синтаксис. Чтобы правильно ее использовать, нужно указать, какую информацию, в какой колонке и какой записи необходимо изменить. После этого необходимо будет составить скрипт и выполнить его. Давайте рассмотрим один пример. Предположим, вам необходимо изменить дату рождения Джона Джонсона, который внесен в таблицу сотрудников под номером 10.

    Update Person Set P_BirthDay = ‘10/10/1988’ where P_ID=10

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

    Команды для использования встроенных функций и процедур

    При помощи языка SQL можно не только построить запросы, но и создать встроенные механизмы для работы с данными. Возникают ситуации, когда необходимо использовать в теле одного запроса написанную ранее выборку. Если посудить логически, необходимо скопировать текст выборки и вставить его в нужное место. Можно обойтись и более простым решением. Давайте рассмотрим пример, когда на рабочем интерфейсе присутствует кнопка для печати отчета, например, в Excel. Данная операция будет осуществляться по мере необходимости. Для этой цели можно использовать встроенные хранимые процедуры. В данном случае команды SQL запросов заключаются в процедуру и вызываются при помощи команды SQL Exec. Предположим, что была создана специальная процедура для вывода даты рождения сотрудников с описанной ранее таблицы Person. В этом случае отсутствует необходимость писать весь запрос. Чтобы получить необходимую информацию, достаточно выполнить команду Exec и передать параметры, необходимые для выборки. В качестве примера можно рассмотреть механизм создания процедуры следующего характера:

    CREATEPROCEDUREPrintPerson

    @DB smalldatetime

    @DE smalldatetime

    SELECT * from Person

    FROM HumanResources.vEmployeeDepartmentHistory

    WHERE P_BerthDay>= @DB and P_BerthDay<= @DE

    ANDEndDateISNULL;

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

    Целостность информации. Триггеры

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

    CREATE TRIGGER Person_Insert

    Затем необходимо указать, для какой таблицы он применяется

    Затем указываем операцию с данными. В нашем случае это будет операция изменения данных. Следующим шагом является указание переменных и таблиц.

    declare @ID int. @Datesmalldatetime @nIDint. @nDatesmalldatetime

    После этого объявляем курсоры для выбора данных из таблиц удаления и вставки данных

    DEclare cursor C1 for select P_ID, P_BerthDay from Inserted

    DEclare cursor C2 for select P_ID, P_BerthDay from deleted

    if @ID = @nID and @nDate = ’01/09/2016′

    sMasseges ‘Выполнить операцию невозможно. Не подходит дата’

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

    — SQL SERVER: altertablePERSONdisabletriggerall(для отключения триггеров, которые были созданы для данной таблицы);

    — altertablePERSONenabletriggerall (для их включения триггеров)

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


    mrmitroshin - Строительный портал

    © Copyright 2024, mr-mitroshin.ru

    • Рубрики
    • Фундаменты
    • Водоснабжение
    • Печи и камины
    • Из газобетона
    • Участок
    •  
    • Фундаменты
    • Водоснабжение
    • Печи и камины
    • Из газобетона
    • Участок