Однажды Джоэл Спольски в своей знаменитой презентации «You Suck at Excel» сказал, что существуют сотни коммерческих продуктов, вместо которых можно было бы использовать табличку Excel.
В этой шутке очень высокая доля правды. Excel благородя интуитивному UI, формулам и VBA дает возможность пользователям самим решать широкий спектр задач, избавляя от необходимости каждый раз обращаться за помощью к разработчикам или внедрять в компании новый продукт. Excel используется везде от мелкой розницы до Fortune 500 и CERN.
Пользовательский интерфейс Excel оказался, настолько удачным – ни один из конкурентов так и отошел от привычных таблиц. Для пользователя Excel интерфейс Google Spreadsheet будет привычным и интуитивно понятным. А вот по своим функциональным возможностям Excel до сих пор превосходит большинство конкурентов.
Как с помощью двух мощных инструментов с открытым исходным кодом можно совместить привычный для пользователей интерфейс, надежность и мощь SQL, гибкость Python и командную работу как в Google Spreadsheet? Давайте рассмотрим это на простом примере.
📌Читать дальше
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥3
Избыточные индексы в SQL Server - это явление значительно более общее, чем мне бы хотелось. Я встречал это довольно часто. Это означает, что данное сообщение в блоге все еще будет иметь значительную целевую аудиторию!
Статья Brent Ozar дает исчерпывающую информацию об избыточных/дублирующих индексах, что они означают, почему это плохо, и что нужно с этим делать.
Несколько лет назад Guy Glantser также опубликовал статью об удалении избыточных индексов. Она весьма полезна для нахождения всех избыточных индексов во всех таблицах в заданной базе данных.
Но вот чего не хватает в этих статьях, так это возможности легко генерировать команды Drop/Disable для этих избыточных индексов.
Кроме того, что если имеются "похожие" индексы, которые только "частично" избыточны, и, следовательно, недостаточно просто удалить один из них? Иначе это может негативно сказаться на производительности некоторых запросов.
Есть ли способ учесть все эти проблемы?
Каждый из них? Повсюду? Сразу?
В посте я собираюсь показать вам, как обнаружить, получить подробную информацию и иметь возможность удалить КАЖДЫЙ избыточных индекс ЛЮБОЙ формы и размера:
▪Полностью дублируемые индексы
▪Избыточные индексы на основе ключевых столбцов + включенных столбцов
▪Частично избыточные индексы только на основе ключевых столбцов
▪Все таблицы
▪Все таблицы с минимальным числом строк
▪В конкретной базе данных
▪Во всех доступных базах данных
📌 Читать дальше
📌 Скрипт
📌 Индексы: обнаружение неиспользуемых индексов
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥1
🟡 Дайджест полезных материалов из мира sql за неделю
Почитать:
— Проблемы студентов курсов при работе с реальными данными
— Что такое «хорошо» и что такое «плохо» в NiFi. Часть 3
— pgmig — история разработки инструмента управления изменениями в БД или чего нам не хватило в Liquibase и Flyway
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— Когда SQL решает, и задачки для прокачки
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— What is SQL?
— YugabyteDB official Dockerfile
— Golang Database Migration With Golang Migrate and Sqlc
— Window Functions: A comprehensive guide to mastery.
— MySQL CheatSheet
— Roadmap to Become a Database Engineer
— Securing Your Graph Database: Best Practices for Apache AGE
— Counters with YugabyteDB
— Stored Procedures: The Secret to Improving Your Database Applications
— Master the Technique of 'Update Only When Changes Occur' in SQL! Boost Your Database Efficiency
Посмотреть:
🌐 SQL Data Analytics Project (PART 2) | Data Analyst Portfolio Project
Хорошего дня!
❤️ Лайк, если полезно
@sqlhub
Почитать:
— Проблемы студентов курсов при работе с реальными данными
— Что такое «хорошо» и что такое «плохо» в NiFi. Часть 3
— pgmig — история разработки инструмента управления изменениями в БД или чего нам не хватило в Liquibase и Flyway
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— Когда SQL решает, и задачки для прокачки
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— What is SQL?
— YugabyteDB official Dockerfile
— Golang Database Migration With Golang Migrate and Sqlc
— Window Functions: A comprehensive guide to mastery.
— MySQL CheatSheet
— Roadmap to Become a Database Engineer
— Securing Your Graph Database: Best Practices for Apache AGE
— Counters with YugabyteDB
— Stored Procedures: The Secret to Improving Your Database Applications
— Master the Technique of 'Update Only When Changes Occur' in SQL! Boost Your Database Efficiency
Посмотреть:
🌐 SQL Data Analytics Project (PART 2) | Data Analyst Portfolio Project
Хорошего дня!
❤️ Лайк, если полезно
@sqlhub
❤14👍6🔥2
Redis и Planetscale - лучшие варианты при запуске нового проекта. Более подробная информация и интересные статистические данные приведены в полном тексте отчета.
📌Читать
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥1
Распределенный SQL: Альтернатива шардированию баз данных
Шардирование баз данных — это процесс разделения данных на более мелкие части, называемые «шарды». Шардинг обычно используется, когда необходимо масштабировать записи. Распределенный SQL представляет новый способ масштабирования реляционных баз данных с использованием стратегии сегментирования, полностью автоматизированной и прозрачной для приложений. Подробнее ты узнаешь из этой статьи.
🚀 Читать статью
@sqlhub
Шардирование баз данных — это процесс разделения данных на более мелкие части, называемые «шарды». Шардинг обычно используется, когда необходимо масштабировать записи. Распределенный SQL представляет новый способ масштабирования реляционных баз данных с использованием стратегии сегментирования, полностью автоматизированной и прозрачной для приложений. Подробнее ты узнаешь из этой статьи.
🚀 Читать статью
@sqlhub
👍6❤4🔥1
🔥Большая подборка бесплатных SQL курсов.
▪ Интерактивный тренажер по SQL (— практические задания на создание SQL-запросов. Каждый шаг включает минимальные теоретические аспекты по базам данных или языку SQL, примеры похожих запросов и пояснение к реализации
▪ Марафон данных: первое знакомство с SQL и Python — это симулятор профессии дата-аналитика, который познакомит вас с базами данных и методами работы с ними
▪ Знакомство с SQLite (4.6 из 5) — этот небольшой курс покажет, как использовать SQLite в повседневной работе. Вы научитесь загружать, анализировать и выгружать данные, а также познакомитесь с разными типами данных
▪ Введение в базы данных - курс посвящен структурированному хранению данных, основами SQL, принципами использования баз данных в приложениях, обзор нереляционных способов хранения данных
▪ Погружение в СУБД — курс для тех, кто уже имеет некоторый опыт проектирования баз данных и разработки приложений и хочет расширить свои знания
🌐 Youtube
▪ Реляционные базы данных. SQL (39 видео) — курс раскрывает все аспекты реляционных баз данных, начиная от определения и создания баз данных, схем, таблиц и полей этих таблиц (DDL), и заканчивая запросами к этим таблицам (DML)
▪ Практика по SQL
▪ Основы SQL (18 видео) — объясняют базовые концепции языка: операторы, фильтрация, сортировка, группировка, декомпозиция и т. д.
▪ Уроки по SQL для начинающих (25 видео) — эти уроки помогут быстро разобраться с основами
12 Англоязычных курсов
Платформы: Stepik, Coursera, Udacity, Udemy и Kaggle.
1. Databases and SQL for Data Science with Python
2. SQL for Data Science
3. Introduction to Databases and SQL Querying
4. Intro to Relational Databases
5. Introduction to Structured Query Language (SQL)
6. Advanced Databases and SQL Querying
7. SQL for Data Analysis
8. Oracle SQL – A Complete Introduction
9. Intro to SQL
10. Advanced SQL
11. Oracle SQL Basics
12. Beginners Guide to SQL
👍 Лайк, если полезно
@Sqlhub
▪ Интерактивный тренажер по SQL (— практические задания на создание SQL-запросов. Каждый шаг включает минимальные теоретические аспекты по базам данных или языку SQL, примеры похожих запросов и пояснение к реализации
▪ Марафон данных: первое знакомство с SQL и Python — это симулятор профессии дата-аналитика, который познакомит вас с базами данных и методами работы с ними
▪ Знакомство с SQLite (4.6 из 5) — этот небольшой курс покажет, как использовать SQLite в повседневной работе. Вы научитесь загружать, анализировать и выгружать данные, а также познакомитесь с разными типами данных
▪ Введение в базы данных - курс посвящен структурированному хранению данных, основами SQL, принципами использования баз данных в приложениях, обзор нереляционных способов хранения данных
▪ Погружение в СУБД — курс для тех, кто уже имеет некоторый опыт проектирования баз данных и разработки приложений и хочет расширить свои знания
▪ Реляционные базы данных. SQL (39 видео) — курс раскрывает все аспекты реляционных баз данных, начиная от определения и создания баз данных, схем, таблиц и полей этих таблиц (DDL), и заканчивая запросами к этим таблицам (DML)
▪ Практика по SQL
▪ Основы SQL (18 видео) — объясняют базовые концепции языка: операторы, фильтрация, сортировка, группировка, декомпозиция и т. д.
▪ Уроки по SQL для начинающих (25 видео) — эти уроки помогут быстро разобраться с основами
12 Англоязычных курсов
Платформы: Stepik, Coursera, Udacity, Udemy и Kaggle.
1. Databases and SQL for Data Science with Python
2. SQL for Data Science
3. Introduction to Databases and SQL Querying
4. Intro to Relational Databases
5. Introduction to Structured Query Language (SQL)
6. Advanced Databases and SQL Querying
7. SQL for Data Analysis
8. Oracle SQL – A Complete Introduction
9. Intro to SQL
10. Advanced SQL
11. Oracle SQL Basics
12. Beginners Guide to SQL
👍 Лайк, если полезно
@Sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42❤4🔥4
Forwarded from PHP Academy
Media is too big
VIEW IN TELEGRAM
PHP, PDO SQL Injection
SQL Injection минимум который должен знать каждый разработчик код которого работает в production
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации базы данных
11:47 Защита с помощью placeholder
15:49 Защита там где placeholder не применимы
источник
@phpshka
SQL Injection минимум который должен знать каждый разработчик код которого работает в production
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации базы данных
11:47 Защита с помощью placeholder
15:49 Защита там где placeholder не применимы
источник
@phpshka
👍8❤2🥰1
🔍 ScyllaDB в K8S: как справляться с интенсивными рабочими нагрузками на спотовых экземплярах без простоев
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
Здесь стоит обратить внимание вот на что:
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:
Переходим в облако
ПРОДОЛЖЕНИЕ
@sqlhub
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
docker run -p 9042:9042 -p 7002:7000 -p 7001:7001 -p 9160:9160 -p 9180:9180 --name scylla --hostname scylla -d scylladb/scylla --smp 1 --developer-mode 1
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
import "github.com/gocql/gocql"
func Connect(config Config) (*gocql.Session, error) {
cluster := gocql.NewCluster(config.Hosts...)
cluster.Keyspace = config.KeySpace
cluster.CQLVersion = "3.11"
cluster.RetryPolicy = &gocql.ExponentialBackoffRetryPolicy{
NumRetries: 5, Min: time.Millisecond * 5, Max: time.Second * 5}
cluster.ProtoVersion = 3
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
cluster.ConnectTimeout = time.Second * 10
cluster.Consistency = gocql.One
if config.Timeout != nil {
cluster.Timeout = *config.Timeout
}
cluster.Authenticator = gocql.PasswordAuthenticator{
Username: config.Username, //'cassandra' по умолчанию
Password: config.Password, //'cassandra' по умолчанию
}
session, err := cluster.CreateSession()
if err != nil {
return nil, err
}
return session, nil
}
Здесь стоит обратить внимание вот на что:
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:
func Ping(session *gocql.Session) error {
var str = new(string)
if err := session.Query("SELECT uuid() FROM system.local;").Scan(str); err != nil {
return err
}
if str == nil || len(*str) == 0 {
return errors.New("failed sanity check")
}
return nil
}
// альтернатива «select 1;» в SQL
Переходим в облако
ПРОДОЛЖЕНИЕ
@sqlhub
👍10❤1🔥1
Llama 2 - отличная модель, но она не очень хорошо справляется с преобразованием текста в SQL запросы.
Приходится прибегать к тонкой настройке 💡.
Вышла отличная библиотека для Llama 2 преобразования текста в SQL.
git clone https://github.com/run-llama/modal_finetune_sql.git
▪GIthub
▪Ipynb
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
🟡 Дайджест полезных материалов из мира :sql за неделю
Почитать:
— PDM и почему он вечно тормозит
— Объяснения по шардинга баз данных
— Высокодоступный MySQL на конвейере
— Топ-5 инструментов для GitHub 2024
— Оптимизация SQL-запросов в Oracle
— Navigating Databases with Python: A Beginner-Friendly Guide
— A Guide to Backup and Recovery of SQL Azure Database
— GROUP BY clause in PostgreSQL
— 8 Completely FREE Big Data Resources
— Oracle to PostgreSQL code migration pain
— Serve Less, Logic Less
— Gérer des clés étrangères avec SQLite
— SQL Data Types: A Comprehensive Overview
— A Powerful Tool for Data Engineers: Apache Doris 2.0.0 is Production-Ready!
— Transaction Isolation Levels and why we should care
Посмотреть:
🌐 SQL Full Course 2023 | SQL For Beginners | MySQL Full Course
🌐 План обучения SQL на 30 дней C НУЛЯ
Хорошего дня!
@sqlhub
Почитать:
— PDM и почему он вечно тормозит
— Объяснения по шардинга баз данных
— Высокодоступный MySQL на конвейере
— Топ-5 инструментов для GitHub 2024
— Оптимизация SQL-запросов в Oracle
— Navigating Databases with Python: A Beginner-Friendly Guide
— A Guide to Backup and Recovery of SQL Azure Database
— GROUP BY clause in PostgreSQL
— 8 Completely FREE Big Data Resources
— Oracle to PostgreSQL code migration pain
— Serve Less, Logic Less
— Gérer des clés étrangères avec SQLite
— SQL Data Types: A Comprehensive Overview
— A Powerful Tool for Data Engineers: Apache Doris 2.0.0 is Production-Ready!
— Transaction Isolation Levels and why we should care
Посмотреть:
🌐 SQL Full Course 2023 | SQL For Beginners | MySQL Full Course
🌐 План обучения SQL на 30 дней C НУЛЯ
Хорошего дня!
@sqlhub
👍11🔥4❤1
⚡Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Машинное обучение: @ai_machinelearning_big_data
Go: @Golang_google
C#: @csharp_ci
Базы данных: sql
Python: @python_job_interview
C/C++/: @cpluspluc
Data Science: @data_analysis_ml
Devops: @devOPSitsec
Rust: @rust_code
Javascript: @javascriptv
React: @react_tg
PHP: @phpshka
Docker: @docker
Android: @android_its
Мобильная разработка: @mobdevelop
Linux: linuxacademy
Big Data: t.me/bigdatai
Хакинг: @linuxkalii
Java:@javatg
Собеседования: @machinelearning_interview
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
🔥ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: @english_forprogrammers
Машинное обучение: @ai_machinelearning_big_data
Go: @Golang_google
C#: @csharp_ci
Базы данных: sql
Python: @python_job_interview
C/C++/: @cpluspluc
Data Science: @data_analysis_ml
Devops: @devOPSitsec
Rust: @rust_code
Javascript: @javascriptv
React: @react_tg
PHP: @phpshka
Docker: @docker
Android: @android_its
Мобильная разработка: @mobdevelop
Linux: linuxacademy
Big Data: t.me/bigdatai
Хакинг: @linuxkalii
Java:@javatg
Собеседования: @machinelearning_interview
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
🔥ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: @english_forprogrammers
👍5
Полезная библиотека SQLModel для Python, которая упрощает взаимодействие с SQL базами данных.
С помощью SQLModel можно использовать Pydantic-подобные классы, использующие аннотации типов Python для повышения читаемости.
▪Github
▪Документация
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥1
Python-библиотека SQLLEX, которая позволяет эффективно и безопасно взаимодействовать с базами данных.
Если вы имели опыт работы с базами данных на Python, то, вероятно, испытывали трудности при написании SQL-запросов. Однако теперь нет необходимости бороться с этим. Больше никаких con.cursor() , ваш ждут удобные функции db.insert(), db.select().
Теперь ваш код будет более структурирован и понятен без магии SQL.
На github-е SQLLEX имеется подробная документация с обширным набором примеров кода, доступных в разделе wiki.
pip install sqllex
▪Github
▪Документация
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥2👎1
💬 Регулярные выражения
Язык SQL поддерживает работу с регулярными выражениями (regular expressions или RegEx). Это специальный язык, позволяющий достаточно точно определить шаблоны поиска в строке.
Для работы с регулярными выражениями используется оператор SIMILAR TO вместо LIKE.
Вернемся к нашей задаче — нужно выбрать пользователей, чье имя начинается на 'A' и 'B'. Чтобы решить ее, нужно применить такой шаблон:
Разберем примененный шаблон [AB]%. В квадратных скобках перечисляются допустимые символы, а далее следует знакомый нам символ %. Этот запрос вернет пользователей с именами Abigale, Andy, Brayan, и так далее.
Представим, что нам нужно найти пользователей, у которых username заканчивается любой буквой.
Это можно сделать таким шаблоном: %[abcdefghijklmnopqrstuvwxyz]. Согласитесь, такая запись неудобна для чтения и записи.
А что, если мы случайно пропустим какую-то букву? В квадратных скобках можно использовать символ - для перечисления. Если записать в квадратных скобках начальный символ, поставить "-" и указать конечный символ, то такой шаблон вернет любой символ из диапазона от начального до конечного.
Напишем запрос, который вернет всех пользователей у которых username заканчивается любой буквой, будет выглядеть так:
Точно так же можно работать и с русскими буквами: '%[а-я]%'. Такой запрос поможет найти пользователей, у которых в поле username есть русские буквы:
Такой запрос вернет всех пользователей, чей username заканчивается на любую цифру.
Комбинируя правила, мы можем создавать достаточно сложные шаблоны. Например, проверим, что в поле email введены корректные адреса электронной почты.
Корректная почта должна содержать адрес, который состоит из:
*️⃣ Имени с любым количеством любых символов — например, my_email
*️⃣ Символа @
*️⃣ Домена с любым количеством любых символов — например, gmail
*️⃣ Точки
*️⃣ Указания национальной зоны — например, com
Запрос на поиск корректных адресов будет таким:
Такой запрос выведет имена пользователей с корректными адресами электронной почты, однако нам интереснее найти ошибки. В этом случае частица NOT позволит найти строки, которые не соответствуют шаблону:
Теперь выберем все адреса электронной почты, у которых национальная зона состоит ровно из двух символов — например, ru, su, io и так далее. При этом исключим зоны, состоящие из трех и более символов — например, com.
Это можно сделать так: %.[a-z][a-z]. Но удобнее воспользоваться еще одним спецсимволом — подчеркиванием _.
Символ подчеркивания обозначает ровно один любой символ, необязательно букву. Наш запрос будет выглядеть так:
Чтобы вывести пользователей с адресами электронной почты оканчивающимися на 3 символа, нужно добавить еще одно подчерктивание в наш шаблон:
Мы рассмотрели наиболее полезные и часто используемые возможности регулярных выражений в SQL, но они ими не ограничиваются.
@sqlhub
Язык SQL поддерживает работу с регулярными выражениями (regular expressions или RegEx). Это специальный язык, позволяющий достаточно точно определить шаблоны поиска в строке.
Для работы с регулярными выражениями используется оператор SIMILAR TO вместо LIKE.
Вернемся к нашей задаче — нужно выбрать пользователей, чье имя начинается на 'A' и 'B'. Чтобы решить ее, нужно применить такой шаблон:
SELECT * FROM users WHERE first_name SIMILAR TO '[AB]%';
Разберем примененный шаблон [AB]%. В квадратных скобках перечисляются допустимые символы, а далее следует знакомый нам символ %. Этот запрос вернет пользователей с именами Abigale, Andy, Brayan, и так далее.
Представим, что нам нужно найти пользователей, у которых username заканчивается любой буквой.
Это можно сделать таким шаблоном: %[abcdefghijklmnopqrstuvwxyz]. Согласитесь, такая запись неудобна для чтения и записи.
А что, если мы случайно пропустим какую-то букву? В квадратных скобках можно использовать символ - для перечисления. Если записать в квадратных скобках начальный символ, поставить "-" и указать конечный символ, то такой шаблон вернет любой символ из диапазона от начального до конечного.
Напишем запрос, который вернет всех пользователей у которых username заканчивается любой буквой, будет выглядеть так:
SELECT * FROM users WHERE username SIMILAR TO '%[a-z]';
Точно так же можно работать и с русскими буквами: '%[а-я]%'. Такой запрос поможет найти пользователей, у которых в поле username есть русские буквы:
SELECT * FROM users WHERE username SIMILAR TO '%[а-я]%';
Чтобы выбрать все цифры, используем шаблон [0-9]:
SELECT * FROM users WHERE username SIMILAR TO '%[0-9]';
Такой запрос вернет всех пользователей, чей username заканчивается на любую цифру.
Комбинируя правила, мы можем создавать достаточно сложные шаблоны. Например, проверим, что в поле email введены корректные адреса электронной почты.
Корректная почта должна содержать адрес, который состоит из:
Запрос на поиск корректных адресов будет таким:
SELECT username, email FROM users WHERE email SIMILAR TO '%@%.%';
Такой запрос выведет имена пользователей с корректными адресами электронной почты, однако нам интереснее найти ошибки. В этом случае частица NOT позволит найти строки, которые не соответствуют шаблону:
SELECT username, email FROM users WHERE email NOT SIMILAR TO '%@%.%';
Теперь выберем все адреса электронной почты, у которых национальная зона состоит ровно из двух символов — например, ru, su, io и так далее. При этом исключим зоны, состоящие из трех и более символов — например, com.
Это можно сделать так: %.[a-z][a-z]. Но удобнее воспользоваться еще одним спецсимволом — подчеркиванием _.
Символ подчеркивания обозначает ровно один любой символ, необязательно букву. Наш запрос будет выглядеть так:
SELECT username, email FROM users WHERE email SIMILAR TO '%.__';
Чтобы вывести пользователей с адресами электронной почты оканчивающимися на 3 символа, нужно добавить еще одно подчерктивание в наш шаблон:
SELECT
username,
email
FROM users WHERE email SIMILAR TO '%.___';
Мы рассмотрели наиболее полезные и часто используемые возможности регулярных выражений в SQL, но они ими не ограничиваются.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥10❤5
🔍 Где искать работу Дата Саентисту?
Собрали для вас список площадок для поиска работы или фрланс-проекта в области Data Science.
1. Toptal
Toptal - один из крупнейших фриланс сайтов для специалистов по анализу данных. В отличие от многих других бирж фриланса в Toptal соискатели проходят тестирование в различных областях, включая знание английского языка и технические навыки, в области SQL и Python для data science.
2. Open Data Science Jobs
Open Data Science Jobs - одна из крупнейших площадок вакансий, посвященных только науке о данных. Такие компании, как Bose, использовали эту доску объявлений для поиска специалистов по науке о данных для оптимизации своей бизнес-аналитики.
3. Kaggle
Kaggle - одно из крупнейших сообществ датасаентистов. Kaggle предоставляет наборы данных, проводит соревнования и вообще способствует процветанию сообщества специалистов по анализу данных.
Доска вакансий Kaggle - один из лучших вариантов для начала поиска проекта для рабрты. Ее услугами пользуются крупнейшие компании (Amazon, Capital One и AIG и тд).
4. Scalable Path
Если у вас есть готовая команда датасаентистов и вы хотите найти интерсный проект , Scalable Path - отличный вариант.
5. Gigster
Еще одина крупная фриланс площадка с проектами ds.
6. iCrunchData - это доска объявлений c вакансиями в области науки о данных.
7. X-Team
X-Team - рынок фриланса, где можно работать, как одному, так и в команде.
8. Gun.io
Gun.io очень похож на Toptal, быстро и эффективно подбирая для компаний квалифицированных инженеров по науке о данных. С тысячами зарегистрированных членов Gun.io является восходящей звездой в индустрии фриаланса.
9. R-users
Простой поиск по сайту R-users позволяет найти десятки вакансий в области науки о данных, в которых используется язык программирования R.
10. AngelList
AngelList - это место, где встречаются ит- предприниматели и инвесторы.
11. Engineering Jobs
Если вы ищете ds проект Engineering Jobs может стать отличным местом для поиска интересной работы.
12. Dice
Dice - доскоа объявлений о карьере в сфере технологий и ИТ. Эта доска известна тем, что привлекает архитекторов программного обеспечения, инженеров, QA-тестеров и инженеров по анализу данных.
13. SimplyHired
SimplyHired - это еще одна крупная доска объявлений о работе, похожая на Indeed или Monster.
14. Папка с каналами для поиска работы в телеграме.
Телеграм каналы и чаты, где публикуются вакансии ds, python и не только. Очень полезная папка (папки поддерживаются только в последних версиях тг), где можно найти вакансию на любой ЯП.
Ставьте 👍 , если полезно.
@sqlhub
Собрали для вас список площадок для поиска работы или фрланс-проекта в области Data Science.
1. Toptal
Toptal - один из крупнейших фриланс сайтов для специалистов по анализу данных. В отличие от многих других бирж фриланса в Toptal соискатели проходят тестирование в различных областях, включая знание английского языка и технические навыки, в области SQL и Python для data science.
2. Open Data Science Jobs
Open Data Science Jobs - одна из крупнейших площадок вакансий, посвященных только науке о данных. Такие компании, как Bose, использовали эту доску объявлений для поиска специалистов по науке о данных для оптимизации своей бизнес-аналитики.
3. Kaggle
Kaggle - одно из крупнейших сообществ датасаентистов. Kaggle предоставляет наборы данных, проводит соревнования и вообще способствует процветанию сообщества специалистов по анализу данных.
Доска вакансий Kaggle - один из лучших вариантов для начала поиска проекта для рабрты. Ее услугами пользуются крупнейшие компании (Amazon, Capital One и AIG и тд).
4. Scalable Path
Если у вас есть готовая команда датасаентистов и вы хотите найти интерсный проект , Scalable Path - отличный вариант.
5. Gigster
Еще одина крупная фриланс площадка с проектами ds.
6. iCrunchData - это доска объявлений c вакансиями в области науки о данных.
7. X-Team
X-Team - рынок фриланса, где можно работать, как одному, так и в команде.
8. Gun.io
Gun.io очень похож на Toptal, быстро и эффективно подбирая для компаний квалифицированных инженеров по науке о данных. С тысячами зарегистрированных членов Gun.io является восходящей звездой в индустрии фриаланса.
9. R-users
Простой поиск по сайту R-users позволяет найти десятки вакансий в области науки о данных, в которых используется язык программирования R.
10. AngelList
AngelList - это место, где встречаются ит- предприниматели и инвесторы.
11. Engineering Jobs
Если вы ищете ds проект Engineering Jobs может стать отличным местом для поиска интересной работы.
12. Dice
Dice - доскоа объявлений о карьере в сфере технологий и ИТ. Эта доска известна тем, что привлекает архитекторов программного обеспечения, инженеров, QA-тестеров и инженеров по анализу данных.
13. SimplyHired
SimplyHired - это еще одна крупная доска объявлений о работе, похожая на Indeed или Monster.
14. Папка с каналами для поиска работы в телеграме.
Телеграм каналы и чаты, где публикуются вакансии ds, python и не только. Очень полезная папка (папки поддерживаются только в последних версиях тг), где можно найти вакансию на любой ЯП.
Ставьте 👍 , если полезно.
@sqlhub
Toptal
11 Best Freelance Data Scientists for Hire in June 2025 | Toptal®
Toptal offers top data scientists on an hourly, part-time, or full-time contract basis. Clients include Thumbtack, Bridgestone, and Motorola.
👍12❤7🔥3👏1
Крутой Python-пакет на базе ИИ для автоматической генерации SQL-запросов
Фреймворк позволяет создавать сложные SQL-запросы всего за несколько секунд. С Vanna вы можете легко и быстро получать данные из вашей базы данных, просто задавая вопросы
Инструмент может похвастаться высокой точностью на сложных наборах данных, безопасностью и конфиденциальностью, а также самообучением
Стоимость: #бесплатно (но есть платные функции)
#SQL #ИИ #базы_данных
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4❤1
Ниже приведен список Python-библиотек драйверов для различных баз данных, полезный любому программисту, который интересуется этим языком.
▪redis-py — клиент базы данных Redis на Python
redis-py 3.5.x — это последняя версия, которая поддерживала Python 2. Обновления безопасности, совместимые с Python 2, выходили вплоть до 20 августа 2020 года. Для redis-py 4.0, следующей основной версии, уже требуется Python не ниже версии 3.5.
▪PyMySQL — драйвер Pure Python MySQL, совместимый с mysql-python
Этот пакет содержит клиентскую библиотеку Python MySQL, основанную на стандарте PEP 249.
Большинство открытых API-интерфейсов совместимы с mysqlclient и MySQLdb.
ЗАМЕЧАНИЕ: PyMySQL не поддерживает низкоуровневые API-запросы, которые есть в _mysql, а именно data_seek, store_result и use_result. Вы должны использовать высокоуровневые API-запросы, определенные в стандарте PEP 249. Но некоторые API-запросы, такие как autocommit и ping, все же поддерживаются, поскольку PEP 249 никак не регламентирует их применение.
▪asyncpg — быстрая клиентская библиотека Python / asyncio для базы данных PostgreSQL
Это библиотека интерфейса базы данных, разработанная специально для PostgreSQL и Python / asyncio.
asyncpg — это эффективная и чистая реализация бинарного протокола сервера баз данных PostgreSQL для использования с асинхронным фреймворком Python asyncio. Вы можете узнать больше об asyncpg вот здесь.
asyncpg требует Python версии 3.5 или новее и поддерживается для PostgreSQL начиная с версии 9.2 и заканчивая версией 12.
▪psycopg2 — самый популярный адаптер PostgreSQL для Python
Psycopg — самый популярный адаптер базы данных PostgreSQL для языка программирования Python. Его основными особенностями являются полная реализация спецификации Python DB API 2.0 и безопасность потоков (несколько потоков могут использовать одно и то же соединение). Он был разработан для многопоточных приложений, которые создают и уничтожают множество связей и выполняют большое количество одновременных операций INSERT или UPDATE.
▪mysqlclient — поддерживающий Python 3 форк библиотеки mysql-python
В этом проекте добавлена поддержка Python 3 и исправлен ряд ошибок. Мы надеемся, что этот форк будет снова объединен со своей родительской библиотекой. Это было бы так же логично, как объединение дистрибутива и программы для его установки.
▪cassandra-python-driver — драйвер Python для Cassandra
Современная, многофункциональная и гибконастраиваемая клиентская библиотека Python для Apache Cassandra (1.2+) и DataStax Enterprise (3.1+). Она использует исключительно бинарный протокол Cassandra и язык запросов Cassandra Query Language v3.
▪motor — аснхронный драйвер Python для MongoDB
Motor — это полнофункциональный драйвер MongoDB для Python Tornado и других асинхронных приложений.
▪pymssql — простой интерфейс для Microsoft SQL Server
Простой интерфейс баз данных на языке Python, который строится поверх FreeTDS и предоставляет интерфейс Python DB-API (PEP-249) для Microsoft SQL Server.
▪HappyBase — удобная библиотека для Apache HBase
▪PyMongo — официальный клиент Python для MongoDB
▪SuperSQLite — улучшенная библиотека SQLite
Это многофункциональная библиотека Python, предназначенная для использования SQLite в Python компанией Plasticity. Построена она на основе apsw.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤1