SlideShare a Scribd company logo
1 of 38
Управление данными
Лекция 8
DML
2
 Data Manipulation Language (DML – язык
манипулирования данными) состоит из команд,
позволяющих изменять информацию в БД:
 добавлять,
 удалять,
 модифицировать.
INSERT
3
INSERT [INTO] {table_name | view_name}
[(column_list)]
{
VALUES ( { DEFAULT | NULL | expression } [ ,...n ] )
| DEFAULT VALUES | select_statement
}
 Добавляет запись в таблицу.
 При указании значений конкретный полей вместо
использования каких-либо значений можно
использовать ключевое слово DEFAULT.
 Вставка пустой строки приводит к добавлению пробела,
а не значения NULL.
INSERT, параметры
4
table_name, view_name
 Имя таблицы или представления, которые принимают
данные.
VALUES
 Ввод списка со значениями данных для вставки. Для
каждого столбца в column_list, если этот параметр указан
или присутствует в таблице, должно быть одно значение.
Список значений должен быть заключен в круглые
скобки.
INSERT, параметры
5
DEFAULT
 Загрузка значений по умолчанию, определенных для
столбца.
 Если для столбца не задано значение по умолчанию и он
может содержать значение NULL, вставляется значение
NULL.
 В столбцы с типом данных timestamp вставляется
следующее значение временной метки.
expression
 Константа, переменная или выражение.
DEFAULT VALUES
 Заполняет новую строку значениями по умолчанию,
определенными для каждого столбца.
INSERT, примеры
6
INSERT titles
VALUES('BU2222', 'Faster!', 'business', '1389',
NULL, NULL, NULL, NULL, 'ok', '06/17/87')
INSERT titles(title_id, title, type, pub_id, notes, pubdate)
VALUES ('BU1237', 'Get Going!', 'business', '1389',
'great', '06/18/86')
INSERT INTO newauthors
SELECT *
FROM authors
WHERE city = 'San Francisco'
UPDATE
7
UPDATE {table_name | view_name} SET
{ column_name = { expression | DEFAULT | NULL }} [ ,...n ]
[ FROM { <table_source> } [ ,...n ] ]
[WHERE clause]
 Изменяет существующие данные в таблице или
представлении.
UPDATE, параметры
8
SET
 Задает список обновляемых имен столбцов или
переменных.
column_name
 Столбец, содержащий обновляемые данные. Столбец с
именем column_name должен существовать в table_or
view_name.
expression
 Переменная, символьное значение, выражение или
подзапрос выборки (заключенный в скобки), которые
возвращают единственное значение.
Update in-place
9
Производительность обновлений заметно возрастет при
выполнении следующих условий:
 Изменяемые колонки не входят в кластеризованный
индекс
 У таблицы не существует триггера на обновление
 Для обновления одной строки:
 Размер обновленной записи должен совпадать с размером
необновленнной.
 Если на изменяемые колонки построен индекс, то он должен
быть неуникальным некластеризованным и колонки имеют
фиксированную длину.
 Колонки могут находиться в данном индексе в том случае,
если в условии WHERE было задано точное соответствие и для
поиска строки использован именно этот индекс.
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'
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
DELETE
12
DELETE [FROM] {table_name | view_name}
[WHERE clause]
 Где clause = {search_conditions | CURRENT OF cursor_name}
WHERE
 Указывает условия, используемые для ограничения
числа удаляемых строк.
 Операции удаления с поиском. Например, WHERE
column_name = value.
 Операции удаления по позиции используют
предложение CURRENT OF для указания курсора.
Удаление осуществляется в текущей позиции курсора.
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%'
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
SELECT, параметры
15
ALL
 В результирующем наборе могут существовать
дублирующиеся строки.
DISTINCT
 Вывод только уникальных строк.
TOP
 Заданное число или процент строк будет возвращен из
результирующего набора запроса.
<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
expression
 Является константой, функцией. Как правило
используются агрегатные функции.
 Агрегатные функции выполняют вычисление на наборе
значений и возвращают одиночное значение. Агрегатные
функции, за исключением COUNT, не учитывают
значения NULL.
 Могут быть использованы в качестве выражений
(expression) только в следующих случаях:
 Инструкции выбора для внешнего SELECT;
 Инструкции выбора для вложенного SELECT;
 Предложение HAVING.
Агрегатные функции
18
AVG ( [ ALL | DISTINCT ] expression )
 Среднее арифметическое группы значений
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
 Возвращает количество элементов в группе (тип int).
 COUNT(*) возвращает количество элементов в группе. В
том числе значения NULL и повторяющиеся значения.
SUM ( [ ALL | DISTINCT ] expression )
 Возвращает сумму всех, либо только уникальных,
значений в выражении.
MAX ( [ ALL | DISTINCT ] expression )
MIN ( [ ALL | DISTINCT ] expression )
<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
 Псевдоним может использоваться как для удобства, так и
для различения таблиц во внутреннем соединении или
во вложенном запросе.
<table_source>. Источник, параметры
20
derived_table
 Вложенный запрос, который извлекает строки из базы
данных.
<joined_table>
 Результирующий набор, полученный из двух или более
таблиц <table_source>.
JOIN
 Ключевое слово
ON <search_condition>
 Задает условие, на котором основывается соединение.
Условие может указывать любой предикат.
Типы операции соединения
21
[INNER] JOIN
Возвращаются все совпадающие пары строк.
Несовпадающие строки из обеих таблиц отбрасываются.
SELECT users.name, likes.like
FROM users
JOIN likes ON users.id = likes.user_id;
Типы операции соединения
22
LEFT [ OUTER ] JOIN
 Все значения из левой таблицы присутствуют в
результирующем наборе, если в правой таблице данные
по ключу пересечения отсутствуют – используется NULL.
SELECT users.name, likes.like
FROM users
LEFT JOIN likes ON users.id = likes.user_id;
Типы операции соединения
23
RIGHT [OUTER] JOIN
 Все значения из правой таблицы присутствуют в
результирующем наборе, если в левой таблице данные
по ключу пересечения отсутствуют – используется NULL.
SELECT users.name, likes.like
FROM users
RIGHT JOIN likes ON users.id = likes.user_id;
Типы операции соединения
24
FULL [ OUTER ] JOIN
 В результирующий набор включаются значения как из
левой, так и из правой таблицы, значения
несоответствующие ключу устанавливаются в NULL.
SELECT users.name, likes.like
FROM users
FULL JOIN likes ON users.id = likes.user_id;
<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 ) }
<search_condition>. Условие поиска, параметры
26
<predicate>
 Выражение, возвращающее значения TRUE, FALSE или
UNKNOWN.
expression
 Имя столбца, константа, функция, переменная.
LIKE
 Обработка совпадений с шаблоном
BETWEEN
 Обработка попадания в диапазон значений
IS [NOT] NULL
 Поиск значений NULL
<search_condition>. Условие поиска, параметры
27
IN
 Поиск выражения, основанного на выражении,
включенного или исключенного из списка.
subquery
 Ограниченная инструкция SELECT.
EXISTS
 Используется во вложенном запросе для проверки
существования строк, возвращенных вложенным
запросом.
GROUP BY
28
 Группировка выбранного набора строк для получения
набора сводных строк по значениям одного или
нескольких столбцов или выражений.
 Возвращается одна строка для каждой группы.
 Используются агрегатные функции.
GROUP BY + COUNT(), пример
29
SELECT department_id
"Department Code",
COUNT(*) "No of Employees"
FROM employees
GROUP BY department_id;
GROUP BY + SUM(), пример
30
SELECT department_id,
SUM(salary)
FROM employees
GROUP BY department_id;
GROUP BY + SUM(), пример
31
GROUP BY + COUNT() + SUM(), пример
32
SELECT department_id
"Department Code",
COUNT(*) "No of Employees",
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id;
GROUP BY по нескольким столбцам
33
SELECT department_id
"Department Code",
job_id,
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id, job_id;
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;
HAVING
35
 Определяет условие поиска для группы или
статистического выражения.
 Обычно используется совместно с GROUP BY.
HAVING <search_condition>
ORDER BY
36
 Сортирует данные, возвращаемые запросом по
заданному списку столбцов
 Ограничение числа возвращаемых строк указанным
диапазоном
ORDER BY order_by_expression [ ASC | DESC ] [ ,...n ]
[ <offset_fetch> ]
ORDER BY, параметры
37
order_by_expression
 столбец или выражение, по которому производится
сортировка результирующего набора запроса.
ASC | DESC
 Порядок сортировки значений в указанном столбце — по
возрастанию или по убыванию.
<offset_fetch>
 Количество сток, которые необходимо пропустить,
прежде чем будет начат возврат строк из выражения
запроса либо количество строк, которые необходимо
отобразить.
Взаимодействие между запросами
38
UNION
 Указывает на то, что несколько результирующих наборов
следует объединить и возвратить в виде единого
результирующего набора. Опция ALL объединит в
результирующий набор все строки.
EXCEPT
 Вычитание из результатов запроса, указанного слева от
оператора EXCEPT результатов правого запроса.
INTERSECT
 Возвращает все различные значения, входящие в
результаты выполнения обеих запросов оператора
INTERSECT.

More Related Content

Similar to Управление Данными. Лекция 8

Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Ontico
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
бд шпора2
бд шпора2бд шпора2
бд шпора2
elgin690
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3
student_kai
 
0044
00440044
0044
JIuc
 

Similar to Управление Данными. Лекция 8 (13)

Базы данных лекция №8
Базы данных лекция №8Базы данных лекция №8
Базы данных лекция №8
 
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...
 
лабраб 7
лабраб 7лабраб 7
лабраб 7
 
22 - Базы данных. Представления
22 - Базы данных. Представления22 - Базы данных. Представления
22 - Базы данных. Представления
 
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
 
18 - Базы данных. Общая структура оператора SELECT
18 - Базы данных. Общая структура оператора SELECT18 - Базы данных. Общая структура оператора SELECT
18 - Базы данных. Общая структура оператора SELECT
 
Troubleshooting my sql_performance_addons
Troubleshooting my sql_performance_addonsTroubleshooting my sql_performance_addons
Troubleshooting my sql_performance_addons
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
Обзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в ExcelОбзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в Excel
 
бд шпора2
бд шпора2бд шпора2
бд шпора2
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3
 
основы и трюки Excel
основы и трюки Excelосновы и трюки Excel
основы и трюки Excel
 
0044
00440044
0044
 

More from Dmitriy Krukov

More from Dmitriy Krukov (14)

Мировые информационные ресурсы. Лекция 7
Мировые информационные ресурсы. Лекция 7Мировые информационные ресурсы. Лекция 7
Мировые информационные ресурсы. Лекция 7
 
Мировые информационные ресурсы. Лекция 6
Мировые информационные ресурсы. Лекция 6Мировые информационные ресурсы. Лекция 6
Мировые информационные ресурсы. Лекция 6
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 
Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4
 
Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3
 
Мировые информационные ресурсы. Лекция 1
Мировые информационные ресурсы. Лекция 1Мировые информационные ресурсы. Лекция 1
Мировые информационные ресурсы. Лекция 1
 
Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2
 
Управление Данными. Лекция 7
Управление Данными. Лекция 7Управление Данными. Лекция 7
Управление Данными. Лекция 7
 
Управление Данными. Лекция 6
Управление Данными. Лекция 6Управление Данными. Лекция 6
Управление Данными. Лекция 6
 
Управление Данными. Лекция 5
Управление Данными. Лекция 5Управление Данными. Лекция 5
Управление Данными. Лекция 5
 
Управление Данными. Лекция 4
Управление Данными. Лекция 4Управление Данными. Лекция 4
Управление Данными. Лекция 4
 
Управление Данными. Лекция 3
Управление Данными. Лекция 3Управление Данными. Лекция 3
Управление Данными. Лекция 3
 
Управление Данными. Лекция 1
Управление Данными. Лекция 1Управление Данными. Лекция 1
Управление Данными. Лекция 1
 
Управление Данными. Лекция 2
Управление Данными. Лекция 2Управление Данными. Лекция 2
Управление Данными. Лекция 2
 

Управление Данными. Лекция 8

  • 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  Заполняет новую строку значениями по умолчанию, определенными для каждого столбца.
  • 6. INSERT, примеры 6 INSERT titles VALUES('BU2222', 'Faster!', 'business', '1389', NULL, NULL, NULL, NULL, 'ok', '06/17/87') INSERT titles(title_id, title, type, pub_id, notes, pubdate) VALUES ('BU1237', 'Get Going!', 'business', '1389', 'great', '06/18/86') INSERT INTO newauthors SELECT * FROM authors WHERE city = 'San Francisco'
  • 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;
  • 31. GROUP BY + SUM(), пример 31
  • 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.

Editor's Notes

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38