SQL-DML – манипулирование данными. Ввод и корректировка данных средствами SQL. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

SQL-DML – манипулирование данными. Ввод и корректировка данных средствами SQL.

Поиск

Язык SQL (Structured Query Language) был разработан в 70х гг. и на сегодняшний день является основным инструментом для работы с реляционными базами данных. Этот язык состоит из двух основных подмножеств:

SQL-DDL (Data Definition Language) – предназначен для создания модели данных (таблиц, ключей, ограничений целостности и т.д.)

SQL-DML (Data Manipulation Language) – предназначен для работы с данными, для извлечения данных из таблицы или корректировки значений в БД

Иногда также выделяют SQL- DCL (Data Control Language), предназначенный для управления доступом к данным.

SQL-DML позволяет пользователю производить следующие операции с БД: выбор записей из таблиц – команда SELECT; добавление записей в таблиц – команда INSERT; корректировка значений – команда UPDATE; удаление записей из таблиц – команда DELETE.

Как правило, команда извлечения данных SELECT рассматривается отдельно от команд модификации данных и иногда даже неформально выносится за рамки блока DML.

Итак, для ввода и корректировки данных средствами SQL служат следующие команды.

INSERT – добавление строки в таблицу.

INSERT INTO Таблица [(Столбцы)] {VALUES (Столбцы)} | <выражение запроса> | {DEFAULT VALUES};

Команда INSERT добавляет строку в таблицу Таблица с указанными значениями.

Существует три способа указать значения для записи:

-в явном виде – с использованием оператора VALUES; если после имени таблицы в круглых скобках указан список целевых столбцов, то список вставляемых значений должен соответствовать этому порядку, если список целевых столбцов не указан, то список значений должен полностью повторять порядок полей в таблице

-значения по умолчанию – с использованием оператора DEFAULT VALUES (также значение DEFAULT можно среди прочих включать в список значений при использовании оператора VALUES)

-в виде результатов подзапроса – этот вариант является наиболее предпочтительным, поскольку позволяет вставлять несколько строк сразу и избегать ручного ввода; необходимо помнить, что порядок столбцов в результирующей таблице подзапроса подчиняется тем же правилам, что и при использовании оператора VALUES

UPDATE – изменение значений отдельных полей.

UPDATE Таблица SET {Столбцы = {новое значение столбца}} [{WHERE <предикат>}];

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

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

расчет по формуле – в формулу могут входить числовые константы, математические операторы, имена полей, условные выражения CASE (вида CASE WHEN <предикат> THEN x ELSE y)

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

DELETE – удаление строк из таблицы.

DELETE FROM Таблица [WHERE <предикат>];

Команда DELETE удаляет строки из таблицы Таблица. Если предикат WHERE указан, то удаляются только те строки, которые удовлетворяют условию; если предикат не указан, удаляются все строки.

В стандарт SQL:2003 включена также команда MERGE, представляющая собой комбинацию команд INSERT и UPDATE. Она в зависимости от указанного условия либо добавляет строки в таблицу, либо обновляет существующие.

 

28. Команда SELECT. Возможности задания условий отбора. Возможности связывания таблиц. Вложенные запросы.

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

SELECT [DISTINCT | ALL | TOP <количество> [PERCENT]]

{* | [<выражение для столбца> [[AS] <псевдоним>]] [,…]}

FROM <имя таблицы> [[AS] <псевдоним>] [,…]

[WHERE <предикат>]

[[GROUP BY <список столбцов>]

[HAVING <условие на агрегатные значения>] ]

[ORDER BY <список столбцов для сортировки>]

Таким образом, команда SELECT позволяет:

выбирать данные из различных полей (указываются в предложении SELECT) и из различных таблиц (FROM);

накладывать различные условия для дополнительной фильтрации результатов запроса (WHERE)

группировать данные и фильтровать группы (GROUP BY и HAVING)

сортировать конечные результаты (ORDER BY).

Возможности задания условий отбора.

Команда SELECT предоставляет широкие возможности для отбора значений:

удаление повторных записей – предложение DISTINCT;

вывод определенного количества или доли «верхних» записей в отсортированном диапазоне – предложение TOP или TOP PERCENT;

наложение условий на записи – предложение WHERE в сочетании с различными логическими функциями:

6 стандартных предикатов сравнения – >, <, =, <>, >=, <=;

проверка попадания в диапазон – предикат BETWEEN (WHERE Столбец/производное выражение BETWEEN Левая граница AND Правая граница);

проверка присутствия в наборе – предикат IN (WHERE Столбец/производное выражение IN (Набор | Подзапрос);

проверка соответствия строковых значений маске – предикат LIKE (WHERE Столбец/производное выражение LIKE Маска), в маске используются специальные символы – ‘_’ для замены любого символа и ‘%’ для замены любой последовательности символов;

проверка наличия значения – предикат NULL (WHERE Столбец/производное выражение IS NULL).

Различные типы условий могут соединяться и модифицироваться с помощью операторов NOT, AND и OR.

Возможности связывания таблиц.

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

Существуют различные способы связывания таблиц:

прямое перечисление всех таблиц-источников и задание условий объединения в предложении WHERE;

применение подзапроса в предложении WHERE;

явное применение операций соединения:

CROSS JOIN (перекрестное) – прямое декартово произведение (каждая строка первой таблицы соединяется с каждой строкой второй таблицы);

NATURAL JOIN (естественное) – соединение внешнего ключа со связанным с ним ключом (одноименные столбцы);

INNER JOIN (эквисоединение) – выбор равных значений соответствующих столбцов таблиц А и В (столбцы задаются в предложении ON);

LEFT JOIN (левое (внешнее)) – все строки таблицы А, а также значения из тех строк таблицы В, которые имеют совпадающие значения в поле связи (отстутсвующие в правой таблице ячейки в результате заполняются значением NULL);

RIGHT JOIN (правое (внешнее)) – все строки таблицы В, а также значения из тех строк таблицы А, которые имеют совпадающие значения в поле связи;

FULL JOIN (полное) – объединяет левое и правое соединения и включает в конечном итоге все записи двух таблиц.

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

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

Вложенные подзапросы возможны только на выборку (команда SELECT), они в свою очередь могут использоваться в предложениях WHERE, FROM и SELECT. Вложенные запросы заключаются в скобки. Вложенные запросы обрабатываются во время исполнения основного запроса; результаты выполнения вложенного запроса передаются в основной запрос в виде данных (значений, столбцов), поэтому результаты подзапроса должны соответствовать типам данных, определенным в основном запросе (например, если вложенный подзапрос используется в сочетании с логическим оператором, например, «больше» или «меньше», то он должен возвращать единственное числовое или строковое значение).

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

 



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 667; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.195.8 (0.009 с.)