Forwarded from Senior SQL Developer
Сравнение результатов двух SQL запросов выборки: EXCEPT, INTERSECT и SELECT
Оператор EXCEPT используется для вычитания результатов одного запроса из другого запроса. Другими словами, он возвращает только те строки, которые присутствуют в первом запросе, но отсутствуют во втором запросе.
Оператор INTERSECT используется для получения только тех строк, которые присутствуют в обоих запросах.
Оператор SELECT используется для выборки данных из таблицы.
Оператор EXCEPT вычитает результаты одного запроса из другого, а оператор INTERSECT находит только те строки, что присутствуют в обоих запросах. SELECT используется для выборки данных из таблицы. При использовании SQLite для работы с базами данных важно учитывать особенности каждого из этих операторов.
Оператор EXCEPT используется для вычитания результатов одного запроса из другого запроса. Другими словами, он возвращает только те строки, которые присутствуют в первом запросе, но отсутствуют во втором запросе.
Оператор INTERSECT используется для получения только тех строк, которые присутствуют в обоих запросах.
Оператор SELECT используется для выборки данных из таблицы.
Оператор EXCEPT вычитает результаты одного запроса из другого, а оператор INTERSECT находит только те строки, что присутствуют в обоих запросах. SELECT используется для выборки данных из таблицы. При использовании SQLite для работы с базами данных важно учитывать особенности каждого из этих операторов.
Forwarded from Postgres Guru | Базы данных 💐
⚙️ Сохраняем историю запросов psql в файл.
Такое может пригодиться для дальнейшего анализа запросов, расследования инцидентов, связанных с безопасностью базы данных, или просто чтобы разобраться кто накосячил и снёс пол базы 😅 А может у вас родился какой-то гениальный запрос, который вы не можете больше повторить, а тут он в файле сохранится 😉
Для установки файла для записи воспользуемся следующей командой psql:
HISTFILE - это переменная, которая определяет файл для истории запросов.
Если эта переменная не определена, то значение берется из переменной окружения PSQL_HISTORY. Если и эта переменная не определена, то значением по умолчанию будет ~/.psql_history - для Linux систем и APPDATA%\postgresql\psql_history - для Windows.
В нашем примере psql будет вести отдельный файл с историей команд для каждой базы данных в кластере. Мы можем вместо DBNAME указать конкретное имя базы, и тогда история будет вестись только для нее.
Также мы можем поместить данную команду в файл .psqlrc и тогда нам не придется прописывать эту команду каждый раз при запуске psql.
#psql
Такое может пригодиться для дальнейшего анализа запросов, расследования инцидентов, связанных с безопасностью базы данных, или просто чтобы разобраться кто накосячил и снёс пол базы 😅 А может у вас родился какой-то гениальный запрос, который вы не можете больше повторить, а тут он в файле сохранится 😉
Для установки файла для записи воспользуемся следующей командой psql:
\set HISTFILE ~/.psql_history- :DBNAMEHISTFILE - это переменная, которая определяет файл для истории запросов.
Если эта переменная не определена, то значение берется из переменной окружения PSQL_HISTORY. Если и эта переменная не определена, то значением по умолчанию будет ~/.psql_history - для Linux систем и APPDATA%\postgresql\psql_history - для Windows.
В нашем примере psql будет вести отдельный файл с историей команд для каждой базы данных в кластере. Мы можем вместо DBNAME указать конкретное имя базы, и тогда история будет вестись только для нее.
Также мы можем поместить данную команду в файл .psqlrc и тогда нам не придется прописывать эту команду каждый раз при запуске psql.
#psql
Forwarded from Senior SQL Developer
Создание поля, объединяющего имя и зарплату в выборке из таблицы пользователей
Для создания поля, которое будет включать в себя и имена, и зарплату, можно использовать функцию CONCAT(). Она объединяет две или более строковые величины в одну строку.
Пример SQL-запроса для создания поля new_field на фото.
В примере мы выбираем таблицу users и создаем новое поле с помощью функции CONCAT(). Внутри функции указываем два поля, которые хотим объединить - name и salary. Также задаем новое имя для созданного поля - new_field, используя AS.
Теперь в результате выполнения запроса в выборке будет присутствовать новое поле new_field, которое будет содержать имя пользователя и его зарплату.
Для создания поля, которое будет включать в себя и имена, и зарплату, можно использовать функцию CONCAT(). Она объединяет две или более строковые величины в одну строку.
Пример SQL-запроса для создания поля new_field на фото.
В примере мы выбираем таблицу users и создаем новое поле с помощью функции CONCAT(). Внутри функции указываем два поля, которые хотим объединить - name и salary. Также задаем новое имя для созданного поля - new_field, используя AS.
Теперь в результате выполнения запроса в выборке будет присутствовать новое поле new_field, которое будет содержать имя пользователя и его зарплату.
Forwarded from Senior SQL Developer
#вопросы_с_собеседований
Что такое нормализация и денормализация?
Нормализация отношений в SQL призвана организовать информацию в базе данных таким образом, чтобы она не занимала много места и с ней было удобно работать. Это удаление избыточных данных, устранение дублей, идентификация наборов связанных данных через PRIMARY KEY, etc.
Соответственно, денормализация является обратным процессом, который вносит в нормализованную таблицу избыточные данные.
Что такое нормализация и денормализация?
Нормализация отношений в SQL призвана организовать информацию в базе данных таким образом, чтобы она не занимала много места и с ней было удобно работать. Это удаление избыточных данных, устранение дублей, идентификация наборов связанных данных через PRIMARY KEY, etc.
Соответственно, денормализация является обратным процессом, который вносит в нормализованную таблицу избыточные данные.
Forwarded from Postgres Guru | Базы данных 💐
👨🏻🎓 Управление параметрами транзакции в PostgreSQL.
Мы уже с вами знаем как открывать транзакцию, фиксировать ее и откатывать изменения, а также как ставить точки сохранения внутри транзакции.
Теперь давайте разберемся какими параметрами транзакции мы можем управлять. Одни из таких параметров - это READ WRITE и READ ONLY.
READ WRITE - это транзакция для записи и чтения данных.
READ ONLY - транзакция только для чтения.
Пример:
#queries
Мы уже с вами знаем как открывать транзакцию, фиксировать ее и откатывать изменения, а также как ставить точки сохранения внутри транзакции.
Теперь давайте разберемся какими параметрами транзакции мы можем управлять. Одни из таких параметров - это READ WRITE и READ ONLY.
READ WRITE - это транзакция для записи и чтения данных.
READ ONLY - транзакция только для чтения.
Пример:
BEGIN READ ONLY; - открываем транзакцию только для чтенияCREATE TABLE test (id int); - пытаемся создать таблицу testERROR: cannot execute CREATE TABLE in a read-only transaction - получаем ошибку#queries
Forwarded from Senior SQL Developer
Можно попробовать использовать функцию COUNT() в сочетании с оператором GROUP BY.
Предположим, у нас есть таблица "orders" с колонками "customer_name" и "order_date", и мы хотим посчитать, сколько заказов было сделано каждым клиентом. Мы можем написать следующий SQL-запрос:
SELECT customer_name, COUNT(*) as order_count
FROM orders
GROUP BY customer_name
Этот запрос выберет все уникальные значения из колонки "customer_name" в таблице "orders" и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами "customer_name" и "order_count", в которой каждая строка будет показывать клиента и количество его заказов.Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Простой Python | Программирование
set.update
Метод update() обновляет текущее множество, добавляя элементы из другого множества (или любого другого итерируемого). Если предмет присутствует в обоих множествах, в обновленном множестве будет присутствовать только один экземпляр этого предмета.
#практика
Метод update() обновляет текущее множество, добавляя элементы из другого множества (или любого другого итерируемого). Если предмет присутствует в обоих множествах, в обновленном множестве будет присутствовать только один экземпляр этого предмета.
#практика
Forwarded from Postgres Guru | Базы данных 💐
📟 Полезные функции PostgreSQL (функция AVG ()).
Продолжаем знакомиться с агрегатными функциями PostgreSQL. Сегодня у нас на очереди функция AVG().
Эта функция позволяетизмерить среднюю температуру по больнице посчитать среднее значение параметров в колонке.
Возьмем для примера нашу таблицу с данными по зарплатам сотрудников people:
Посчитаем среднюю зарплату всех сотрудников. Для этого используем следующий запрос:
Получим следующий результат:
В нашем случае у нас получилось ровное число. Но в других ситуациях у вас может получиться число с точкой и большим кол-вом знаков после нее. Чтобы привести число в более читаемый вид и сократить кол-во знаков после точки, можно использовать оператор numeric. Например так:
На выходе получим число с двумя знаками после точки.
#pgfunc
Продолжаем знакомиться с агрегатными функциями PostgreSQL. Сегодня у нас на очереди функция AVG().
Эта функция позволяет
Возьмем для примера нашу таблицу с данными по зарплатам сотрудников people:
Id| name |age|address | zp-+-----––+--–+---------+–––––1| Maxim |32|California|200002| Nastia|25| Texas |150003| Ilya |23| Norway |200004| Dima |25| Rich-Mond|650005| Sasha |27| Texas |85000Посчитаем среднюю зарплату всех сотрудников. Для этого используем следующий запрос:
SELECT AVG(zp) FROM people;Получим следующий результат:
avg-------------------- 41000(1 row)В нашем случае у нас получилось ровное число. Но в других ситуациях у вас может получиться число с точкой и большим кол-вом знаков после нее. Чтобы привести число в более читаемый вид и сократить кол-во знаков после точки, можно использовать оператор numeric. Например так:
SELECT AVG(zp)::numeric(10,2) FROM people;На выходе получим число с двумя знаками после точки.
#pgfunc
Forwarded from Senior SQL Developer
Различие команд UNION и UNION ALL
В SQL команда UNION и UNION ALL используются для объединения результатов двух или более запросов.
1. Команда UNION объединяет результаты двух запросов и возвращает уникальные записи. Если два запроса возвращают одинаковые записи, то в результате будет только одна.
2. Команда UNION ALL также объединяет результаты двух запросов, но в отличие от UNION, возвращает все записи, включая повторяющиеся.
Использование UNION и UNION ALL зависит от конкретной ситуации. Если необходимо получить только уникальные записи, то следует использовать UNION. Если необходимо получить все записи, включая повторяющиеся, то следует использовать UNION ALL.
В SQL команда UNION и UNION ALL используются для объединения результатов двух или более запросов.
1. Команда UNION объединяет результаты двух запросов и возвращает уникальные записи. Если два запроса возвращают одинаковые записи, то в результате будет только одна.
2. Команда UNION ALL также объединяет результаты двух запросов, но в отличие от UNION, возвращает все записи, включая повторяющиеся.
Использование UNION и UNION ALL зависит от конкретной ситуации. Если необходимо получить только уникальные записи, то следует использовать UNION. Если необходимо получить все записи, включая повторяющиеся, то следует использовать UNION ALL.
Forwarded from в IT и выйти
Студент пишет презентацию о рисках нейросетей при помощи ChatGPT.
Как говорится, работаем с первоисточниками.
@encryptedch
Как говорится, работаем с первоисточниками.
@encryptedch
Forwarded from Postgres Guru | Базы данных 💐
📟 Функции задержки выполнения в PostgreSQL.
В случае необходимости задержки выполнения процесса в PostgreSQL есть несколько функций.
Практической пользы от этих функций я не придумал 🤔 Но для целей тестирования кода, например, или эмуляции каких-то блокировок или зависших процессов они вполне могут сгодиться.
Одной из таких функций является pg_sleep (). В качестве параметра ей передается кол-во секунд, на которое нужна задержка. Значение может быть и дробным числом.
Пример выполнения:
или
Для удобства использования в PostgreSQL предусмотрены производные функции от pg_sleep(). Это pg_sleep_for() - принимает в качестве значения интервал, на который нужно "заснуть". Здесь уже можно указывать значения и в минутах, например так:
Еще есть функция pg_sleep_until(), которая позволяет задать определенное время выхода из сна, например вот так:
Время выхода из сна может быть и дольше, в зависимости от загрузки сервера СУБД.
⚠️ Баловаться с этими функциями на рабочем сервере СУБД нужно с осторожностью! Если вы например используете одну из этих функций в сеансе, который уже держит какие-то ресурсы блокировками, то рискуете подвесить и другие пользовательские сеансы, которым нужны теже самые ресурсы.
#pgfunc
В случае необходимости задержки выполнения процесса в PostgreSQL есть несколько функций.
Практической пользы от этих функций я не придумал 🤔 Но для целей тестирования кода, например, или эмуляции каких-то блокировок или зависших процессов они вполне могут сгодиться.
Одной из таких функций является pg_sleep (). В качестве параметра ей передается кол-во секунд, на которое нужна задержка. Значение может быть и дробным числом.
Пример выполнения:
SELECT pg_sleep(5);или
SELECT pg_sleep(1.2);Для удобства использования в PostgreSQL предусмотрены производные функции от pg_sleep(). Это pg_sleep_for() - принимает в качестве значения интервал, на который нужно "заснуть". Здесь уже можно указывать значения и в минутах, например так:
SELECT pg_sleep_for('3 minutes');Еще есть функция pg_sleep_until(), которая позволяет задать определенное время выхода из сна, например вот так:
SELECT pg_sleep_until('tomorrow 05:00');Время выхода из сна может быть и дольше, в зависимости от загрузки сервера СУБД.
⚠️ Баловаться с этими функциями на рабочем сервере СУБД нужно с осторожностью! Если вы например используете одну из этих функций в сеансе, который уже держит какие-то ресурсы блокировками, то рискуете подвесить и другие пользовательские сеансы, которым нужны теже самые ресурсы.
#pgfunc
Forwarded from Хабр
Mojo может стать крупнейшим достижением в области разработки языков программирования за последние десятилетия
Mojo — это новый язык программирования, основанный на Python, который устраняет имеющиеся у него проблемы производительности и развёртывания.
Mojo — это новый язык программирования, основанный на Python, который устраняет имеющиеся у него проблемы производительности и развёртывания.
Forwarded from Хабр Новости
Исследователь и реверс-инженер Николас Старке обнаружил в коде прошивки для контроллера твердотельного накопителя Kingston KC2000 (M.2 NVMe SSD) текст баллады The Scientist («Учёный») британской рок-группы Coldplay.
#разработка #НеожиданныйКроссовер
#разработка #НеожиданныйКроссовер