Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Функии / 3 сообщений из 3, страница 1 из 1
06.08.2016, 13:56
    #39287678
hasbag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функии
Не могу понять как работает этот запрос:
Код: sql
1.
SELECT UPPER(names_list) from users;


Разве после SELECT не должно идти название поля? Не могли бы вы пошагово объяснить как будет выполняться этот запрос то есть что за чем? И почему когда я выполняю запрос вида:
Код: sql
1.
SELECT "Kate" FROM users;


Я получаю столбец Kate из трех записей со значением "Kate". Хотя в моей таблице 3х3 это значение фигурирует всего лишь один раз.

Я понимаю что в таком запросе:
Код: sql
1.
2.
3.
UPDATE users
SET
fnames_list = SUBSTRING_INDEX(names_list,' ',1);


Происходит циклический перебор всех записей в указанном полем, но ситуацию с SELECT не могу понять.
...
Рейтинг: 0 / 0
06.08.2016, 17:53
    #39287731
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функии
hasbag,

после select могут быть не только названия полей. Константы, функции и даже другие подзапросы. У вас в запросе выполняется вызов штатной функции upper к каждому полю names_list в выборке.

Интерпретация "Kate" в mysql - зависит от текущего sql_mode. В режиме по-умолчанию с выключенными ANSI_QUOTES, это просто константа и не имеет к полям никакого отношения, просто строка. Вы получите столько строк "Kate", сколько у вас строк в выборке. С включенным ANSI_QUOTES - это будет имя поля.
...
Рейтинг: 0 / 0
07.08.2016, 13:32
    #39287877
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функии
[quo hasbag]Не могу понять как работает этот запрос:
Код: sql
1.
SELECT UPPER(names_list) from users;


Разве после SELECT не должно идти название поля?

должен идти список вывода, который состоит из одного или более выражений, которые в частности могут быть просто одним полем.


Не могли бы вы пошагово объяснить как будет выполняться этот запрос то есть что за чем?


нет смысла объяснять работу запросов пошагово, потому что запросы не выполняются пошагово.

тут выбираться все записи из таблицы users, и для каждой выдается выражение

UPPER(names_list)

т. е. поле names list приведенное в верхний регистр.


И почему когда я выполняю запрос вида:
Код: sql
1.
SELECT "Kate" FROM users;


Я получаю столбец Kate из трех записей со значением "Kate".

потому что тут "Kate" - строковая константа.

Хотя в моей таблице 3х3 это значение фигурирует всего лишь один раз.


а это ты в запросе не ограничивал.



Я понимаю что в таком запросе:
Код: sql
1.
2.
3.
UPDATE users
SET
fnames_list = SUBSTRING_INDEX(names_list,' ',1);


Происходит циклический перебор всех записей в указанном полем, но ситуацию с SELECT не могу понять.[/quot]


в select в общем то же самое, только записи не меняются, а выводятся и не сохраняются.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Функии / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]