Как посчитать для каждой строки таблицы количество вхождений этой строки в другую таблицу?
Есть две таблицы course и history
В таблице course: id и name
В таблице history: id, course_id, status
Нужно для каждой строчки course посчитать количество строк в history
На выходе должно быть см. скрин
Ответ
#db
👉 @database_info
Есть две таблицы course и history
В таблице course: id и name
В таблице history: id, course_id, status
Нужно для каждой строчки course посчитать количество строк в history
На выходе должно быть см. скрин
Ответ
SELECT name AS course_name, COUNT(history.id) AS quantity
FROM course
LEFT JOIN history ON course_id = course.id AND status = 1
GROUP BY name#db
👉 @database_info
👍5
Хранимые процедуры в SQL
В этой статье разберемся с хранимыми процедурами. Напомню, что мы работаем в СУБД MySQL, если вы работаете в другой СУБД, то некоторые синтаксические конструкции могут отличаться, но суть остается такой же.
https://telegra.ph/Hranimye-procedury-v-SQL-04-16
#SQL
👉 @database_info
В этой статье разберемся с хранимыми процедурами. Напомню, что мы работаем в СУБД MySQL, если вы работаете в другой СУБД, то некоторые синтаксические конструкции могут отличаться, но суть остается такой же.
https://telegra.ph/Hranimye-procedury-v-SQL-04-16
#SQL
👉 @database_info
Telegraph
Хранимые процедуры в SQL
В этой статье разберемся с хранимыми процедурами. Напомню, что мы работаем в СУБД MySQL, если вы работаете в другой СУБД, то некоторые синтаксические конструкции могут отличаться, но суть остается такой же. Общие сведения Итак, хранимые процедуры в SQL —…
👍3👎1🔥1
Скрипт для создания бекапов БД с помощью Percona XtraBackup
Скрипт предназначен для создания резервных копий баз данных (в субботу — полная резервная копия, в остальные дни — инкрементальные).
#Percona #XtraBackup
👉 @database_info
Скрипт предназначен для создания резервных копий баз данных (в субботу — полная резервная копия, в остальные дни — инкрементальные).
#!/bin/bash
# Скрипт делает резервную копию БД
# если сервер MySQL не запущен, то выходим
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
ping_output=`$MYADMIN ping 2>&1`; ping_alive=$(( ! $? ))
if [ $ping_alive = 0 ]; then
logger -t mysql-backup 'MYADMIN ping FAIL'
exit
fi
BACKUP="/usr/bin/innobackupex-1.5.1 --no-lock"
workdir="/usr/local/tmp/"
DofW=`date +'%u'`
full=0
incr=0
# если суббота - делаем полный бекап, иначе инкрементальный
if [ "$DofW" = "6" ];
then
full=1
logger -t mysql_backup 'make full backup'
else
incr=1
logger -t mysql_backup 'make incremental backup'
fi
if [ $full == '1' ];
then
logger -t mysql_backup 'start mysql full backup'
dump="mysql"`date +%Y%m%d`"full.tar"
ext=".gz"
# при распаковке использовать ключ -i, например tar -ixvf backup.tar
$BACKUP --user=USER --password=PASSWORD --stream=tar ./ | pigz -p 5 > ${workdir}${dump}${ext}
logger -t mysql_backup 'finish mysql full backup, start rsync'
# с помощью rsync копируем резервную копию на удаленный сервер
rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup
logger -t mysql_backup 'finish rsync'
rm -f ${workdir}/mysql*
fi
if [ $incr == '1' ];
then
logger -t mysql_backup 'start mysql incremental backup'
# получаем значение LSN из последнего лога бекапа
LSN=`cat /usr/local/sbin/innobackupex.log | grep "The latest check point (for incremental):" | awk -F"'" '{print $2}' | tail -n 1`
echo $LSN > /usr/local/sbin/lsn
dump="mysql"`date +%Y%m%d`"incr"
archiv="mysql"`date +%Y%m%d`"incr.tar.gz"
ext=".tar.gz"
$BACKUP --user=USER --password=PASSWORD --incremental --incremental-lsn=$LSN --stream=xbstream ./ > ${workdir}${dump}.xbstream
logger -t mysql_backup 'finish mysql incremental backup, start tar'
cd ${workdir}
tar -czf $archiv $dump.xbstream
rm -f ${workdir}/*.xbstream
logger -t mysql_backup 'finish tar, start rsync'
# с помощью rsync копируем резервную копию на удаленный сервер
rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup
logger -t mysql_backup 'finish rsync'
rm -f ${workdir}/mysql*
fi
#Percona #XtraBackup
👉 @database_info
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с json в PostgreSQL
JSON (JavaScript Object Notation) является одним из наиболее распространенных форматов для передачи и хранения данных. PostgreSQL поддерживает работу с JSON, что позволяет эффективно использовать его возможности для обработки и анализа данных.
JSON является форматом для хранения и передачи данных в форме объектов, массивов и других значений, которые можно легко преобразовать в текстовую строку. PostgreSQL поддерживает хранение данных в формате JSON, а также множество функций для обработки и анализа JSON-данных.
источник
#db
👉 @database_info
JSON (JavaScript Object Notation) является одним из наиболее распространенных форматов для передачи и хранения данных. PostgreSQL поддерживает работу с JSON, что позволяет эффективно использовать его возможности для обработки и анализа данных.
JSON является форматом для хранения и передачи данных в форме объектов, массивов и других значений, которые можно легко преобразовать в текстовую строку. PostgreSQL поддерживает хранение данных в формате JSON, а также множество функций для обработки и анализа JSON-данных.
источник
#db
👉 @database_info
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Пример рекурсивного запроса для работы с иерархией в postgres
СУБД postgres предоставляет специальный синтаксис для работы с иерархиями с помощью рекурсивного запроса. Такой запрос начинается с ключевых слов with recursive.
В этом видео мы создадим простую иерархию географических объектов в виде таблицы. Затем напишем рекурсивный запрос, чтобы наглядно отобразить весь путь от одного из самых низкоуровневых элементов и до самой вершины иерархии. Таким образом, мы как бы собираем по пути "хлебные крошки" (breadcrumbs), которые могут пригодиться, если этот путь мы хотим отобразить пользователю.
источник
#db
👉 @database_info
СУБД postgres предоставляет специальный синтаксис для работы с иерархиями с помощью рекурсивного запроса. Такой запрос начинается с ключевых слов with recursive.
В этом видео мы создадим простую иерархию географических объектов в виде таблицы. Затем напишем рекурсивный запрос, чтобы наглядно отобразить весь путь от одного из самых низкоуровневых элементов и до самой вершины иерархии. Таким образом, мы как бы собираем по пути "хлебные крошки" (breadcrumbs), которые могут пригодиться, если этот путь мы хотим отобразить пользователю.
источник
#db
👉 @database_info
👍2👎1
Media is too big
VIEW IN TELEGRAM
Вы инженер связи, слаботочник или ИТ-шник, или безопасник? Обратите внимание на эту выставку, не пропускаю ее никогда. Мало вообще посещаю мероприятия не-онлайн, но тут делаю исключения.
Точка притяжения для телеком-специалистов, инженеров и сисадминов. Связь, телеком, интернет вещей, ЦОДы и оборудование.
На @sviaz_expocentr вход свободный по электронной регистрации на сайте.
Если ИТ и телекоммуникации ваша работа, увидимся на "Связи" 2024.
👉 @database_info
Точка притяжения для телеком-специалистов, инженеров и сисадминов. Связь, телеком, интернет вещей, ЦОДы и оборудование.
На @sviaz_expocentr вход свободный по электронной регистрации на сайте.
Если ИТ и телекоммуникации ваша работа, увидимся на "Связи" 2024.
👉 @database_info
Media is too big
VIEW IN TELEGRAM
SQL (Основы языка, база PostgreSQL)
00:00 Введение
01:32 Реляционные базы данных
05:22 Установка PostgreSQL
06:46 Подключение к базе через Idea
10:31 CREATE DATABASE
11:44 CREATE SCHEMA
13:35 CREATE TABLE
15:10 INSERT
16:11 SELECT
16:27 Множественный INSERT
17:57 DROP TABLE
18:17 UNIQUE, NOT NULL
19:34 PRIMARY KEY
20:16 Автогенерация PRIMARY KEY
21:58 LIMIT, OFFSET
24:40 WHERE
27:50 Все группы SQL команд
30:15 UPDATE
32:00 FOREIGN KEY
37:43 Diagram. Визуализация таблиц
38:06 SELECT из нескольких таблиц
41:00 ORDER BY (сортировка)
42:00 DISTINCT
42:20 COUNT
42:32 SUM, AVG
43:16 Дополнительные возможности SELECT
45:22 DELETE (Каскадное удаление)
49:33 Полезные функции
52:18 Задание
источник
#db
👉 @database_info
00:00 Введение
01:32 Реляционные базы данных
05:22 Установка PostgreSQL
06:46 Подключение к базе через Idea
10:31 CREATE DATABASE
11:44 CREATE SCHEMA
13:35 CREATE TABLE
15:10 INSERT
16:11 SELECT
16:27 Множественный INSERT
17:57 DROP TABLE
18:17 UNIQUE, NOT NULL
19:34 PRIMARY KEY
20:16 Автогенерация PRIMARY KEY
21:58 LIMIT, OFFSET
24:40 WHERE
27:50 Все группы SQL команд
30:15 UPDATE
32:00 FOREIGN KEY
37:43 Diagram. Визуализация таблиц
38:06 SELECT из нескольких таблиц
41:00 ORDER BY (сортировка)
42:00 DISTINCT
42:20 COUNT
42:32 SUM, AVG
43:16 Дополнительные возможности SELECT
45:22 DELETE (Каскадное удаление)
49:33 Полезные функции
52:18 Задание
источник
#db
👉 @database_info
👍6
Media is too big
VIEW IN TELEGRAM
SQL (проектирование баз данны, база PostgreSQL)
00:00 Нормализация базы данных
05:32 OneToMany
07:10 OneToOne
07:31 ManyToMany
08:55 Практика. Готовим тестовые данные.
11:48 JOIN
14:00 INNER JOIN
18:15 CROSS JOIN
19:38 LEFT JOIN
22:07 Визуальное сравнение разных JOIN
24:13 RIGHT JOIN
24:49 FULL JOIN
25:13 GROUP BY, HAVING
27:38 ALTER
30:11 Что еще можно изучить?
33:00 Задания
источник
#db
👉 @database_info
00:00 Нормализация базы данных
05:32 OneToMany
07:10 OneToOne
07:31 ManyToMany
08:55 Практика. Готовим тестовые данные.
11:48 JOIN
14:00 INNER JOIN
18:15 CROSS JOIN
19:38 LEFT JOIN
22:07 Визуальное сравнение разных JOIN
24:13 RIGHT JOIN
24:49 FULL JOIN
25:13 GROUP BY, HAVING
27:38 ALTER
30:11 Что еще можно изучить?
33:00 Задания
источник
#db
👉 @database_info
👍3
Потенциальные проблемы с автоинкрементным ключом. MySQL <8.0, PostgreSQL
В данной публикации я поделюсь двумя основными причинами, по которым я предпочитаю избегать использования автоинкрементных полей в PostgreSQL и MySQL в будущих проектах. Вместо этого я предпочитаю использовать UUID-поля, за исключением случаев, когда есть очень веские аргументы против этого подхода.
https://habr.com/ru/articles/807751/
original https://samwho.dev/blog/practical-problems-with-auto-increment/
#db
👉 @database_info
В данной публикации я поделюсь двумя основными причинами, по которым я предпочитаю избегать использования автоинкрементных полей в PostgreSQL и MySQL в будущих проектах. Вместо этого я предпочитаю использовать UUID-поля, за исключением случаев, когда есть очень веские аргументы против этого подхода.
https://habr.com/ru/articles/807751/
original https://samwho.dev/blog/practical-problems-with-auto-increment/
#db
👉 @database_info
👍1
Learning Snowflake SQL and Scripting: Generate, Retrieve, and Automate Snowflake Data
Автор: Alan Beaulieu (2023)
Чтобы помочь вам стать профессионалом в области Snowflake, в этом кратком, но исчерпывающем руководстве рассматриваются основы и лучшие практики использования языков SQL и Scripting в Snowflake. Разработчики и специалисты по работе с данными узнают, как генерировать, модифицировать и запрашивать данные в реляционной системе управления базами данных Snowflake, а также как применять аналитические функции для создания отчетов. Автор также покажет, как создавать сценарии, хранимые функции и хранимые процедуры для возврата наборов данных с помощью Snowflake Scripting. Эта книга идеально подходит для тех, кто только начинает работать с базами данных и нуждается в выполнении запросов и отчетов на базе данных Snowflake или переходит с таких баз данных, как Oracle, SQL Server или MySQL, на облачные платформы.
#db
👉 @database_info
Автор: Alan Beaulieu (2023)
Чтобы помочь вам стать профессионалом в области Snowflake, в этом кратком, но исчерпывающем руководстве рассматриваются основы и лучшие практики использования языков SQL и Scripting в Snowflake. Разработчики и специалисты по работе с данными узнают, как генерировать, модифицировать и запрашивать данные в реляционной системе управления базами данных Snowflake, а также как применять аналитические функции для создания отчетов. Автор также покажет, как создавать сценарии, хранимые функции и хранимые процедуры для возврата наборов данных с помощью Snowflake Scripting. Эта книга идеально подходит для тех, кто только начинает работать с базами данных и нуждается в выполнении запросов и отчетов на базе данных Snowflake или переходит с таких баз данных, как Oracle, SQL Server или MySQL, на облачные платформы.
#db
👉 @database_info
👍3
NULL-значения в PostgreSQL: правила и исключения
Навскидку многим кажется, что они знакомы с поведением NULL-значений в PostgreSQL, однако иногда неопределённые значения преподносят сюрпризы. Мы с коллегами написали статью на основе моего доклада с PGConf.Russia 2022 — он был полностью посвящён особенностям обработки NULL-значений в Postgres.
https://habr.com/ru/companies/postgrespro/articles/697300/
#db
👉 @database_info
Навскидку многим кажется, что они знакомы с поведением NULL-значений в PostgreSQL, однако иногда неопределённые значения преподносят сюрпризы. Мы с коллегами написали статью на основе моего доклада с PGConf.Russia 2022 — он был полностью посвящён особенностям обработки NULL-значений в Postgres.
https://habr.com/ru/companies/postgrespro/articles/697300/
#db
👉 @database_info
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Шпаргалка по SQL (postgres), которая выручает меня на собесах
Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.
Данная информация предполагает знание основ языка запросов и я надеюсь, она окажется полезной для разработчиков, которые сейчас активно ищут работу а также, что ты прочитаешь этот текст до конца и добавишь свой вопрос к перечню (ну или поправишь неточности в существующих)
https://habr.com/ru/articles/745948/
#db
👉 @database_info
Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.
Данная информация предполагает знание основ языка запросов и я надеюсь, она окажется полезной для разработчиков, которые сейчас активно ищут работу а также, что ты прочитаешь этот текст до конца и добавишь свой вопрос к перечню (ну или поправишь неточности в существующих)
https://habr.com/ru/articles/745948/
#db
👉 @database_info
👍5
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Курс по T-SQL
Создание таблиц
Заполнение таблиц
Блоки запроса: select, from, where, group by
Условие отбора. Использование LIKE, BETWEEN, AND, OR
NULL и как с этим работат
Изменение данных: DELETE WHERE, UPDATE WHERE
Псевдонимы столбцов и как убрать дубликаты строк при выводе на экран
Таблицы: постоянные, в виде подзапроса, временные #, представления view
Связи между таблицами:inner join, left join, right join, cross join, full join
Рекурсивные соединения таблиц или как соединить одинаковые таблицы
источник
#db
👉 @database_info
Создание таблиц
Заполнение таблиц
Блоки запроса: select, from, where, group by
Условие отбора. Использование LIKE, BETWEEN, AND, OR
NULL и как с этим работат
Изменение данных: DELETE WHERE, UPDATE WHERE
Псевдонимы столбцов и как убрать дубликаты строк при выводе на экран
Таблицы: постоянные, в виде подзапроса, временные #, представления view
Связи между таблицами:inner join, left join, right join, cross join, full join
Рекурсивные соединения таблиц или как соединить одинаковые таблицы
источник
#db
👉 @database_info
👍5