2. DML
2
Data Manipulation Language (DML – язык
манипулирования данными) состоит из команд,
позволяющих изменять информацию в БД:
добавлять,
удалять,
модифицировать.
3. INSERT
3
INSERT [INTO] {table_name | view_name}
[(column_list)]
{
VALUES ( { DEFAULT | NULL | expression } [ ,...n ] )
| DEFAULT VALUES | select_statement
}
Добавляет запись в таблицу.
При указании значений конкретный полей вместо
использования каких-либо значений можно
использовать ключевое слово DEFAULT.
Вставка пустой строки приводит к добавлению пробела,
а не значения NULL.
4. INSERT, параметры
4
table_name, view_name
Имя таблицы или представления, которые принимают
данные.
VALUES
Ввод списка со значениями данных для вставки. Для
каждого столбца в column_list, если этот параметр указан
или присутствует в таблице, должно быть одно значение.
Список значений должен быть заключен в круглые
скобки.
5. INSERT, параметры
5
DEFAULT
Загрузка значений по умолчанию, определенных для
столбца.
Если для столбца не задано значение по умолчанию и он
может содержать значение NULL, вставляется значение
NULL.
В столбцы с типом данных timestamp вставляется
следующее значение временной метки.
expression
Константа, переменная или выражение.
DEFAULT VALUES
Заполняет новую строку значениями по умолчанию,
определенными для каждого столбца.
7. UPDATE
7
UPDATE {table_name | view_name} SET
{ column_name = { expression | DEFAULT | NULL }} [ ,...n ]
[ FROM { <table_source> } [ ,...n ] ]
[WHERE clause]
Изменяет существующие данные в таблице или
представлении.
8. UPDATE, параметры
8
SET
Задает список обновляемых имен столбцов или
переменных.
column_name
Столбец, содержащий обновляемые данные. Столбец с
именем column_name должен существовать в table_or
view_name.
expression
Переменная, символьное значение, выражение или
подзапрос выборки (заключенный в скобки), которые
возвращают единственное значение.
9. Update in-place
9
Производительность обновлений заметно возрастет при
выполнении следующих условий:
Изменяемые колонки не входят в кластеризованный
индекс
У таблицы не существует триггера на обновление
Для обновления одной строки:
Размер обновленной записи должен совпадать с размером
необновленнной.
Если на изменяемые колонки построен индекс, то он должен
быть неуникальным некластеризованным и колонки имеют
фиксированную длину.
Колонки могут находиться в данном индексе в том случае,
если в условии WHERE было задано точное соответствие и для
поиска строки использован именно этот индекс.
10. UPDATE, примеры
10
UPDATE SalesPerson SET Bonus = 6000,
CommissionPct = .10, SalesQuota = NULL
UPDATE Product SET ListPrice = ListPrice * 2
UPDATE Address SET PostalCode = 99999
WHERE PostalCode = '12345'
UPDATE Product SET Color = 'Metallic Red'
WHERE Name LIKE 'Road-250%' AND Color = 'Red'
11. UPDATE, примеры
11
UPDATE titles SET ytd_sales =
(SELECT sum(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.date IN (SELECT MAX(date) FROM sales))
FROM titles, sales
12. DELETE
12
DELETE [FROM] {table_name | view_name}
[WHERE clause]
Где clause = {search_conditions | CURRENT OF cursor_name}
WHERE
Указывает условия, используемые для ограничения
числа удаляемых строк.
Операции удаления с поиском. Например, WHERE
column_name = value.
Операции удаления по позиции используют
предложение CURRENT OF для указания курсора.
Удаление осуществляется в текущей позиции курсора.
13. DELETE, примеры
13
DELETE FROM ProductCostHistory
WHERE StandardCost > 1000.00
DELETE FROM Sales.SalesPersonQuotaHistory
WHERE SalesPersonID IN
(SELECT SalesPersonID FROM Sales.SalesPerson
WHERE SalesYTD > 2500000.00)
DELETE FROM titleauthor FROM authors a, titles t
WHERE a.au_id = titleauthor.au_id
AND titleauthor.title_id = t.title_id
AND t.title LIKE '%computers%'
14. DQL
14
DQL – язык получения данных, вывод данных.
SELECT [ ALL | DISTINCT ]
[ TOP expression [ PERCENT ] ]
<select_list>
[ FROM <table_source>]
[ WHERE <search_condition> ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
UNION [ ALL ] | EXCEPT | INTERSECT
15. SELECT, параметры
15
ALL
В результирующем наборе могут существовать
дублирующиеся строки.
DISTINCT
Вывод только уникальных строк.
TOP
Заданное число или процент строк будет возвращен из
результирующего набора запроса.
16. <select_list>. Список выбора
16
<select_list> = {
* |
{ table_name|view_name }.* |
{ [ { table_name|view_name }.] column_name |
expression
[ [ AS ] column_alias ] } [ ,...n ]
select_list
Столбцы, выбираемые в результирующий набор.
Допускается использование *.
[AS] column_alias
Альтернативное имя, которым можно заменить имя
столбца в результирующем наборе запроса.
17. Агрегатные функции
17
expression
Является константой, функцией. Как правило
используются агрегатные функции.
Агрегатные функции выполняют вычисление на наборе
значений и возвращают одиночное значение. Агрегатные
функции, за исключением COUNT, не учитывают
значения NULL.
Могут быть использованы в качестве выражений
(expression) только в следующих случаях:
Инструкции выбора для внешнего SELECT;
Инструкции выбора для вложенного SELECT;
Предложение HAVING.
18. Агрегатные функции
18
AVG ( [ ALL | DISTINCT ] expression )
Среднее арифметическое группы значений
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Возвращает количество элементов в группе (тип int).
COUNT(*) возвращает количество элементов в группе. В
том числе значения NULL и повторяющиеся значения.
SUM ( [ ALL | DISTINCT ] expression )
Возвращает сумму всех, либо только уникальных,
значений в выражении.
MAX ( [ ALL | DISTINCT ] expression )
MIN ( [ ALL | DISTINCT ] expression )
19. <table_source>. Источник
19
<table_source> = {table_or_view_name [ AS table_alias ]
| <joined_table> | derived_table [ AS ] table_alias } [ ,...n ]
<joined_table> = <table_source>
[ INNER | {{LEFT | RIGHT | FULL} [OUTER ] } ] JOIN
<table_source> ON <search_condition>
table_source
Указывает таблицу, представление или источник
производной таблицы.
[AS] table_alias
Псевдоним может использоваться как для удобства, так и
для различения таблиц во внутреннем соединении или
во вложенном запросе.
20. <table_source>. Источник, параметры
20
derived_table
Вложенный запрос, который извлекает строки из базы
данных.
<joined_table>
Результирующий набор, полученный из двух или более
таблиц <table_source>.
JOIN
Ключевое слово
ON <search_condition>
Задает условие, на котором основывается соединение.
Условие может указывать любой предикат.
21. Типы операции соединения
21
[INNER] JOIN
Возвращаются все совпадающие пары строк.
Несовпадающие строки из обеих таблиц отбрасываются.
SELECT users.name, likes.like
FROM users
JOIN likes ON users.id = likes.user_id;
22. Типы операции соединения
22
LEFT [ OUTER ] JOIN
Все значения из левой таблицы присутствуют в
результирующем наборе, если в правой таблице данные
по ключу пересечения отсутствуют – используется NULL.
SELECT users.name, likes.like
FROM users
LEFT JOIN likes ON users.id = likes.user_id;
23. Типы операции соединения
23
RIGHT [OUTER] JOIN
Все значения из правой таблицы присутствуют в
результирующем наборе, если в левой таблице данные
по ключу пересечения отсутствуют – используется NULL.
SELECT users.name, likes.like
FROM users
RIGHT JOIN likes ON users.id = likes.user_id;
24. Типы операции соединения
24
FULL [ OUTER ] JOIN
В результирующий набор включаются значения как из
левой, так и из правой таблицы, значения
несоответствующие ключу устанавливаются в NULL.
SELECT users.name, likes.like
FROM users
FULL JOIN likes ON users.id = likes.user_id;
25. <search_condition>. Условие поиска
25
<search_condition> =
[ NOT ] <predicate>
[ { AND | OR } [ NOT ] <predicate> ] [ ,...n ]
<predicate> = {
expression { = | ! = | > | > = | < | < = } expression
| string_expression [ NOT ] LIKE string_expression
| expression [ NOT ] BETWEEN expression AND
expression
| expression IS [ NOT ] NULL
| expression [ NOT ] IN ( subquery | expression [ ,...n ] )
| EXISTS ( subquery ) }
26. <search_condition>. Условие поиска, параметры
26
<predicate>
Выражение, возвращающее значения TRUE, FALSE или
UNKNOWN.
expression
Имя столбца, константа, функция, переменная.
LIKE
Обработка совпадений с шаблоном
BETWEEN
Обработка попадания в диапазон значений
IS [NOT] NULL
Поиск значений NULL
27. <search_condition>. Условие поиска, параметры
27
IN
Поиск выражения, основанного на выражении,
включенного или исключенного из списка.
subquery
Ограниченная инструкция SELECT.
EXISTS
Используется во вложенном запросе для проверки
существования строк, возвращенных вложенным
запросом.
28. GROUP BY
28
Группировка выбранного набора строк для получения
набора сводных строк по значениям одного или
нескольких столбцов или выражений.
Возвращается одна строка для каждой группы.
Используются агрегатные функции.
29. GROUP BY + COUNT(), пример
29
SELECT department_id
"Department Code",
COUNT(*) "No of Employees"
FROM employees
GROUP BY department_id;
30. GROUP BY + SUM(), пример
30
SELECT department_id,
SUM(salary)
FROM employees
GROUP BY department_id;
32. GROUP BY + COUNT() + SUM(), пример
32
SELECT department_id
"Department Code",
COUNT(*) "No of Employees",
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id;
33. GROUP BY по нескольким столбцам
33
SELECT department_id
"Department Code",
job_id,
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id, job_id;
34. GROUP BY, примеры
34
SELECT department_id, SUM(salary)
FROM employees
WHERE MANAGER_ID = 103
GROUP BY department_id;
SELECT department_id, count(*)
FROM employees
GROUP BY department_id
HAVING count(*) > 2;
35. HAVING
35
Определяет условие поиска для группы или
статистического выражения.
Обычно используется совместно с GROUP BY.
HAVING <search_condition>
36. ORDER BY
36
Сортирует данные, возвращаемые запросом по
заданному списку столбцов
Ограничение числа возвращаемых строк указанным
диапазоном
ORDER BY order_by_expression [ ASC | DESC ] [ ,...n ]
[ <offset_fetch> ]
37. ORDER BY, параметры
37
order_by_expression
столбец или выражение, по которому производится
сортировка результирующего набора запроса.
ASC | DESC
Порядок сортировки значений в указанном столбце — по
возрастанию или по убыванию.
<offset_fetch>
Количество сток, которые необходимо пропустить,
прежде чем будет начат возврат строк из выражения
запроса либо количество строк, которые необходимо
отобразить.
38. Взаимодействие между запросами
38
UNION
Указывает на то, что несколько результирующих наборов
следует объединить и возвратить в виде единого
результирующего набора. Опция ALL объединит в
результирующий набор все строки.
EXCEPT
Вычитание из результатов запроса, указанного слева от
оператора EXCEPT результатов правого запроса.
INTERSECT
Возвращает все различные значения, входящие в
результаты выполнения обеих запросов оператора
INTERSECT.