Чтобы получить данные из таблицы, выполняется запрос к таблице . Для этого используется оператор SQL SELECT . Оператор разделен на список выбора (часть, в которой перечислены возвращаемые столбцы), список таблиц (часть, в которой перечислены таблицы, из которых нужно получить данные) и необязательное уточнение (часть, в которой указаны любые ограничения). . Например, чтобы получить все строки таблицы weather, введите:
SELECT * FROM weather;
Вот *сокращение для « всех столбцов » . [2] Таким образом, тот же результат будет получен с:
SELECT city, temp_lo, temp_hi, prcp, date FROM weather;
Вывод должен быть:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
San Francisco | 43 | 57 | 0 | 1994-11-29
Hayward | 37 | 54 | | 1994-11-29
(3 rows)
Вы можете писать выражения, а не только простые ссылки на столбцы, в списке выбора. Например, вы можете сделать:
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
Это должно дать:
city | temp_avg | date
---------------+----------+------------
San Francisco | 48 | 1994-11-27
San Francisco | 50 | 1994-11-29
Hayward | 45 | 1994-11-29
(3 rows)
Обратите внимание, как это ASпредложение используется для переименования выходного столбца. (Предложение ASявляется необязательным.)
Запрос можно « уточнить » , добавив WHEREпредложение, указывающее, какие строки требуются. Предложение WHEREсодержит логическое выражение (значение истинности), и возвращаются только те строки, для которых логическое выражение истинно. В квалификации разрешены обычные булевы операторы ( AND, OR, и ). NOTНапример, следующий код возвращает погоду в Сан-Франциско в дождливые дни:
SELECT * FROM weather
WHERE city = 'San Francisco' AND prcp > 0.0;
Результат:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
(1 row)
Вы можете запросить, чтобы результаты запроса возвращались в отсортированном порядке:
SELECT * FROM weather
ORDER BY city;
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
Hayward | 37 | 54 | | 1994-11-29
San Francisco | 43 | 57 | 0 | 1994-11-29
San Francisco | 46 | 50 | 0.25 | 1994-11-27В этом примере порядок сортировки указан не полностью, поэтому вы можете получить строки Сан-Франциско в любом порядке. Но вы всегда получите результаты, показанные выше, если сделаете:
SELECT * FROM weather
ORDER BY city, temp_lo;
Вы можете запросить удаление повторяющихся строк из результата запроса:
SELECT DISTINCT city
FROM weather;
city
---------------
Hayward
San Francisco
(2 rows)Здесь снова порядок строк результатов может различаться. Вы можете обеспечить стабильные результаты, используя DISTINCTи ORDER BYвместе: [3]
SELECT DISTINCT city
FROM weather
ORDER BY city;
[2] ХотяSELECT *это полезно для импровизированных запросов, это широко считается плохим стилем в производственном коде, поскольку добавление столбца в таблицу изменит результаты.
[3] В некоторых системах баз данных, включая более старые версии PostgreSQL , реализацияDISTINCTавтоматического упорядочения строкORDER BYне нужна. Но это не требуется по стандарту SQL, и текущая версия PostgreSQL не гарантирует, чтоDISTINCTстроки будут упорядочены.
0 комментариев