SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...DevDay
Даниил Каменский — ведущий специалист проектов SQLinfo.ru (http://sqlinfo.ru/) и Webew.ru (http://webew.ru/), архитектор баз данных в компании ЦВТ. Даниил на Моем Круге: http://kamenskiydaniil.moikrug.ru/.
Расширенный SQL в MySQL и PostgreSQL. Сравнение возможностей
Расширение SQL:
— пользовательские переменные;
— оконные функции;
— рекурсивный обход деревьев;
— расширения ANSI SQL для работы с таблицами.
Особенности и отличия базовых функций в MySQL и PostgreSQL:
— типы таблиц особенности физического размещения;
— работа с индексами;
— оптимизация подзапросов;
— трудности перевода: примеры.
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Семантические сети и семантический Web
RDF
Семантические словари
Open Graph
Schema.org
Синтаксические правила
Синтаксис RDFa
Синтаксис Microdata
Синтаксис JSON-LD
Использованы материалы:
http://www.slideshare.net/Alik_Kirillovich/semantic-web-i
https://ru.wikipedia.org/wiki/Семантическая_сеть
https://habrahabr.ru/company/yandex/blog/211638/
Сценарии, выполняемые на стороне клиента
Фреймворки JavaScript
Сценарии, выполняемые на стороне сервера
RPC, SOAP
REST
WSDL
XML, JSON
AJAX
Сценарии работы web-сервера
По материалам книги: Джеймс Ли, Брент Уэр Использование Linux, Apache, MySQL и PHP для разработки Web-приложений, Издательский дом "Вильямс".
Введение
Понятие информатизации
Информатизация в России
Понятие информации
Понятие информационных ресурсов
Классификация информационных ресурсов
Формы электронных информационных ресурсов
По материалам книги: Блюмин А. М., Феоктистов Н. А. Мировые информационные ресурсы: — М.: «Дашков и Ко», 2010.
Web 1.0, Web 2.0, Web 3.0
Архитектура информационных ресурсов
Front-end, Back-end
API
Толстый клиент, Тонкий клиент
Web-клиент, Web-сервер
Специальные файлы и директории на web-сервере
URI, URL, URN, IRI, IDN
Использованы материалы: http://www.html5rocks.com/ru/tutorials/internals/howbrowserswork/
SQL-ник DevDay. Каменский. Расширенный SQL в MySQL и PostgreSQL. Сравнение во...DevDay
Даниил Каменский — ведущий специалист проектов SQLinfo.ru (http://sqlinfo.ru/) и Webew.ru (http://webew.ru/), архитектор баз данных в компании ЦВТ. Даниил на Моем Круге: http://kamenskiydaniil.moikrug.ru/.
Расширенный SQL в MySQL и PostgreSQL. Сравнение возможностей
Расширение SQL:
— пользовательские переменные;
— оконные функции;
— рекурсивный обход деревьев;
— расширения ANSI SQL для работы с таблицами.
Особенности и отличия базовых функций в MySQL и PostgreSQL:
— типы таблиц особенности физического размещения;
— работа с индексами;
— оптимизация подзапросов;
— трудности перевода: примеры.
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Семантические сети и семантический Web
RDF
Семантические словари
Open Graph
Schema.org
Синтаксические правила
Синтаксис RDFa
Синтаксис Microdata
Синтаксис JSON-LD
Использованы материалы:
http://www.slideshare.net/Alik_Kirillovich/semantic-web-i
https://ru.wikipedia.org/wiki/Семантическая_сеть
https://habrahabr.ru/company/yandex/blog/211638/
Сценарии, выполняемые на стороне клиента
Фреймворки JavaScript
Сценарии, выполняемые на стороне сервера
RPC, SOAP
REST
WSDL
XML, JSON
AJAX
Сценарии работы web-сервера
По материалам книги: Джеймс Ли, Брент Уэр Использование Linux, Apache, MySQL и PHP для разработки Web-приложений, Издательский дом "Вильямс".
Введение
Понятие информатизации
Информатизация в России
Понятие информации
Понятие информационных ресурсов
Классификация информационных ресурсов
Формы электронных информационных ресурсов
По материалам книги: Блюмин А. М., Феоктистов Н. А. Мировые информационные ресурсы: — М.: «Дашков и Ко», 2010.
Web 1.0, Web 2.0, Web 3.0
Архитектура информационных ресурсов
Front-end, Back-end
API
Толстый клиент, Тонкий клиент
Web-клиент, Web-сервер
Специальные файлы и директории на web-сервере
URI, URL, URN, IRI, IDN
Использованы материалы: http://www.html5rocks.com/ru/tutorials/internals/howbrowserswork/
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.