Info
Content

Tutorial

Имена баз данных должны начинаться с буквы и быть не длиннее 63 символов


Команда createdb запущенная без аргументов попытается создать базу с именем пользователя который запустил команду

postgres@two:~$ createdb
createdb: error: database creation failed: ERROR:  database "postgres" already exists
postgres@two:~$

Удалить базу можно командой dropdb

postgres@two:~$ createdb test1234
postgres@two:~$ psql -tAc 'select datname from pg_database;'
postgres
template1
template0
testdb
test1234

postgres@two:~$ dropdb test1234
postgres@two:~$ psql -tAc 'select datname from pg_database;'
postgres
template1
template0
testdb

dropdb без аргументов ничего не сделает в отличие от createdb

postgres@two:~$ dropdb
dropdb: error: missing required argument database name
Try "dropdb --help" for more information.

psql

root@two:/# sudo -u postgres psql -tAc 'select datname from pg_database;'
postgres
template1
template0
testdb
test

Как видим выше у нас имеется база 'test'

root@two:/# getent passwd test
test:x:1000:1000:Test,,,:/home/test:/bin/bash # <-- и пользователь такой тоже есть

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

root@two:/# sudo -u test psql 
psql (13.2 (Debian 13.2-1.pgdg100+1))
Type "help" for help.

test=>

В приглашении может быть решетка или стрелка (их значение очевидно)


Любая таблица представляет собой именованный набор строк
Все строки таблицы имеют одинаковый набор именованных столбцов
При этом каждому столбцу назначается определенный тип данных

Хотя порядок столбоц во всех строках фиксирован, важно помнить что sql не гарантирует какой-либо порядок строк в таблице (хотя их можно явно отсортировать при выводе)

Таблицы объединяются в базы данных, а набор баз данных управляемый одним экземпляром сервера postgresql образует кластер баз данных


В командах sql можно свободно использовать пробелы, табы и переводы строк (например для выравнивания)

Два минуса "--" обозначают начало комментария
Такой комментарий идет до конца строки

sql не чувствителен к регистру в ключевых словах и идентификаторах (за исключением идентификаторов в кавычках)


Интересная штука (хоть и не по теме)
Можно создавать view

test=# select name, city from cities, weather where name = city;
     name      |     city
---------------+---------------
 San Francisco | San Francisco
 San Francisco | San Francisco
(2 rows)

test=# create view mytestview as select name, city from cities, weather where name = city;
CREATE VIEW

test=# select * from mytestview;
     name      |     city
---------------+---------------
 San Francisco | San Francisco
 San Francisco | San Francisco
(2 rows)

test=#

Дальше можно обращаться с представлением как с обычной таблицей

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

Очень часто представления строятся из других предстввлений

select * from pg_views;

Можно наследовать таблицы друг от друга

CREATE TABLE cities (
  name       text,
  population real,
  elevation  int     -- (высота в футах)
);

CREATE TABLE capitals (
  state      char(2) UNIQUE NOT NULL
) INHERITS (cities);

В postgres таблица может наследоваться от ноля до нескольких таблиц

No Comments
Back to top