SQL

[!] SQL MySQL Онлайн-Справочник - примеры кода запросов

Forums:

Данный раздел пополнен в основном благодаря IFF/

С чего начать

  1. Как начать изучать SQL
  2. MySQL и Клиент-серверная архитектура

Теория и базовые понятия:

yii2 ActiveRecord findOne c условием LIKE -- пример кода

Проблему (добавления like условия в запрос) удалось решить, используя код, вида:

$command = static::find()->filterWhere(
  ['LIKE', 'verify_code', "$token"]
);
$User = $command->one();

sql GROUP BY -- Достать результаты суммирования, в виде ассоциативного массива -- пример запроса

Forums:

Задача

Есть таблица Sale с полями id, amount, shop_id.
Нам нужно достать сумму сумм(amount), отдельно по каждому магазину(shop_id).
Как сделать это в одном sql-запросе?

Запрос

SELECT SUM(amount) FROM `sale` 
    WHERE shop_id IN (1,2,3,4,5)
    GROUP BY shop_id;

В результате мы получим массив, в котором ключами будут shop_id, а значениями - результат функции SUM() всех amount из строк с соответствующим shop_id.

mysql Переименование таблицы -- пример SQL

Forums:

Можно так:

RENAME TABLE `user` TO `site_user`;

Создание SQL запроса средствами другого SQL запроса -- пример ;)

Forums:

Когда это нужно

Ситуация возникает, когда в какой-то локальной базе, например, в одной из табилиц у вас есть полезная информация, которую хотелось бы перенести в другую БД, но накатить дамп таблицы возможности нет (например, на эту таблицу на втором сервере ссылаются внешние ключи), поэтому придётся использовать UPDATE, который перенёс бы значение "за раз".
Именно такой запрос мы и сгенерировали в этом примере.

yii2 Пример миграции с полями в т.ч: decimal, bool (логического), unsigned Not NUll, Defautl value (по умолчанию), внешний ключ


public function safeUp()
{

    //Добавляем все необходимые поля
    $this->createTable($this->tableName, [
        'id' => $this->primaryKey()->notNull(),
        'organization_id' =>  $this->integer()->notNull()
                ->comment('Связь с  организации'),
        'frmo_id' =>   $this->integer()->defaultValue(null)
            ->comment('id здания '),
        'build_name' => $this->string(256)->notNull()
            ->comment('Наименование здания'), // для строк переменной длины, напр. вместо varchar(256)

Вопрос по подзапросам -- вычисляемые поля. Когда и как выполняется подзрапрос, порядок выполнения

Forums:

В учебнике Бена Форта имеется вот такой пример к главе 11 "Использование подзапросов":

SELECT cust_name, cust_state,
(SELECT COUNT(*)
 FROM Orders
 WHERE Orders.cust_id = Customers.cust_id) AS orders
 FROM Customers
 ORDER BY cust_name;

Для ясности поясню - подразумевается выборка количества заказов (которые хранятся в таблице Orders) каждого клиента (список которых хранится в таблице Customers,). Вот отрывок из пояснения к коду:

Кортеж -- что это в программировании

Кортеж -- некий упорядоченный набор элементов фиксированной длины (общее определение).

То есть кортеж -- это несколько элементов выстроенных в строгом порядке, причем их число известно.

В СУБД

В реляционных СУБД под кортежем обычно понимают строку из любой таблицы (она как раз содержит фиксированное число значений, ведь в таких СУБД число колонок в конкретной таблице для любой строки одно и тоже) -- т.е. фактически это набор значений из строки таблицы БД.

SELECT -- структура запроса. Простой пример (sql)

Forums:

Самый простой случай

Самый простой случай -- это выборка из одной конкретной таблицы.

В общем виде схема работы SELECT следующая:

 SELECT  чтовыбираем(имена столбцов)  FROM откуда(т.е. имя таблицы);

Для конкретной реализации могут быть варианты:

Pages

Subscribe to RSS - SQL