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; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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