Основные команды psql и sql Postgresql

Основные команды psql и sql Postgresql

    Развертывание тестовой базы данных

    Тестовая база "Авиаперевозки"

    sudo -u postgres psql -f demo_small_YYYYMMDD.sql psql -f demo_small_YYYYMMDD.sql -U postgres

    Подключение к развернутой базе данных demo:

    sudo -u postgres psql -d demo psql -d demo -U postgres

    Создание таблицы:

    postgres=# \c testdb You are now connected to database "testdb" as user "postgres". testdb=# create table aircrafts (aircraft_code char(3) NOT NULL, model text NOT NULL, range integer NOT NULL, CHECK ( range > 0 ), PRIMARY KEY ( aircraft_code ) ); CREATE TABLE testdb=#

    Здесь:
    char(3) - это символьный тип, ограниченный 3 символами
    NOT NULL - не должен быть пустым
    CHECK - проверка или ограничение
    CHECK ( range > 0 ) - значение атрибута range не может быть меньше 0
    PRIMARY KEY (aircraft_code) - в качестве первичног ключа был выбран атрибут aircraft_code
    Естественный первичный ключ - ключ, который используется на практике
    Чтобы завершить ввод и выполнить команду, необходимо в конце посавить точку с запятой(;) или символ \g
    В случае, если запрос не выполнился, его можно снова открыть при помощи символа \e и выбора редактора
    Чтобы просмотреть созданную таблицу в удобном виде:

    # \d aircrafts Table "public.aircrafts" Column | Type | Collation | Nullable | Default ---------------+--------------+-----------+----------+--------- aircraft_code | character(3) | | not null | model | text | | not null | range | integer | | not null | Indexes: "aircrafts_pkey" PRIMARY KEY, btree (aircraft_code) Check constraints: "aircrafts_range_check" CHECK (range > 0)

    Здесь public.aircrafts это имя схемы и название таблицы, схема public - это схема по умолчанию
    В описании таблицы присутствуют названия индекса.
    Индекс - это специальная структура данных предназначеная для ускорения доступа к строкам таблицы и предотвращения дублирования значений ключевых абтрибутов в различных строках таблицы.
    Для первичного ключа автоматически создается индекс, в выводе он обозначается как имя таблицы: aircrafts + постфикс _pkey, btree - это тип индекса и в скобках ключевой атрибут таблицы: aircraft_code
    Еще ниже указываются ограничения на атрибуты таблицы, название которого было сгенерировано автоматически путем прибавления префикса и постфикса.

    INSERT
    INSERT INTO aircrafts ( aircraft_code, model, range ) VALUES ( '773', 'Boeing 777-300', 11100 ), ( '763', 'Boeing 767-300', 7900 ), ( '733', 'Boeing 737-300', 4200 ), ( '320', 'Airbus A320-200', 5700 ), ( '321', 'Airbus A321-200', 5600 ), ( '319', 'Airbus A319-100', 6700 ), ( 'CN1', 'Cessna 208 Caravan', 1200 ), ( 'CR2', 'Bombardier CRJ-200', 2700 );
    SELECT

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

    WHERE AND OR

    В условии выбора можно использовать операторы >= <= AND OR

    select * from aircrafts where range >= 4000;
    update
    update aircrafts set range = 3500 where aircraft_code = 'SU9' ;

    При использовании update, в качестве значения можно подставлять выражение, например благодаря новым технологиям, дальность полета увеличилась. range = range * 2

    DELETE FROM TABLE
    delete from aircrafts where aircraft_code = 'CN1';
    История выполненных команд

    Чтобы сохранить историю команд в файл:

    \s /home/toly/history_psql.txt
    Группировка строк с помощью GROUP BY

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

    demo=# select aircraft_code, count(*) from seats group by aircraft_code ; aircraft_code | count ---------------+------- CN1 | 12 320 | 140 CR2 | 50 773 | 402 763 | 222 319 | 116 733 | 130 SU9 | 97 321 | 170 (9 rows)
    Сортировка строк с помощью ORDER BY DESC
    SELECT aircraft_code, count( * ) FROM seats GROUP BY aircraft_code ORDER BY count;

    Группировать можно, используя несколько значений для group by
    Сортировать можно используя несколько значений для order by
    Для сортировки по убыванию, добавить DESC:
    ORDER BY range DESC

    Посмотреть все существующие схемы
    select schema_name from information_schema.schemata;

    Альтернативный вариант:

    select nspname from pg_catalog.pg_namespace;
    Вывод всех таблиц схемы
    \dt sdf.*
    Источники
    Последнее изменение: 04.11.2024 18:21


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ