SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔎 Поиск последних изменений в таблице в Oracle Database с помощью запроса

SELECT ... FROM ... VERSIONS BETWEEN TIMESTAMP <start_dt> AND <end_dt>

Возвращаются изменения в диапазоне дат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💻PostgreSQL: исполнение запроса из Bash-скрипта

Для выполнения запроса в PostgreSQL от имени пользователя 'postgres' используйте команду:
sudo -u postgres psql -d dbname -c "SELECT * FROM table;"

Здесь dbname — это название вашей БД, table – имя таблицы.
Разумеется, используем права суперпользователя sudo для переключения пользователя на postgres, psql является инструментом командной строки PostgreSQL, а ключ -c нужен для выполнения конкретного запроса.

Для более аккуратного форматирования вывода можно использовать ключ -t, который выводит данные построчно, и -X для того, чтобы .psqlrc не обрабатывался командой psql.

Подобное выполнение SQL-запросов прямо из оболочки может быть особенно актуальным, если вы настраиваете какую-нибудь систему по ssh.
Пишите, кстати, если сталкивались с такими кейсами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Приемы очистки данных в SQL

1. Выявление и удаление дублирующих записей

SELECT DISTINCT column1, column2, ...
FROM table_name;

В качестве альтернативы можно использовать GROUP BY, чтобы сгруппировать похожие записи вместе, а затем удалить количество записей в каждой группе.

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;


2. Стандартизация текстовых полей

UPDATE table_name
SET column_name = UPPER(column_name);


Вы также можете использовать функцию REPLACE для замены определенных символов или строк в текстовых полях. Например:

UPDATE table_name
SET column_name = REPLACE(column_name, 'OldString', 'NewString');


3. Обработка отсутствующих или нулевых значений

SELECT column1, column2, ...
FROM table_name
WHERE column_name IS NULL;


Затем вы можете удалить эти записи или заменить отсутствующие значения значением по умолчанию. Например:

UPDATE table_name
SET column_name = 'DefaultValue'
WHERE column_name IS NULL;


4. Удаление кривых символов

UPDATE table_name
SET column_name = REPLACE(column_name, 'InvalidChar', '');

UPDATE table_name
SET column_name = REGEXP_REPLACE(column_name, '[^a-zA-Z0–9 ]', '');


5. Обработка выбросов

Чтобы определить и удалить выбросов, мы можем использовать функции AVG и STDDEV для расчета среднего и стандартного отклонения столбца.

SELECT AVG(column_name), STDDEV(column_name)
FROM table_name;


6. Корректировка форматов дат

Функция STR_TO_DATE может преобразовать строку в формат даты. Синтаксис функции следующий:

SELECT STR_TO_DATE(date_string, format_string)
FROM table_name;


7. Очистка текстовых данных


Функция REPLACE может заменить подстроку в строке. Функция TRIM позволяет удалить из строки ведущие и последующие пробелы. Синтаксис выглядит следующим образом:

SELECT UPPER(column_name)
FROM table_name;


SELECT REPLACE(column_name, 'old_string', 'new_string')
FROM table_name;
SELECT TRIM(column_name)
FROM table_name;


8. Проверка типов данных

Важно убедиться, что ваши данные имеют правильный тип данных. Для проверки и преобразования типов данных можно использовать функции CAST или CONVERT. Например:

SELECT CAST(column_name AS INT)
FROM table_name;

SELECT CONVERT(column_name, DATE)
FROM table_name;
👍4
Уроки по T-SQL

Предлагаем вашему просмотру подробные 7 уроков.

В базу уроков входят основные понятия, работа с временными таблицами, разбор выборки данных и многое другое

📘Видео урок
👍1
SQLMesh - это фреймворк для преобразования данных, который позволяет командам, работающим с данными, использовать преимущества DevOps. Она позволяет ученым, аналитикам и инженерам эффективно выполнять и развертывать преобразования данных, написанные на SQL или Python.

SQLMesh обеспечивает точность и эффективность построения конвейеров данных с помощью пробвинутого решения DataOps для преобразования, тестирования и совместной работы.

Виртуальные среды данных позволяют команде разработчиков создавать динамические представления данных, гарантируя, что таблицы не будут создаваться более одного раза. Модульные тесты, аудиты и Data Diff обеспечивают проверку на протяжении всего рабочего процесса разработки, что позволяет легко работать с данными.

pip install sqlmesh

Github
Подробнее
Документация
👍2
#вопросы_с_собеседований

Как распарсить строку в SQL?

Часто возникает необходимость распарсить строку в SQL запросе, чтобы получить отдельные элементы. Существует несколько способов это сделать.

1. Использование функции SUBSTRING

Для извлечения отдельных элементов из строки можно использовать функцию SUBSTRING.

2. Использование функции CHARINDEX

Для извлечения подстроки из строки можно использовать функцию CHARINDEX.

3. Использование функции PARSENAME

Для извлечения отдельных элементов из строки, разделенных определенным символом, можно использовать функцию PARSENAME.
👍7
Каким будет вывод INSTR(‘FREETIMELEARN’, ‘M’)?
Anonymous Quiz
29%
7
12%
6
17%
MELEARN
13%
FREETI
29%
Посмотреть ответ
👍4
Задача SQL

У вас в базе данных есть две таблицы: TABLE1 и TABLE2. Нужно ответить на один простой вопрос: отработает ли данный запрос или упадет с ошибкой? И объяснить, почему.

select id,sum(value) over(partition by i order by y), * from table1


Примечание: все поля существуют в таблице и соответствуют нужному типу данных.

Ответ

Да, отработает. Классический пример аналитической функции, внутри которой сначала выполняется группировка (partition by), потом выполняется сортировка (order by) и применяется агрегирующая функция. В данном случае все написано правильно. Этот вопрос проверяет у кандидата знание оконных функций.
👍14
Экранирование двоичных данных в SQL

В современном веб-разработке базы данных используются повсеместно. При работе с БД часто возникает необходимость хранить двоичные данные, такие как изображения или видео. Однако, есть риск того, что двоичные данные могут содержать символы, которые могут быть восприняты как специальные символы в SQL, что может привести к непреднамеренной модификации данных.

Экранирование двоичных данных

Для экранирования двоичных данных в SQL мы можем использовать функцию mysqli_real_escape_string(). Эта функция автоматически экранирует специальные символы, такие как одинарные кавычки, двойные кавычки и обратные слеши. Чтобы использовать эту функцию, мы должны сначала установить соединение с базой данных, а затем вызвать функцию, передав ей двоичные данные в качестве аргумента.

Пример экранирования двоичных данных в PDO

«PDO – PHP Data Objects – это прослойка, которая предлагает универсальный способ работы с несколькими базами данных.»

В PDO можно экранировать двоичные данные с помощью метода quote(). Этот метод автоматически экранирует специальные символы и возвращает заключенную в кавычки строку. Для использования этого метода мы должны сначала установить соединение с базой данных, а затем вызвать метод quote(), передав ему двоичные данные в качестве аргумента.
👍4🔥1
Как модифицировать данные в нескольких таблицах и вернуть id затронутых записей в одном запросе?

WITH
updated AS (
UPDATE table1
SET x = 5, y = 6 WHERE z > 7
RETURNING id
),
inserted AS (
INSERT INTO table2 (x, y, z) VALUES (5, 7, 10)
RETURNING id
)
SELECT 'table1_updated' AS action, id
FROM updated
UNION ALL
SELECT 'table2_inserted' AS action, id
FROM inserted;
👍6😱1
💻Как создать процедуру в PostgreSQL?

Итак, для создания процедуры в PostgreSQL используется язык PL/pgSQL, который является расширением языка SQL. Вот пример создания простой хранимой процедуры в PostgreSQL:
CREATE OR REPLACE FUNCTION 'имя_процедуры(параметры)' RETURNS 'тип_результата' AS $$
DECLARE
-- переменные_локальные тип_переменной
BEGIN
-- Тело процедуры
-- Может содержать SQL запросы, управляющие конструкции и другие операторы
END;
$$ LANGUAGE plpgsql;


Пример простой процедуры, которая выводит текстовое сообщение:
CREATE OR REPLACE FUNCTION hello_world()
RETURNS VOID AS $$
BEGIN
RAISE NOTICE 'Hello, World!';
END;
$$ LANGUAGE plpgsql;


После выполнения этого запроса, процедура hello_world будет создана в вашей базе данных. Чтобы вызвать эту процедуру, используйте следующий запрос:
SELECT hello_world();

Таким образом, вы можете создавать и вызывать процедуры в PostgreSQL с помощью PL/pgSQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🖥 BACKUP DATABASE в SQL

Важно регулярно создавать резервные копии базы данных, чтобы данные не были потеряны в случае повреждения базы данных (БД). В SQL мы можем создавать резервные копии БД с помощью оператора BACKUP DATABASE.

Например:

BACKUP DATABASE orders
TO DISK = 'C:\orders_backup.bak';

Здесь мы создаем файл резервной копии базы данных orders на диске C с именем orders_backup.bak.

Примечание: Распространено использование расширения .bak для файлов резервных копий БД, однако это не является обязательным.

Резервное копирование только новых изменений в SQL
В SQL мы также можем сделать резервную копию только новых изменений по сравнению с предыдущей резервной копией, используя команду WITH DIFFERENTIAL. Например:

BACKUP DATABASE orders
TO DISK = 'C:\orders_backup.bak'
WITH DIFFERENTIAL;

Здесь мы добавляем только новые изменения в предыдущий файл резервной копии. Следовательно, эта команда работает быстрее, нежели создание резервной копии БД с нуля.

Восстановление базы данных из резервной копии

Для восстановления файла резервной копии в системе управления базой данных (СУБД) используется оператор RESTORE DATABASE. Например:

RESTORE DATABASE orders
FROM DISK = 'C:\orders_backup.bak';

Здесь мы восстанавливаем файл резервной копии orders_backup.bak в базе данных orders.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Что такое векторные базы данных?

Читать статью
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
SQLMC — официальный инструмент Kali Linux для проверки всех URL-адресов домена на наличие SQL-инъекций.
👍2🎄2