Рубрика: Базы данных

  • Postgres. Получить список таблиц базы данных и ее поля?

    Типичной задачей в области работы с базами данных, в т.ч. Postgres, является получения списка таблиц базы данных, а также их колонок. Для этого нужно обратиться к служебным таблицам и выполнить следующие запросы: — Все таблицы в схеме public SELECT table_name FROM information_schema.tables WHERE table_schema=’public’ ORDER BY table_name; — Все таблицы и колонки в схеме public…

  • MySQL. Использование IF и CASE в SELECT.

    Есть ситуации, когда в зависимости от определенных условий в блоке SELECT в запросе нужно возвращать определенные поля или же под один алиас возвращать разные значения. Как это сделать и в каких ситуациях это решает проблему я покажу в этой статье. Ситуация из реальной практики — в БД хранится цена и рядом с ней хранится валюта…

  • Postgres. Как установить dblink (contrib)?

    Для выполнения запросов между различными БД в postgres необходимо установить библиотеку dblink (contrib). Для этого необходимо выполнить несколько простых шагов: 1) Устанавливаем расширение sudo apt-get install postgresql-contrib 2) Далее в Navicat, pgAdmin или другом Вашем интерфейсе: CREATE EXTENSION dblink;

  • MySQL. Перевод строки в нижний\верхний регистр.

    Никогда нельзя забывать о регистрозависимости и возможности случайных недопонимании при работе со строками. Это касается и Баз Данных, и языков программирования и т.д. Ниже приведу две функции MySQL для приведения текста в нижний и верхний регистр. Верхний регистр: функция UPPER SELECT UPPER(‘Hello’); — HELLO Нижний регистр: функция LOWER SELECT LOWER(‘HeLlO’); — hello

  • PostGIS. Решаем ошибку «Cannot find SRID (4283) in spatial_ref_sys»

    Сегодня в ходе борьбы с проекциями PostGis и MapServer столкнулся с неожиданной ошибкой — «Cannot find SRID (4283) in spatial_ref_sys». В этой статье я расскажу, как решить данную проблему. В ходе продолжительных поисков решения выяснилось, что по тем или иным причинам была очищена (полностью или частично) таблица spatial_ref_sys, находящаяся в нашей БД. Поэтому наша задача…

  • MySQL. Как перевести дату со строкового поля в формат даты?

    Иногда дата в Базе Данных хранится в простом текстовом поле, а на в формате datetime. Причин этому может быть много — архитектура и потребности везде свои. Но как сортировать таблицу по дате и времени, если они в простом текстовом формате? Для этой задачи следует воспользоваться встроенной функцией MySQL STR_TO_DATE. Приведу пример: mysql> select str_to_date(«31/07/1990″,»%d/%m/%Y»); +—————————————+…

  • Yii2. Как указать алиас в joinWith?

    Для удобства работы с запросом, фильтрации и сортировки в сложных реляционных запросах удобно использовать joinWith. Но здесь иногда возникают трудности ввиду не очевидного присвоения алиаса для подключаемой таблицы. На самом деле же все достаточно просто. Исходя из ответа qiang на github: joinWith([ ‘customer’ => function ($q) { $q->from(‘customer cu’); }, ]) Таким образом мы можем…

  • PostgreSQL. Как открыть удаленный доступ?

    Открыть доступ к PostgreSQL извне достаточно просто и в этой статье я приведу пример, как предоставить удаленный доступ к базе данных. Для начала в postgresql.conf ставим следующую конфигурацию: listen_addresses = ‘*’ Следующий шаг можно пропустить, если Вам не нужно создавать дополнительного суперпользователя. # переключаемся на юзера postgres su postgres # создаем нового пользователя createuser -P…

  • PostgreSQL. Где находится файл pg_hba.conf?

    Очень короткая заметка о том, где находится файл конфигурации pg_hba.conf. В общем случае файл находится в папке etc/postgresql/НОМЕР_ВЕРСИИ. Например, для версии 9.1 путь будет следующим: /etc/postgresql/9.1/main/pg_hba.conf

  • MySQL. Как сделать заглавной только первую букву?

    Функции и хаки работы с MySQL иногда очень облегчают жизнь. Об одном из таких хаков я расскажу в этой заметке. Речь пойдет о хаке, который позволяет сделать со строки «ПРИВЕТ» — «Привет». Т.е. независимо от регистра входной строки получить первую заглавную букву. Итак, код ниже: SELECT CONCAT( UPPER( LEFT( `text` , 1 ) ) ,…