Разное

Postgresql select: PostgreSQL : Документация: 9.6: SELECT : Компания Postgres Professional

Содержание

PostgreSQL оператор SELECT LIMIT — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать в PostgreSQL оператор SELECT LIMIT с синтаксисом и примерами.

Описание

PostgreSQL оператор SELECT используется для извлечения записей из одной или нескольких таблиц в PostgreSQL и ограничения количества возвращаемых записей на основе предельного значения Limit.

Синтаксис

Синтаксис для оператора SELECT LIMIT в PostgreSQL:

SELECT expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
LIMIT row_count;

Параметры или аргументы

expressions
Столбцы или вычисления, которые вы хотите получить.
tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.
ORDER BY expression
Необязательный. Он используется в операторе SELECT LIMIT, чтобы вы могли упорядочить результаты и выбрать те записи, которые вы хотите вернуть.
LIMIT row_count
Задает ограниченное количество строк в результирующем наборе, которые должны быть возвращены на основе row_count. Например, LIMIT 10 вернет первые 10 строк, соответствующих критериям SELECT. Именно здесь важен порядок сортировки, поэтому обязательно используйте оператор ORDER BY.

Пример — использование ключевого слова LIMIT

Давайте посмотрим, как использовать оператор SELECT с LIMIT в PostgreSQL.
Например:

SELECT order_id, quantity, price
FROM order_details
WHERE website = ‘Google.com’
ORDER BY order_id DESC
LIMIT 8;



SELECT order_id, quantity, price

FROM order_details

WHERE website = ‘Google. com’

ORDER BY order_id DESC

LIMIT 8;

В этом PostgreSQL примере SELECT LIMIT будут выбраны первые 8 записей из таблицы order_details, где website — ‘Google.com’. Обратите внимание, что результаты сортируются по order_id в порядке убывания, поэтому это означает, что 8 самых больших значений order_id будут возвращены оператором SELECT LIMIT.
Если в таблице order_details есть другие записи со значением website ‘Google.com’, они не будут возвращены оператором SELECT LIMIT в PostgreSQL.
Если бы мы хотели выбрать 8 самых маленьких значений order_id вместо самых больших, мы могли бы изменить порядок сортировки следующим образом:

SELECT order_id, quantity, price
FROM order_details
WHERE website = ‘Google.com’
ORDER BY order_id ASC
LIMIT 8;



SELECT order_id, quantity, price

FROM order_details

WHERE website = ‘Google. com’

ORDER BY order_id ASC

LIMIT 8;

Теперь результаты будут отсортированы по order_id в порядке возрастания, поэтому первые 8 самых маленьких записей order_id, которые имеют website — ‘Google.com’, будут возвращены этим оператором SELECT LIMIT. Никакие другие записи не будут возвращены этим запросом.

PosgreSQL в Python — Select для получения данных из таблиц

В этом руководстве разберем, как выполнять запрос SELECT в базе данных PostgreSQL, используя приложение на Python и Psycopg2. Также разберем, как обрабатывать и использовать результат, возвращаемый запросом.

Цели:

  • Получить все строки из базы данных PostgreSQL с помощью fetchall() и ограниченное количество записей, используя fetchmany() и fetchone().
  • Использовать переменные Python в операторе where для передачи динамических значений.

Подготовка

Перед началом работы нужно убедиться, что у вас есть следующее:

  • Имя пользователя и пароль для подключения к PostgreSQL
  • Название базы данных, из которой требуется получить данные

В этом материале воспользуемся таблицей «mobile», которая была создана в первом руководстве по работе с PostgreSQL в Python. Если таблицы нет, то ее нужно создать.

Шаги для выполнения запроса SELECT из Python-программы

  1. Установить psycopg2 с помощью pip.
  2. Создать соединение с базой данных PostgreSQL.
  3. Создать инструкцию с запросом SELECT для получения данных из таблицы PostgreSQL.
  4. Выполнить запрос с помощью cursor.execute() и получить результат.
  5. Выполнить итерацию по объекту с помощью цикла и получить значения всех полей (колонок) базы данных для каждой строки.
  6. Закрыть объекты cursor и connection.
  7. Перехватить любые SQL-исключения, которые могут произойти в процессе.

Запить тестовых данных

Запишем несколько строк в базу данных, что бы потренироваться их получать.


import psycopg2
from psycopg2 import Error

try:
# Подключиться к существующей базе данных
connection = psycopg2.connect(user="postgres",
# пароль, который указали при установке PostgreSQL
password="1111",
host="127. 0.0.1",
port="5432",
database="postgres_db")

cursor = connection.cursor()
# Выполнение SQL-запроса для вставки данных в таблицу
insert_query = """ INSERT INTO mobile (ID, MODEL, PRICE) VALUES
(1, 'IPhone 12', 1000),
(2, 'Google Pixel 2', 700),
(3, 'Samsung Galaxy S21', 900),
(4, 'Nokia', 800)"""
cursor.execute(insert_query)
connection.commit()

except (Exception, Error) as error:
print("Ошибка при работе с PostgreSQL", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")

Пример получения данных с помощью fetchall()

В этом примере рассмотрим, как получить все строки из таблицы:


import psycopg2
from psycopg2 import Error

try:
# Подключиться к существующей базе данных
connection = psycopg2.connect(user="postgres",
# пароль, который указали при установке PostgreSQL
password="1111",
host="127. 0.0.1",
port="5432",
database="postgres_db")

cursor = connection.cursor()
postgreSQL_select_Query = "select * from mobile"

cursor.execute(postgreSQL_select_Query)
print("Выбор строк из таблицы mobile с помощью cursor.fetchall")
mobile_records = cursor.fetchall()

print("Вывод каждой строки и ее столбцов")
for row in mobile_records:
print("Id =", row[0], )
print("Модель =", row[1])
print("Цена =", row[2], "\n")

except (Exception, Error) as error:
print("Ошибка при работе с PostgreSQL", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")

Вывод:

Выбор строк из таблицы mobile с помощью cursor.fetchall
Вывод каждой строки и ее столбцов
Id = 1
Модель = IPhone 12
Цена = 1000.0 

Id = 2
Модель = Google Pixel 2
Цена = 700.0 

Id = 3
Модель = Samsung Galaxy S21
Цена = 900. 0 

Id = 4
Модель = Nokia
Цена = 800.0 

Соединение с PostgreSQL закрыто

Примечание: в этом примере использовалась команда cursor.fetchall() для получения всех строк из базы данных.

Используйте cursor.execute() для выполнения запроса:

  • cursor.fetchall() — для всех строк.
  • cursor.fetchone() — для одной.
  • cursor.fetchmany(SIZE) — для определенного количества.

Передача переменных Python в качестве параметров запроса

В большинстве случаев требуется передавать переменные Python в запросы SQL для получения нужного результата. Например, приложение может передать ID пользователя для получения подробностей о нем из базы данных. Для этого требуется использовать запрос с параметрами.

Запрос с параметрами — это такой запрос, где применяются заполнители (%s) на месте параметров, а значения подставляются уже во время работы программы. Таким образом эти запросы компилируются всего один раз.


import psycopg2
from psycopg2 import Error

def get_mobile_details(mobile_id):
try:
# Подключиться к существующей базе данных
connection = psycopg2.connect(user="postgres",
# пароль, который указали при установке PostgreSQL
password="1111",
host="127.0.0.1",
port="5432",
database="postgres_db")

cursor = connection.cursor()
postgresql_select_query = "select * from mobile where id = %s"

cursor.execute(postgresql_select_query, (mobile_id,))
mobile_records = cursor.fetchall()
for row in mobile_records:
print("Id =", row[0], )
print("Модель =", row[1])
print("Цена =", row[2])

except (Exception, Error) as error:
print("Ошибка при работе с PostgreSQL", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")

get_mobile_details(2)
get_mobile_details(3)

Вывод:

Id = 2
Модель = Google Pixel 2
Цена = 700. 0
Соединение с PostgreSQL закрыто
Id = 3
Модель = Samsung Galaxy S21
Цена = 900.0
Соединение с PostgreSQL закрыто

Получение определенного количества строк

Если таблица содержит тысячи строк, то получение всех из них может занять много времени. Но существует альтернатива в виде cursor.fetchmany().

Вот ее синтаксис:

cursor.fetchmany([size=cursor.arraysize])
  • size — это количество строк, которые требуется получить.
  • этот метод делает запрос на определенное количество строк из результата запроса. fetchmany() возвращает список кортежей, содержащих строки.
  • fetchmany() возвращает пустой список, если строки не были найдены. Количество строк зависит от аргумента SIZE. Ошибка ProgrammingError возникает в том случае, если предыдущий вызов execute() не дал никаких результатов.

fetchmany() вернет меньше строк, если в таблице их меньше, чем было указано в аргументе SIZE.

Пример получения ограниченного количества строк из таблицы PostgreSQL с помощью cursor.fetchmany():


import psycopg2
from psycopg2 import Error

try:
# Подключиться к существующей базе данных
connection = psycopg2.connect(user="postgres",
# пароль, который указали при установке PostgreSQL
password="1111",
host="127.0.0.1",
port="5432",
database="postgres_db")

cursor = connection.cursor()
postgresql_select_query = "select * from mobile"

cursor.execute(postgresql_select_query)
mobile_records = cursor.fetchmany(2)

print("Вывод двух строк")
for row in mobile_records:
print("Id =", row[0], )
print("Модель =", row[1])
print("Цена =", row[2], "\n")

mobile_records = cursor.fetchmany(2)

print("Вывод следующих двух строк")
for row in mobile_records:
print("Id =", row[0], )
print("Модель =", row[1])
print("Цена =", row[2], "\n")

except (Exception, Error) as error:
print("Ошибка при работе с PostgreSQL", error)
finally:
if connection:
cursor. close()
connection.close()
print("Соединение с PostgreSQL закрыто")

Вывод:

Вывод двух строк
Id = 1
Модель = IPhone 12
Цена = 1000.0 

Id = 2
Модель = Google Pixel 2
Цена = 700.0 

Вывод следующих двух строк
Id = 3
Модель = Samsung Galaxy S21
Цена = 900.0 

Id = 4
Модель = Nokia
Цена = 800.0 

Соединение с PostgreSQL закрыто

Использование cursor.fetchone

  • Используйте cursor.fetchone() для получения одной строки из таблицы PostgreSQL.
  • Также можно использовать этот же метод для получения следующей строки из результатов запроса.
  • Он может вернуть и none, если в результате не оказалось записей
  • cursor.fetchall() и fetchmany() внутри также используют этот метод.

Пример получения одной строки из базы данных PostgreSQL:


import psycopg2
from psycopg2 import Error

try:
# Подключиться к существующей базе данных
connection = psycopg2. connect(user="postgres",
# пароль, который указали при установке PostgreSQL
password="1111",
host="127.0.0.1",
port="5432",
database="postgres_db")

cursor = connection.cursor()
postgresql_select_query = "select * from mobile"

cursor.execute(postgresql_select_query)

mobile_records_one = cursor.fetchone()
print ("Вывод первой записи", mobile_records_one)

mobile_records_two = cursor.fetchone()
print("Вывод второй записи", mobile_records_two)

except (Exception, Error) as error:
print("Ошибка при работе с PostgreSQL", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")

Вывод первой записи (1, 'IPhone 12', 1000.0)
Вывод второй записи (2, 'Google Pixel 2', 700.0)
Соединение с PostgreSQL закрыто

Работа с PostgreSQL в Python

PostgreSQL, пожалуй, это самая продвинутая реляционная база данных в мире Open Source Software. По своим функциональным возможностям она не уступает коммерческой БД Oracle и на голову выше собрата MySQL.

Если вы создаёте на Python веб-приложения, то вам не избежать работы с БД. В Python самой популярной библиотекой для работы с PostgreSQL является psycopg2. Эта библиотека написана на Си на основе libpq.

Установка

Тут всё просто, выполняем команду:

pip install psycopg2

Для тех, кто не хочет ставить пакет прямо в системный python, советую использовать pyenv для отдельного окружения. В Unix системах установка psycopg2 потребует наличия вспомогательных библиотек (libpq, libssl) и компилятора. Чтобы избежать сборки, используйте готовый билд:

pip install psycopg2-binary

Но для production среды разработчики библиотеки рекомендуют собирать библиотеку из исходников.

Начало работы

Для выполнения запроса к базе, необходимо с ней соединиться и получить курсор:

import psycopg2
conn = psycopg2. connect(dbname='database', user='db_user', 
                        password='mypassword', host='localhost')
cursor = conn.cursor()

Через курсор происходит дальнейшее общение в базой.

cursor.execute('SELECT * FROM airport LIMIT 10')
records = cursor.fetchall()
...
cursor.close()
conn.close()

После выполнения запроса, получить результат можно несколькими способами:

  • cursor.fetchone() — возвращает 1 строку
  • cursor.fetchall() — возвращает список всех строк
  • cursor.fetchmany(size=5) — возвращает заданное количество строк

Также курсор является итерируемым объектом, поэтому можно так:

for row in cursor:
    print(row)

Хорошей практикой при работе с БД является закрытие курсора и соединения. Чтобы не делать это самому, можно воспользоваться контекстным менеджером:


from contextlib import closing

with closing(psycopg2.connect(. ..)) as conn:
    with conn.cursor() as cursor:
        cursor.execute('SELECT * FROM airport LIMIT 5')
        for row in cursor:
            print(row)

По умолчанию результат приходит в виде кортежа. Кортеж неудобен тем, что доступ происходит по индексу (изменить это можно, если использовать NamedTupleCursor). Если хотите работать со словарём, то при вызове .cursor передайте аргумент cursor_factory:

from psycopg2.extras import DictCursor
with psycopg2.connect(...) as conn:
    with conn.cursor(cursor_factory=DictCursor) as cursor:
        ...

Формирование запросов

Зачастую в БД выполняются запросы, сформированные динамически. Psycopg2 прекрасно справляется с этой работой, а также берёт на себя ответственность за безопасную обработку строк во избежание атак типа SQL Injection:

cursor.execute('SELECT * FROM airport WHERE city_code = %s', ('ALA', ))
for row in cursor:
    print(row)

Метод execute вторым аргументом принимает коллекцию (кортеж, список и т. д.) или словарь. При формировании запроса необходимо помнить, что:

  • Плейсхолдеры в строке запроса должны быть %s, даже если тип передаваемого значения отличается от строки, всю работу берёт на себя psycopg2.
  • Не нужно обрамлять строки в одинарные кавычки.
  • Если в запросе присутствует знак %, то его необходимо писать как %%.

Именованные аргументы можно писать так:

>>> cursor.execute('SELECT * FROM engine_airport WHERE city_code = %(city_code)s',
                   {'city_code': 'ALA'})
...

Модуль psycopg2.sql

Начиная с версии 2.7, в psycopg2 появился модуль sql. Его цель — упростить и обезопасить работу при формировании динамических запросов. Например, метод execute курсора не позволяет динамически подставить название таблицы.

>>> cursor.execute('SELECT * FROM %s WHERE city_code = %s', ('airport', 'ALA'))
psycopg2.ProgrammingError: ОШИБКА:  ошибка синтаксиса (примерное положение: "'airport'")
LINE 1: SELECT * FROM 'airport' WHERE city_code = 'ALA'

Это можно обойти, если сформировать запрос без участия psycopg2, но есть высокая вероятность оставить брешь (привет, SQL Injection!). Чтобы обезопасить строку, воспользуйтесь функцией psycopg2.extensions.quote_ident, но и про неё легко забыть.

from psycopg2 import sql
...
>>> with conn.cursor() as cursor:
        columns = ('country_name_ru', 'airport_name_ru', 'city_code')
        stmt = sql.SQL('SELECT {} FROM {} LIMIT 5').format(
            sql.SQL(',').join(map(sql.Identifier, columns)),
            sql.Identifier('airport')
        )
        cursor.execute(stmt)
        for row in cursor:
            print(row)
('Французская Полинезия', 'Матайва', 'MVT')
('Индонезия', 'Матак', 'MWK')
('Сенегал', 'Матам', 'MAX')
('Новая Зеландия', 'Матамата', 'MTA')
('Мексика', 'Матаморос', 'MAM')

Транзакции

По умолчанию транзакция создаётся до выполнения первого запроса к БД, и все последующие запросы выполняются в контексте этой транзакции. Завершить транзакцию можно несколькими способами:

  • закрыв соединение conn.close()
  • удалив соединение del conn
  • вызвав conn. commit() или conn.rollback()

Старайтесь избегать длительных транзакций, ни к чему хорошему они не приводят. Для ситуаций, когда атомарные операции не нужны, существует свойство autocommit для connection класса. Когда значение равно True, каждый вызов execute будет моментально отражен на стороне БД (например, запись через INSERT).

with conn.cursor() as cursor:
    conn.autocommit = True
    values = [
        ('ALA', 'Almaty', 'Kazakhstan'),
        ('TSE', 'Astana', 'Kazakhstan'),
        ('PDX', 'Portland', 'USA'),
    ]
    insert = sql.SQL('INSERT INTO city (code, name, country_name) VALUES {}').format(
        sql.SQL(',').join(map(sql.Literal, values))
    )
    cursor.execute(insert)

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

консольная утилита для работы с PostgreSQL — PostgreSQL Cook Book

Стань power user’ом PSQL!

Вывод peзультатов запроса не в строку, а столбцом

Ключ \x

Покажу на примере, как это выглядит (это очень хорошо работает на запросах со множеством столбцов и «узким» экраном)

denis=# select * from pg_stat_activity;

 datid  | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port |         backend_start         |          xact_start          |         query_start          | waiting |          current_query
--------+---------+---------+----------+---------+------------------+-------------+-----------------+-------------+-------------------------------+------------------------------+------------------------------+---------+---------------------------------
 629830 | denis   |   13205 |   629829 | denis   | psql             |             |                 |          -1 | 2012-11-10 11:57:05. 634017+06 | 2012-11-10 11:59:11.27402+06 | 2012-11-10 11:59:11.27402+06 | f       | select * from pg_stat_activity;
(1 row)


-- Включаю альтернативный режим отображения результатов запроса


denis=# \x
Expanded display is on.

denis=# select * from pg_stat_activity;

-[ RECORD 1 ]----+--------------------------------
datid            | 629830
datname          | denis
procpid          | 20187
usesysid         | 629829
usename          | denis
application_name | psql
client_addr      |
client_hostname  |
client_port      | -1
backend_start    | 2012-11-07 23:29:00.264029+06
xact_start       | 2012-11-07 23:29:47.653051+06
query_start      | 2012-11-07 23:29:47.653051+06
waiting          | f
current_query    | select * from pg_stat_activity;

Выход в шел без прерывания сессии работы с базой данных

Ключ \!

denis=# \!

denis@server:~$ ls -l
total 126172
drwxr-xr-x  2 denis denis      4096 Oct 21 10:28 Desktop
drwxr-xr-x  3 denis denis      4096 Nov  5 10:03 Documents
drwxr-xr-x 14 denis denis     12288 Nov  7 16:45 Downloads
drwx------ 11 denis denis      4096 Nov  7 08:19 Dropbox
drwxr-xr-x 19 denis denis      4096 Sep 30 23:03 Music
drwxr-xr-x  3 denis denis      4096 Oct  9 12:44 Pictures
drwxrwxr-x 11 denis denis      4096 Nov  3 17:27 Projects
drwxr-xr-x  2 denis denis      4096 Sep 26 20:03 Public
drwxrwxr-x  2 denis denis      4096 Sep 27 10:17 Snapshots
drwxr-xr-x  2 denis denis      4096 Sep 26 20:03 Templates

denis@server:~$ exit
exit

denis=# \q

denis@server: ~$

Редактирование запросов во внешнем редакторе

Многострочные запросы очень неудобно редактировать в стандартной строке psql.
Но есть возможность редактировать запросы во внешнем редакторе.

Ключ \e

При вводе ключа \e запускается внешний редактор, в котором уже содержится последний запрос, который был введен в psql.
Запрос можно отредактировать или ввести новый, сохранить файл и выйти из редактора. Если в конце запроса стоит точка с запятой,
то запрос будет выполнен сразу после закрытия редактора. В противном случае, чтобы запрос выполнился, надо будет ввести точку
с запятой уже в psql и нажать ENTER.

За то, какой редактор вызывается, отвечает переменная окружения PSQL_EDITOR, которую можно настроить на vim:

Прокрутка результата выполнения запроса вперед/назад

Довольно часто в дистрибутивах linux в качестве программы для постраничного вывода результатов выполнения запросов используется
программа more, которую не всегда удобно использовать для интерактивной работы с результатом запроса (производить поиск,
прокручивать результат запрос вверх/вниз, выводить результат запроса с использованием переноса строк).

Выход есть! Можно заменить more на less, которая позволяет интерактивно работать с результатом запроса.
Для этого необходимо установить следующие переменные окружения:

export PAGER="less"
export LESS="-iMSx4 -FX"

Помимо всего вышеперечисленного опция S отключает перенос длинных строк, что улучшает читабельность результата запроса.

Примечание

Есть неприятная особенность работы с less, если приходится прокручивать результат запроса вправо/влево — в этом случае,
генерируется много пустых экранов, которые занимают много места вверху терминала (опция X). Однако часто эта небольшая неприятность
перекрывается остальными преимуществами less

Включить/отключить постраничный вывод результата запроса можно опцией

Время выполнения запроса

Вывод времени выполнения запрос выключается опцией \timing

denis=# \timing
Timing is on. 
denis=# select 1;
 ?column?
----------
        1
(1 row)

Time: 0.280 ms

Редактирование хранимой процедуры

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

Для этого служит опция \ef <procedure name>

При использовании этой опции запускается редактор, указанный в переменной окружения PSQL_EDITOR

Сохранения результатов запросов в файл

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

Пример:

Есть таблица customers (id int4, first_name varchar(64), last_name varchar(64)).
Её нужно перенести в другую базу данных в таблицу temp_customers

Сохраняю содержимое таблицы в файл customers.dump:

db1# \copy customers to 'customers.dump'

Загружаю содержимое файла в другую таблицу:

db2# \copy temp_customers from 'customers.dump'

Примечание

Важно, чтобы таблицы, которые участвуют в переносе, имели одинаковую структуру

Поиск по прошлым запросам

Поиск по запросам под OS linux работает аналогично поиску в BASH’е. Находясь в консоле, надо нажать CTRL+R

Появляется приглашение ввести буквы, по которым будет производиться поиск

denis=#
(reverse-i-search)`':

По мере ввода букв уточняется запрос, который вы ищите.

denis=#
(reverse-i-search)`dr': drop sequence eobjects_objects_15_id_seq;

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

  • ENTER — выполнение найденного запрос
  • ESC — переход в режим редактирования найденного запроса
  • CTRL+R — циклический перебор sql-запросов, которые соответствуют введенной строке поиска
  • CTRL+G — закрытие режима поиска без выполнения запроса

PostgreSQL SELECT

Резюме : в этом руководстве вы узнаете, как использовать базовый оператор PostgreSQL SELECT для запроса данных из таблицы.

Обратите внимание: если вы не знаете, как выполнить запрос к базе данных PostgreSQL с помощью инструмента командной строки psql или инструмента pgAdmin с графическим интерфейсом пользователя, вы можете проверить это в руководстве по подключению к базе данных PostgreSQL.

Одна из наиболее распространенных задач при работе с базой данных — запрос данных из таблиц с помощью оператора SELECT .

Оператор SELECT — один из самых сложных операторов PostgreSQL. В нем много предложений, которые можно использовать для формирования гибкого запроса.

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

Оператор SELECT имеет следующие предложения:

В этом руководстве вы сосредоточитесь на предложениях SELECT и FROM .

PostgreSQL

синтаксис оператора SELECT

Давайте начнем с базовой формы оператора SELECT , который извлекает данные из одной таблицы.

Ниже показан синтаксис оператора SELECT :

 

SELECT select_list ИЗ table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

Давайте рассмотрим инструкцию SELECT более подробно:

  • Сначала укажите список выбора, который может быть столбцом или списком столбцов в таблица, из которой вы хотите получить данные.Если вы указываете список столбцов, вам нужно поставить запятую (, ) между двумя столбцами, чтобы разделить их. Если вы хотите выбрать данные из всех столбцов таблицы, вы можете использовать сокращенное обозначение звездочки ( * ) вместо указания всех имен столбцов. Список выбора может также содержать выражения или буквальные значения.
  • Во-вторых, укажите имя таблицы, из которой вы хотите запросить данные, после ключевого слова FROM .

Предложение FROM является необязательным.Если вы не запрашиваете данные из какой-либо таблицы, вы можете опустить предложение FROM в инструкции SELECT .

PostgreSQL оценивает предложение FROM перед предложением SELECT в операторе SELECT :

Обратите внимание, что ключевые слова SQL нечувствительны к регистру. Это означает, что SELECT эквивалентно select или Select . По соглашению мы будем использовать все ключевые слова SQL в верхнем регистре, чтобы упростить чтение запросов.

PostgreSQL

Примеры SELECT

Давайте взглянем на некоторые примеры использования оператора PostgreSQL SELECT .

Мы будем использовать следующую таблицу customer в базе данных образца для демонстрации.

1) Использование оператора PostgreSQL

SELECT для запроса данных из одного столбца. Пример

В этом примере используется оператор SELECT для поиска имен всех клиентов из таблицы customer :

 

SELECT first_name FROM customer ;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот частичный вывод:

Обратите внимание, что мы добавили точку с запятой (; ) в конце оператора SELECT .Точка с запятой не является частью оператора SQL. Он используется, чтобы сигнализировать PostgreSQL о завершении оператора SQL. Точка с запятой также используется для разделения двух операторов SQL.

2) Использование оператора PostgreSQL

SELECT для запроса данных из нескольких столбцов, пример

Предположим, вы просто хотите знать имя, фамилию и адрес электронной почты клиентов, вы можете указать эти имена столбцов в предложении SELECT , как показано в следующем запросе:

 

SELECT имя, Фамилия, электронное письмо ИЗ клиент;

Язык кода: SQL (язык структурированных запросов) (sql)

3) Использование оператора PostgreSQL

SELECT для запроса данных из всех столбцов таблицы. Пример

В следующем запросе для выбора данных используется оператор SELECT из всех столбцов таблицы клиент :

 

ВЫБРАТЬ * ОТ клиента;

Язык кода: SQL (язык структурированных запросов) (sql)

В этом примере мы использовали звездочку ( * ) в предложении SELECT , которое является сокращением для всех столбцов.Вместо того, чтобы перечислять все столбцы в предложении SELECT , мы просто использовали звездочку ( * ), чтобы не печатать.

Однако не рекомендуется использовать звездочку ( * ) в инструкции SELECT , когда вы встраиваете операторы SQL в код приложения, например Python, Java, Node.js или PHP, по следующим причинам. :

  1. Производительность базы данных. Предположим, у вас есть таблица с множеством столбцов и большим количеством данных, оператор SELECT со звездочкой ( * ) будет выбирать данные из всех столбцов таблицы, которые могут не понадобиться приложению.
  2. Производительность приложения. Получение ненужных данных из базы данных увеличивает трафик между сервером базы данных и сервером приложений. Как следствие, ваши приложения могут медленнее реагировать и менее масштабируемы.

По этим причинам рекомендуется явно указывать имена столбцов в предложении SELECT , когда это возможно, чтобы получить только необходимые данные из базы данных.

И вы должны использовать только обозначение звездочки (*) для специальных запросов, которые исследуют данные из базы данных.

4) Использование оператора PostgreSQL

SELECT с выражениями, пример

В следующем примере оператор SELECT используется для возврата полных имен и адресов электронной почты всех клиентов:

 

SELECT first_name || '' || Фамилия, электронное письмо ИЗ клиент;

Язык кода: SQL (язык структурированных запросов) (sql)

Вывод:

В этом примере мы использовали оператор конкатенации || для объединения имени, пробела и фамилии каждого клиента.

В следующем руководстве вы узнаете, как использовать псевдонимы столбцов для присвоения выражениям более значимых имен.

5) Использование оператора PostgreSQL

SELECT с выражениями, пример

В следующем примере оператор SELECT используется с выражением. Он опускает предложение FROM :

 

SELECT 5 * 3;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

В этом руководстве вы узнали, как использовать базовую форму оператора PostgreSQL SELECT для запроса данных из единый стол.

Было ли это руководство полезным?

Оператор PostgreSQL SELECT INTO на практических примерах

Резюме : в этом руководстве вы узнаете, как использовать оператор PostgreSQL SELECT INTO для создания новой таблицы из набора результатов запроса.

Если вы ищете способ выделения данных в переменные, обратите внимание на оператор PL / pgSQL SELECT INTO .

Введение в оператор PostgreSQL SELECT INTO

Оператор PostgreSQL SELECT INTO создает новую таблицу и вставляет в нее данные, возвращенные из запроса.

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

Ниже показан синтаксис оператора PostgreSQL SELECT INTO :

 

SELECT select_list В [ВРЕМЕННОЕ | ТЕМП | UNLOGGED] [ТАБЛИЦА] имя_новой_таблицы ИЗ table_name ГДЕ search_condition;

Язык кода: SQL (язык структурированных запросов) (sql)

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

Ключевое слово TEMP или TEMPORARY является необязательным; вместо этого вы можете создать временную таблицу.

Ключевое слово UNLOGGED , если оно доступно, сделает новую таблицу незарегистрированной.

Предложение WHERE позволяет указать строки из исходных таблиц, которые следует вставить в новую таблицу. Помимо предложения WHERE , вы можете использовать другие предложения в операторе SELECT для оператора SELECT INTO , например INNER JOIN , LEFT JOIN , GROUP BY и HAVING .

Обратите внимание, что вы не можете использовать оператор SELECT INTO в PL / pgSQL, поскольку он по-разному интерпретирует предложение INTO . В этом случае вы можете использовать оператор CREATE TABLE AS , который предоставляет больше функциональных возможностей, чем оператор SELECT INTO .

PostgreSQL SELECT INTO examples

Для демонстрации мы будем использовать таблицу film из базы данных примеров.

Следующий оператор создает новую таблицу с именем film_r , которая содержит фильмы с рейтингом R и длительностью проката 5 дней из таблицы film .

 

ВЫБРАТЬ film_id, заглавие, арендная плата В ТАБЛИЦУ film_r ИЗ фильм ГДЕ рейтинг = 'R' И Rental_duration = 5 СОРТИРОВАТЬ ПО заглавие;

Язык кода: SQL (язык структурированных запросов) (sql)

Чтобы проверить создание таблицы, вы можете запросить данные из таблицы film_r :

 

SELECT * FROM film_r;

Язык кода: SQL (язык структурированных запросов) (sql)

Следующий оператор создает временную таблицу с именем short_film , которая содержит фильмы продолжительностью менее 60 минут.

 

ВЫБРАТЬ film_id, заглавие, длина В ТАБЛИЦУ TEMP short_film ИЗ фильм ГДЕ длина <60 СОРТИРОВАТЬ ПО заглавие;

Язык кода: SQL (язык структурированных запросов) (sql)

Ниже показаны данные из таблицы short_film :

 

SELECT * FROM short_film;

Язык кода: SQL (язык структурированных запросов) (sql)

В этом руководстве вы узнали, как использовать оператор PostgreSQL SELECT INTO для создания новой таблицы из набора результатов запроса.

Было ли это руководство полезным?

Псевдоним столбца PostgreSQL

Резюме : в этом руководстве вы узнаете о псевдонимах столбцов PostgreSQL и о том, как использовать псевдонимы столбцов для присвоения временных имен столбцам в запросах.

Введение в псевдонимы столбцов PostgreSQL

Псевдоним столбца позволяет вам назначить столбцу или выражению в списке выбора оператора SELECT временное имя. Псевдоним столбца временно существует во время выполнения запроса.

Ниже показан синтаксис использования псевдонима столбца:

 

ВЫБРАТЬ имя_столбца AS псевдоним_имя FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

В этом синтаксисе столбцу имя_столбца назначается псевдоним alias_name . Ключевое слово AS является необязательным, поэтому его можно опустить следующим образом:

 

SELECT column_name alias_name FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

Следующий синтаксис показывает, как установить псевдоним для выражения в предложении SELECT :

 

SELECT выражение AS alias_name FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

Основная цель псевдонимов столбцов - сделать заголовки вывода запроса более значимыми.

Примеры псевдонимов столбцов PostgreSQL

Мы воспользуемся таблицей customer из образца базы данных, чтобы показать вам, как работать с псевдонимами столбцов.

1) Назначение псевдонима столбца для примера столбца

Следующий запрос возвращает имена и фамилии всех клиентов из таблицы customer :

 

SELECT имя, Фамилия ОТ заказчика;

Язык кода: SQL (язык структурированных запросов) (sql)

Если вы хотите переименовать заголовок last_name , вы можете присвоить ему новое имя, используя псевдоним столбца, например:

 

SELECT имя, last_name КАК фамилия ОТ заказчика;

Язык кода: SQL (язык структурированных запросов) (sql)

Этот запрос назначил фамилию как псевдоним столбца last_name :

Или вы можете сделать его короче, удалив ключевое слово AS следующим образом:

 

ВЫБРАТЬ имя, фамилия ОТ заказчика;

Язык кода: SQL (язык структурированных запросов) (sql)

2) Назначение псевдонима столбца для примера выражения

Следующий запрос возвращает полные имена всех клиентов. Он создает полное имя путем объединения имени, пробела и фамилии:

 

SELECT first_name || '' || Фамилия ИЗ клиент;

Язык кода: SQL (язык структурированных запросов) (sql)

Обратите внимание, что в PostgreSQL вы используете || как оператор конкатенации, который объединяет одну или несколько строк в одну строку.

Как ясно видно из выходных данных, заголовок столбца не имеет смысла ? Column? .

Чтобы исправить это, вы можете присвоить выражение first_name || '' || last_name псевдоним столбца, например, full_name :

 

SELECT first_name || '' || last_name AS полное_имя ИЗ клиент;

Язык кода: SQL (язык структурированных запросов) (sql)

3) Псевдонимы столбцов, содержащие пробелы

Если псевдоним столбца содержит один или несколько пробелов, вам необходимо заключить его в двойные кавычки, например:

 

имя_столбца AS "псевдоним столбца"

Язык кода: PHP (php)

Например:

 

SELECT first_name || '' || last_name "полное имя" ИЗ клиент;

Язык кода: JavaScript (javascript)

Сводка

  • Назначьте столбцу или выражению псевдоним столбца, используя синтаксис имя_столбца AS псевдоним или выражение AS псевдоним .
  • Ключевое слово AS необязательно.
  • Используйте двойные кавычки («), чтобы заключить псевдоним столбца, содержащий пробелы.

Было ли это руководство полезным?

PostgreSQL: инструкция SELECT


В этом руководстве по PostgreSQL объясняется, как использовать оператор SELECT PostgreSQL с синтаксисом и примерами.

Описание

Оператор SELECT PostgreSQL используется для получения записей из одной или нескольких таблиц в PostgreSQL.

Синтаксис

В простейшей форме синтаксис оператора SELECT в PostgreSQL:

 выражения SELECT
ИЗ столов
[ГДЕ условия]; 

Однако полный синтаксис оператора SELECT PostgreSQL:

 ВЫБРАТЬ [ВСЕ | ОТЛИЧИТЕЛЬНЫЙ | DISTINCT ON (отдельные_выражения)]
выражения
ИЗ столов
[ГДЕ условия]
[GROUP BY выражения]
[ИМЕЕТ состояние]
[ORDER BY выражение [ASC | DESC | USING оператор] [ПЕРВЫЕ НУЛИ | NULLS LAST]]
[LIMIT [number_rows | ВСЕ]
[OFFSET offset_value [ROW | ROWS]]
[ПОИСК {ПЕРВЫЙ | ДАЛЕЕ} [fetch_rows] {ROW | ТОЛЬКО ROWS}]
[ДЛЯ {ОБНОВЛЕНИЯ | ДОЛЯ} В таблице [СЕЙЧАС]]; 

Параметры или аргументы

ВСЕ
Необязательно. Возвращает все совпадающие строки.
DISTINCT
Необязательно. Удаляет дубликаты из набора результатов. Узнать больше о статье DISTINCT
ОТЛИЧИТЬ НА
Необязательно. Удаляет дубликаты на основе unique_expressions . Подробнее о предложении DISTINCT ON.
выражения
Столбцы или вычисления, которые вы хотите получить. Используйте *, если хотите выбрать все столбцы.
стола
Таблицы, из которых вы хотите получить записи.В предложении FROM должна быть хотя бы одна таблица.
ГДЕ условия
Необязательно. Условия, которые должны быть выполнены для выбора записей.
Выражения GROUP BY
Необязательно. Он собирает данные из нескольких записей и группирует результаты по одному или нескольким столбцам.
СОСТОЯНИЕ
Необязательно. Он используется в сочетании с GROUP BY, чтобы ограничить группы возвращаемых строк только теми, для которых условие истинно.
ORDER BY выражение
Необязательно. Он используется для сортировки записей в вашем наборе результатов.
ПРЕДЕЛ
Необязательно. Если указан LIMIT, он контролирует максимальное количество извлекаемых записей. Максимальное количество записей, указанное в number_rows , будет возвращено в наборе результатов. Первая строка, возвращаемая LIMIT, будет определяться значением offset_value .
FETCH
Необязательно. Если предоставлен FETCH, он контролирует максимальное количество извлекаемых записей.В наборе результатов будет возвращено самое большее количество записей, заданное параметром fetch_rows . Первая строка, возвращаемая FETCH, будет определяться значением offset_value .
ДЛЯ ОБНОВЛЕНИЯ
Необязательно. Записи, затронутые запросом, блокируются от записи до завершения транзакции
ДЛЯ АКЦИИ
Необязательно. Записи, затронутые запросом, могут использоваться другими транзакциями, но не могут быть обновлены или удалены этими другими транзакциями

Пример - Выбрать все поля из одной таблицы

Давайте посмотрим, как использовать запрос PostgreSQL SELECT для выбора всех полей в таблице.

 ВЫБРАТЬ *
ИЗ категорий
ГДЕ category_id> = 2500
ЗАКАЗАТЬ ПО идентификатору_категории ASC; 

В этом примере оператора PostgreSQL SELECT мы использовали *, чтобы обозначить, что мы хотим выбрать все поля из таблицы категорий , где category_id больше или равен 2500. Набор результатов сортируется по category_id по возрастанию заказывать.

Пример - выбор отдельных полей из одной таблицы

Вы также можете использовать оператор PostgreSQL SELECT для выбора отдельных полей из таблицы, а не всех полей из таблицы.

Например:

 ВЫБЕРИТЕ идентификатор_категории, имя_категории, комментарии
ИЗ категорий
ГДЕ category_name = 'Оборудование'
ORDER BY category_name ASC, комментарии DESC; 

Этот пример PostgreSQL SELECT вернет только поля category_id , category_name и комментарии поля из таблицы категорий , где category_name - «Оборудование». Результаты сортируются по category_name в порядке возрастания, а затем по комментариям в порядке убывания.

Пример - выбор полей из нескольких таблиц

Вы также можете использовать оператор PostgreSQL SELECT для извлечения полей из нескольких таблиц.

 ВЫБЕРИТЕ products.имя_продукта, категории.название_категории
ИЗ категорий
INNER JOIN продукты
ВКЛ. Category.category_id = products.category_id
ЗАКАЗАТЬ ПО product_name; 

Этот пример PostgreSQL SELECT объединяет две таблицы, чтобы получить набор результатов, который отображает поля product_name и category_name , где значение category_id соответствует как в таблице категорий , так и в таблице продуктов .Результаты отсортированы по product_name в возрастающем порядке.

PostgreSQL - SELECT INTO - GeeksforGeeks

В PostgreSQL оператор SELECT INTO позволяет пользователям создавать новую таблицу и вставлять данные, возвращаемые запросом. Новые столбцы таблицы имеют имена и типы данных, связанные с выходными столбцами предложения SELECT. В отличие от оператора SELECT, оператор SELECT INTO не возвращает данные клиенту.

  Синтаксис: 
ВЫБРАТЬ
    column_list
В [ВРЕМЕННОЕ | ТЕМП | UNLOGGED] [ТАБЛИЦА] имя_новой_таблицы
ИЗ
    table_name
ГДЕ
    условие; 

В процессе создания новой таблицы со структурой и данными, полученными из набора результатов запроса, необходимо указать имя новой таблицы в предложении INTO.Ключевое слово TEMP или TEMPORARY необязательно; вместо этого он позволяет пользователям создавать временную таблицу.
Предложение WHERE позволяет пользователям указывать данные из исходных таблиц, которые должны быть вставлены в новую таблицу. Помимо предложения WHERE, можно использовать другие предложения в операторе SELECT для оператора SELECT INTO, такие как INNER JOIN, LEFT JOIN, GROUP BY и HAVING.

Теперь давайте рассмотрим несколько примеров. В качестве примеров мы будем использовать образец базы данных (например, dvdrental).

Пример 1:
В этом примере мы будем использовать таблицу film из базы данных dvdrental , чтобы создать новую таблицу с именем film_r , которая содержит все фильмы с рейтингом R и имеет 5 -дневная аренда, используя следующую инструкцию:

 ВЫБРАТЬ
    film_id,
    заглавие,
    арендная плата
В ТАБЛИЦУ film_r
ИЗ
    фильм
ГДЕ
    рейтинг = 'R'
И Rental_duration = 5
СОРТИРОВАТЬ ПО
    заглавие; 

Теперь мы можем проверить созданную таблицу с помощью следующего оператора:

 SELECT
    *
ИЗ
    film_r; 

Вывод:

Пример 2:
В этом примере мы создаем временную таблицу с именем short_film , которая содержит все фильмы продолжительностью менее 60 минут, используя следующую инструкцию:

 SELECT
    film_id,
    заглавие,
    длина
В ТАБЛИЦУ TEMP short_film
ИЗ
    фильм
ГДЕ
    length 

Теперь мы проверяем таблицу short_film с помощью следующего оператора:

 SELECT
    *
ИЗ
    короткий фильм; 

Вывод:

Примечание: Нельзя использовать оператор SELECT INTO в PL / pgSQL или ECPG, потому что они по-разному интерпретируют предложение INTO. В этом случае вы можете использовать оператор CREATE TABLE AS, который предоставляет больше функциональных возможностей, чем оператор SELECT INTO.

DISTINCT в PostgreSQL: Выберите | Порядок и лимит [Примеры]

Вы можете получить данные из таблицы с помощью оператора SELECT.

Синтаксис:

 SELECT [имена столбцов] FROM [имя_таблицы] 

Здесь

  • имена столбцов: имена столбцов, значение которых вы хотите получить.
  • FROM: предложение FROM определяет одну или несколько исходных таблиц. для ВЫБРАТЬ.
  • table_name: имя существующей таблицы, которую вы хотите запросить.

PostgreSQL Select Statement в SQL Shell

Шаг 1) У нас есть таблица «tutorials» с двумя столбцами «id» и «tutorial_name». Давайте запросим это. Используйте следующий запрос для вывода списка данных в таблице

ВЫБЕРИТЕ id, имя_учебника ИЗ учебников;
 

ПРИМЕЧАНИЕ : Используйте команду \ c для подключения к базе данных, содержащей таблицу, которую вы хотите запросить. В нашем случае мы подключены к базе данных guru99.

Шаг 2) Если вы хотите просмотреть все столбцы в определенной таблице, мы можем использовать подстановочный знак звездочки (*). Это означает, что он проверяет все возможности и, как следствие, возвращает каждый столбец.

 ВЫБРАТЬ * ИЗ учебников; 

Отображает все записи таблицы учебных пособий.

Шаг 3) Вы можете использовать предложение ORDER для сортировки данных в таблице на основе определенного столбца. Предложение ORDER упорядочивает данные в порядке от А до Я.

 ВЫБРАТЬ * ИЗ учебников ЗАКАЗАТЬ ПО id; 

Вы можете отсортировать от Я до А, используя «DESC» после оператора «ORDER BY».

 ВЫБРАТЬ * ИЗ учебников ORD BY id DESC; 

Шаг 4) Предложение Select DISTINCT в PostgreSQL можно использовать для удаления повторяющихся строк из результата. Он хранит одну строку для каждой группы дубликатов.

Синтаксис:
ВЫБЕРИТЕ РАЗЛИЧНЫЙ столбец_1 ИЗ имя_таблицы;
 

Позволяет запросить Postgres. Выберите отдельные значения id из наших руководств по таблицам, используя отдельный запрос в PostgreSQL

 SELECT DISTINCT (id) FROM обучающих программ; 

Шаг 5) Вы можете использовать PostgreSQL заказ с помощью предложения LIMIT, чтобы ограничить количество записей, возвращаемых запросом SELECT

 SELECT * FROM учебники LIMIT 4; 

Оператор Select PostgreSQL в PgAdmin

Шаг 1) В дереве объектов

  1. Щелкните правой кнопкой мыши таблицу
  2. Выберите сценарии
  3. Щелкните ВЫБРАТЬ СКРИПТ

Шаг 2) На панели на справа,

  1. При необходимости отредактируйте запрос SELECT
  2. Щелкните значок молнии
  3. Наблюдайте за выводом

Cheat Sheet

 SELECT [имена столбцов] FROM [table_name] [clause] 

Вот различные параметры

  • имена столбцов: Имя столбцов, значение которых вы хотите получить.
  • FROM: Предложение FROM определяет одну или несколько исходных таблиц для уникальных Postgres SELECT.
  • имя_таблицы: имя существующей таблицы, которую вы хотите запросить.

Различные предложения:

Команды Описание

*

Выбирает записи для всех строк в таблице

DISTINCT

Distinct в PostgreSQL поможет вам удалить дубликаты из результата.

ORDER BY

Строки сортировки на основе столбца

Порядок сортировки по умолчанию - по возрастанию.

Используйте ключевое слово DESC для сортировки в порядке убывания

LIMIT

Limit в PostgreSQL ограничивает количество записей, возвращаемых запросом.

Выбор PostgreSQL - javatpoint

В PostgreSQL команда SELECT - это основная команда, используемая для извлечения данных из таблицы базы данных, и данные возвращаются в форме таблицы результатов, которая называется наборами результатов .

Команда select содержит несколько предложений, которые можно использовать для простого написания запроса. Основная задача при выполнении команды select - запросить данные из таблиц в базе данных.

Различные пункты команды SELECT следующие:

  • Сортировать строки с помощью предложения ORDER BY .
  • Сгруппируйте строки в группы с помощью предложения GROUP BY
  • Отфильтруйте строки с помощью предложения WHERE .
  • Отфильтруйте группы с помощью предложения HAVING .
  • Выделите отдельные строки с помощью оператора DISTINCT .
  • Выполните операции с наборами с помощью UNION, INTERSECT и EXCEPT .
  • Объединение с другими таблицами с помощью таких объединений, как LEFT JOIN, INNER JOIN, CROSS JOIN, FULL OUTER JOIN условий.

Здесь мы собираемся обсудить предложения SELECT и FROM , а также другие предложения, которые мы обсудим в следующих разделах руководства по PostgreSQL.

Синтаксис команды выбора PostgreSQL

Команда SELECT используется для восстановления данных из одной таблицы.

Синтаксис команды SELECT следующий:

ВЫБРАТЬ select_list
FROM table_name;

В приведенном выше синтаксисе используются следующие параметры:

Параметры Описание
Select_list Он используется для определения списка выбора, который может быть столбцом или списком столбцов в таблице, из которой мы хотим получить данные
Имя_таблицы Здесь мы определим имя таблицы, из которой мы хотим запросить данные.
Примечание. Если мы описываем список столбцов, мы можем использовать запятую для разделения между двумя столбцами. Если нам не нужно выбирать данные из всех столбцов в таблице, мы можем использовать звездочку (*) вместо описания всех имен столбцов, потому что список выбора может иметь точные значения или выражения.

В языке SQL регистр не учитывается, что означает, что select или SELECT имеют одинаковый результат.

Другой синтаксис команды выбора PostgreSQL

ВЫБРАТЬ столбец1, столбец2,
……
столбецN
FROM table_name;

Здесь мы используем следующий параметр:

Параметры Описание
столбец1, столбец2,….столбец N Они используются для описания столбцов, из которых мы получаем данные.

Если мы хотим получить все поля из таблицы, мы должны использовать следующий синтаксис:

ВЫБРАТЬ * ИЗ имя_таблицы;

Примеры команды Select в PostgreSQL

Здесь мы поймем использование команды Select в PostgreSQL на следующих примерах.

Мы будем использовать таблицу Employee , которую мы создали ранее в схеме Company базы данных javatpoint, для лучшего понимания.

  • Для запроса данных из одного столбца с помощью команды SELECT

В этом примере мы найдем имена всех сотрудников из таблицы сотрудников с помощью команды SELECT:

Выбирать
название
от "Компании". Сотрудник;

Выход

Выполнив вышеуказанный запрос, мы получим следующий результат:

Примечание:

  • Чтобы разделить два оператора SQL, мы будем использовать точку с запятой (;).
  • В этом запросе выше в конце команды выбора мы добавили точку с запятой (;). На этом этапе точка с запятой не является частью объявления SQL, поскольку она используется для обозначения PostgreSQL конца команды SQL.
  • Для запроса данных из нескольких столбцов с помощью команды SELECT

Если мы хотим увидеть данные нескольких столбцов определенной таблицы, мы можем выполнить следующий запрос.

Например, предположим, что нам нужно получить имя, возраст и адрес сотрудника . Следовательно, мы можем определить эти имена столбцов в команде SELECT, как мы видим в следующем запросе:

Выбрать
название,
возраст,
адрес
от "Компании". Сотрудник;

Выход

После выполнения вышеуказанной команды мы получим следующий результат:

  • Для запроса данных во всех столбцах таблицы с помощью команды Select

Если мы хотим получить данные всех столбцов в определенной таблице, мы можем выполнить следующий запрос.

Здесь мы выбираем все столбцы и строки из таблицы employee в схеме Company с помощью следующего запроса:

ВЫБРАТЬ
*
ИЗ
"Сотрудник компании;

Выход

После выполнения вышеуказанного запроса мы получим следующий результат:

В приведенном выше примере мы использовали символ звездочки (*) вместо того, чтобы писать все имена столбцов в команде выбора.Иногда у нас есть n-количество столбцов в таблице, и написание имен всех столбцов становится утомительным процессом.

Но иногда использование звездочки (*) в команде SELECT - не лучший вариант.

Если мы используем в коде встроенные операторы SQL по следующим причинам:

  • У нас есть одна таблица с несколькими столбцами, и нет необходимости использовать команду SELECT со звездочкой (*) для восстановления данных из всех столбцов таблицы.
  • Кроме того, если мы извлечем из базы данных неважные данные, это увеличит нагрузку между уровнями базы данных и приложения. И вывод наших приложений будет менее доступным и осознанным. Таким образом, это лучший подход - открыто описывать имена столбцов в предложении SELECT, потому что каждый раз, вероятно, будут получены только необходимые данные из таблицы.
  • Использование команды SELECT с выражениями

В приведенном ниже примере мы вернем полное имя и адрес всех сотрудников с помощью команды select:

ВЫБРАТЬ
имя КАК полное_имя,
адрес
ИЗ
"Компания".работник;

В приведенном выше запросе мы будем использовать псевдоним столбца AS full_name, чтобы присвоить заголовок столбца выражению имени.

Выход

После выполнения вышеуказанного запроса мы получим следующий результат:

  • Использование команды SELECT с выражениями

Здесь мы выполним команду select с выражением, в котором мы пропускаем пункт From в команду select, поскольку команда не ссылается ни на одну таблицу.

ВЫБЕРИТЕ 4 * 2 КАК результат;

Выход

После выполнения указанной выше команды мы получим следующий результат:


.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *