На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Как работают вычисления в SQL?
    Цитата Akina @
    Нет.

    Он скорее всего некорректно задал вопрос :lol: Возможно речь шла о формировании "комментария" (по факту обычного поля), а-ля:

    ExpandedWrap disabled
      SELECT
        name AS Name,
        cnt AS Cnt ,
        CASE WHEN cnt > 100500 THEN 'дофига' ELSE 'так себе' END AS Comment;


    Хотя - это только мои догадки.
      Цитата Majestio @
      Цитата Akina @
      Нет.

      Он скорее всего некорректно задал вопрос :lol: Возможно речь шла о формировании "комментария" (по факту обычного поля), а-ля:

      ExpandedWrap disabled
        SELECT
          name AS Name,
          cnt AS Cnt ,
          CASE WHEN cnt > 100500 THEN 'дофига' ELSE 'так себе' END AS Comment;


      Хотя - это только мои догадки.

      Нет. Он спрашивал о комментариях. Они могут быть добавлены к полям таблицы при создании.

      ExpandedWrap disabled
        CREATE TABLE IF NOT EXISTS `BIO` (`id` INT PRIMARY KEY COMMENT 'Main key', `name` VARCHAR(64) COMMENT 'Имя', `sername` VARCHAR(64) COMMENT 'Фамилия', `male` INT(1) COMMENT 'Пол мужской?')


      Вот об этих комментариях он спрашивал

      https://dev.mysql.com/doc/refman/8.0/en/create-table.html
        Цитата macomics @
        Вот об этих комментариях он спрашивал

        https://dev.mysql.com/doc/refman/8.0/en/create-table.html

        А, понятно :good:
          Цитата rownong@yandex.ru @
          Подскажите, правильно понимаю, что результатом SQL запроса могут быть:
          1. Реальная таблица из БД.
          2. Абстрактная таблица (с несуществующими столбцами, но которые создаем в момент запроса)
          3. Число (например результат расчетов). Т.е. просто одно число (без таблиц и столбцов), которое получаем в результате.
          ??

          Совершенно неправильно.

          Есть запросы, которые возвращают набор данных. Т.е. которые возвращают результат выборки/расчёта. Даже если результатом является единственная запись с единственным полем (то, что тебе кажется "просто числом"). Даже если результатом является пустой, не содержащий ни одной записи, набор.

          И есть запросы, которые НЕ возвращают набор данных. Это запросы, которые модифицируют данные (если диалект не поддерживает RETURNING или если он не использован), а также запросы, которые работают с метаданными. Такие запросы возвращают статус выполненного запроса и, возможно, дополнительную информацию по его выполнению (например, запрос на обновление возвращает как общее количество записей, соответствующих условиям отбора, так и количество фактически обновлённых записей, т.е. в которых новое значение отличается от старого).

          Кроме того, выполнение абсолютно любого запроса может привести к ошибке - в этом случае возвращается код ошибки и дополнительная информация по ней.
            Цитата Akina @
            Совершенно неправильно.

            Есть запросы, которые возвращают набор данных. Т.е. которые возвращают результат выборки/расчёта. Даже если результатом является единственная запись с единственным полем (то, что тебе кажется "просто числом"). Даже если результатом является пустой, не содержащий ни одной записи, набор.

            И есть запросы, которые НЕ возвращают набор данных. Это запросы, которые модифицируют данные (если диалект не поддерживает RETURNING или если он не использован), а также запросы, которые работают с метаданными. Такие запросы возвращают статус выполненного запроса и, возможно, дополнительную информацию по его выполнению (например, запрос на обновление возвращает как общее количество записей, соответствующих условиям отбора, так и количество фактически обновлённых записей, т.е. в которых новое значение отличается от старого).

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

            Не согласен, потому как речь шла именно о запросах по получению данных. Другие запросы, модифицирующие прикладные данные, системную информацию - об этом не шла речь. Равно как и о запросах с ошибкой.
              Цитата rownong@yandex.ru @
              3. Число (например результат расчетов). Т.е. просто одно число (без таблиц и столбцов), которое получаем в результате.
              ??

              По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений?
                Цитата rownong@yandex.ru @
                По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений?

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

                Так надеюсь понятнее.
                  Цитата rownong@yandex.ru @
                  По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений?

                  Нет.

                  Как уже выше сказано, это будет набор записей. Сам набор будет состоять из одной записи, а структура набора (и соответственно этой одной записи) будет состоять из одного поля. Как итог - весь набор записей будет содержать ровно 1 запись * 1 поле = 1 значение. Но набор записей содержит ещё кучу метаданных - количество полей (одно), имя этого одного поля, тип его данных, количество записей (одна)...

                  Соответственно обратиться к этому набору как к скалярному значению - нельзя. Хорошо, если при обращении будет выполнено неявное приведение к скалярному типу - то есть удалена метаинформация об имени поля и типе его данных и пр... но надеяться на это неразумно, да и вероятность существования в синтаксисе такого неявного приведения весьма мала. Например, тот же MySQL вроде бы делает это с лёгкостью - ага, как бы не так! для того, чтобы он преобразовал, надо выражение-запрос обернуть скобками, иначе syntax error.
                  Сообщение отредактировано: Akina -
                    Подскажите в SQL запросе возможно построить абстрактную (виртуальную) таблицу следующего вида, где показатели идут не в столбцах а в строках? Т.е. из разных таблиц собрать временные столбцы и строки такого вида как на скрине. Грубо говоря мини-дашборд.
                    user posted image
                      Цитата rownong@yandex.ru @
                      Подскажите в SQL запросе возможно построить абстрактную (виртуальную) таблицу

                      Нет. Применительно к SQL такого понятия как "абстрактная (виртуальная) таблица" - не существует.

                      Используйте корректную технически грамотную терминологию.
                        Цитата rownong@yandex.ru @
                        Подскажите в SQL запросе возможно построить абстрактную (виртуальную) таблицу следующего вида, где показатели идут не в столбцах а в строках? Т.е. из разных таблиц собрать временные столбцы и строки такого вида как на скрине. Грубо говоря мини-дашборд.
                        user posted image

                        А что по поводу этого вопроса? Такое решение реально сделать?
                          Цитата rownong@yandex.ru @
                          А что по поводу этого вопроса? Такое решение реально сделать?

                          Абстрактных (виртуальных) таблиц в SQL не существует, но есть VIEW (представления), которые реализуют твои потребности по данному вопросу.
                          Материала по этому в сети полно. Навскидку, почитай вот эту статью. Статья более-менее норм, имхо.
                            Еще подскажите, создавая временные (виртуальные) поля (столбцы) в результате SQL запроса, можно им имена давать не на латинице, а на кириллице и с пробелами?
                            Сообщение отредактировано: rownong@yandex.ru -
                              ExpandedWrap disabled
                                SELECT
                                    id as 'идентификатор',
                                    name as 'имя',
                                    sername as 'фамилия',
                                    extname as 'отчество',
                                    birthday as 'дата рождения'
                                 FROM BIOData;
                              Что мешает попробовать? Это на MSSQL - работает.

                              https://sqliteonline.com/

                              Для тренировки и уменьшения количества вопросов
                                Цитата macomics @
                                ExpandedWrap disabled
                                  SELECT
                                      id as 'идентификатор',
                                      name as 'имя',
                                      sername as 'фамилия',
                                      extname as 'отчество',
                                      birthday as 'дата рождения'
                                   FROM BIOData;
                                Что мешает попробовать? Это на MSSQL - работает.

                                https://sqliteonline.com/

                                Для тренировки и уменьшения количества вопросов

                                Отлично! Спасибо!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0506 ]   [ 15 queries used ]   [ Generated: 27.04.24, 06:33 GMT ]