Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.207.133.13] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Страницы: (3) 1 [2] 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Он скорее всего некорректно задал вопрос Возможно речь шла о формировании "комментария" (по факту обычного поля), а-ля: SELECT name AS Name, cnt AS Cnt , CASE WHEN cnt > 100500 THEN 'дофига' ELSE 'так себе' END AS Comment; Хотя - это только мои догадки. |
Сообщ.
#17
,
|
|
|
Цитата Majestio @ Он скорее всего некорректно задал вопрос Возможно речь шла о формировании "комментария" (по факту обычного поля), а-ля: SELECT name AS Name, cnt AS Cnt , CASE WHEN cnt > 100500 THEN 'дофига' ELSE 'так себе' END AS Comment; Хотя - это только мои догадки. Нет. Он спрашивал о комментариях. Они могут быть добавлены к полям таблицы при создании. 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 |
Сообщ.
#18
,
|
|
|
Цитата macomics @ А, понятно |
Сообщ.
#19
,
|
|
|
Цитата rownong@yandex.ru @ Подскажите, правильно понимаю, что результатом SQL запроса могут быть: 1. Реальная таблица из БД. 2. Абстрактная таблица (с несуществующими столбцами, но которые создаем в момент запроса) 3. Число (например результат расчетов). Т.е. просто одно число (без таблиц и столбцов), которое получаем в результате. ?? Совершенно неправильно. Есть запросы, которые возвращают набор данных. Т.е. которые возвращают результат выборки/расчёта. Даже если результатом является единственная запись с единственным полем (то, что тебе кажется "просто числом"). Даже если результатом является пустой, не содержащий ни одной записи, набор. И есть запросы, которые НЕ возвращают набор данных. Это запросы, которые модифицируют данные (если диалект не поддерживает RETURNING или если он не использован), а также запросы, которые работают с метаданными. Такие запросы возвращают статус выполненного запроса и, возможно, дополнительную информацию по его выполнению (например, запрос на обновление возвращает как общее количество записей, соответствующих условиям отбора, так и количество фактически обновлённых записей, т.е. в которых новое значение отличается от старого). Кроме того, выполнение абсолютно любого запроса может привести к ошибке - в этом случае возвращается код ошибки и дополнительная информация по ней. |
Сообщ.
#20
,
|
|
|
Цитата Akina @ Совершенно неправильно. Есть запросы, которые возвращают набор данных. Т.е. которые возвращают результат выборки/расчёта. Даже если результатом является единственная запись с единственным полем (то, что тебе кажется "просто числом"). Даже если результатом является пустой, не содержащий ни одной записи, набор. И есть запросы, которые НЕ возвращают набор данных. Это запросы, которые модифицируют данные (если диалект не поддерживает RETURNING или если он не использован), а также запросы, которые работают с метаданными. Такие запросы возвращают статус выполненного запроса и, возможно, дополнительную информацию по его выполнению (например, запрос на обновление возвращает как общее количество записей, соответствующих условиям отбора, так и количество фактически обновлённых записей, т.е. в которых новое значение отличается от старого). Кроме того, выполнение абсолютно любого запроса может привести к ошибке - в этом случае возвращается код ошибки и дополнительная информация по ней. Не согласен, потому как речь шла именно о запросах по получению данных. Другие запросы, модифицирующие прикладные данные, системную информацию - об этом не шла речь. Равно как и о запросах с ошибкой. |
Сообщ.
#21
,
|
|
|
Цитата rownong@yandex.ru @ 3. Число (например результат расчетов). Т.е. просто одно число (без таблиц и столбцов), которое получаем в результате. ?? По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений? |
Сообщ.
#22
,
|
|
|
Цитата rownong@yandex.ru @ По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений? Даже одно число можно представить в виде одной строки с одним столбцом. Результатом запроса будут именно подобные значения (строки и столбцы). Столбцы перечисляются в запросе, а строки формируются по результатам отбора из базы данных. При этом результатом запроса может быть одно значение, но для его размещения будет сформировано одно поле и выбрана одна строка. Так надеюсь понятнее. |
Сообщ.
#23
,
|
|
|
Цитата rownong@yandex.ru @ По этому вопросу в итоге непонял, результат SQL моежет быть только 1 число - результат вычислений? Нет. Как уже выше сказано, это будет набор записей. Сам набор будет состоять из одной записи, а структура набора (и соответственно этой одной записи) будет состоять из одного поля. Как итог - весь набор записей будет содержать ровно 1 запись * 1 поле = 1 значение. Но набор записей содержит ещё кучу метаданных - количество полей (одно), имя этого одного поля, тип его данных, количество записей (одна)... Соответственно обратиться к этому набору как к скалярному значению - нельзя. Хорошо, если при обращении будет выполнено неявное приведение к скалярному типу - то есть удалена метаинформация об имени поля и типе его данных и пр... но надеяться на это неразумно, да и вероятность существования в синтаксисе такого неявного приведения весьма мала. Например, тот же MySQL вроде бы делает это с лёгкостью - ага, как бы не так! для того, чтобы он преобразовал, надо выражение-запрос обернуть скобками, иначе syntax error. |
Сообщ.
#24
,
|
|
|
Сообщ.
#25
,
|
|
|
Цитата rownong@yandex.ru @ Подскажите в SQL запросе возможно построить абстрактную (виртуальную) таблицу Нет. Применительно к SQL такого понятия как "абстрактная (виртуальная) таблица" - не существует. Используйте корректную технически грамотную терминологию. |
Сообщ.
#26
,
|
|
|
Цитата rownong@yandex.ru @ А что по поводу этого вопроса? Такое решение реально сделать? |
Сообщ.
#27
,
|
|
|
Цитата rownong@yandex.ru @ А что по поводу этого вопроса? Такое решение реально сделать? Абстрактных (виртуальных) таблиц в SQL не существует, но есть VIEW (представления), которые реализуют твои потребности по данному вопросу. Материала по этому в сети полно. Навскидку, почитай вот эту статью. Статья более-менее норм, имхо. |
Сообщ.
#28
,
|
|
|
Еще подскажите, создавая временные (виртуальные) поля (столбцы) в результате SQL запроса, можно им имена давать не на латинице, а на кириллице и с пробелами?
|
Сообщ.
#29
,
|
|
|
SELECT id as 'идентификатор', name as 'имя', sername as 'фамилия', extname as 'отчество', birthday as 'дата рождения' FROM BIOData; https://sqliteonline.com/ Для тренировки и уменьшения количества вопросов |
Сообщ.
#30
,
|
|
|
Цитата macomics @ SELECT id as 'идентификатор', name as 'имя', sername as 'фамилия', extname as 'отчество', birthday as 'дата рождения' FROM BIOData; https://sqliteonline.com/ Для тренировки и уменьшения количества вопросов Отлично! Спасибо! |