В этой лабораторной работе мы изучим создание таблиц и типы данных в PostgreSQL. Цель состоит в том, чтобы понять основные типы данных, такие как целые числа, текст, даты и логические значения, которые имеют решающее значение для определения структуры таблиц и обеспечения целостности данных.
Мы подключимся к базе данных PostgreSQL с помощью psql, создадим таблицы с первичными ключами, используя SERIAL, и добавим основные ограничения, такие как NOT NULL и UNIQUE. Затем мы проверим структуру таблицы и вставим данные, чтобы продемонстрировать использование различных типов данных, таких как INTEGER, SMALLINT, TEXT, VARCHAR(n) и CHAR(n).
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"])
postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table")
postgresql/PostgreSQLGroup -.-> postgresql/col_int("Add Integer Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_text("Add Text Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_date("Add Date Column")
postgresql/PostgreSQLGroup -.-> postgresql/key_primary("Set Primary Key")
postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row")
postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data")
postgresql/PostgreSQLGroup -.-> postgresql/col_add("Add New Column")
subgraph Lab Skills
postgresql/table_init -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/col_int -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/col_text -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/col_date -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/key_primary -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/row_add -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/data_all -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
postgresql/col_add -.-> lab-550901{{"Создание таблиц и типы данных в PostgreSQL"}}
end
Изучение типов данных PostgreSQL
В этом шаге мы изучим некоторые из основных типов данных, доступных в PostgreSQL. Понимание типов данных имеет решающее значение для определения структуры таблиц и обеспечения целостности данных. Мы рассмотрим общие типы, такие как целые числа, текст, даты и логические значения.
Сначала давайте подключимся к базе данных PostgreSQL. Откройте терминал и используйте команду psql для подключения к базе данных postgres от имени пользователя postgres. Поскольку пользователь postgres является суперпользователем по умолчанию, вам может потребоваться использовать sudo, чтобы сначала переключиться на этого пользователя.
sudo -u postgres psql
Теперь вы должны находиться в интерактивном терминале PostgreSQL. Вы увидите приглашение, похожее на postgres=#.
Теперь давайте изучим некоторые основные типы данных.
1. Целочисленные типы (Integer Types):
PostgreSQL предлагает несколько целочисленных типов с различными диапазонами. Наиболее распространенными являются INTEGER (или INT) и SMALLINT.
INTEGER: Типичный выбор для большинства целочисленных значений.
SMALLINT: Используется для меньших целочисленных значений для экономии места.
Давайте создадим простую таблицу для демонстрации этих типов:
CREATE TABLE integer_example (
id SERIAL PRIMARY KEY,
quantity INTEGER,
small_quantity SMALLINT
);
Здесь SERIAL — это специальный тип, который автоматически генерирует последовательность целых чисел, что делает его подходящим для первичных ключей.
Теперь вставьте некоторые данные:
INSERT INTO integer_example (quantity, small_quantity) VALUES (100, 10);
INSERT INTO integer_example (quantity, small_quantity) VALUES (2000000, 32767);
Тип BOOLEAN хранит значения true/false (истина/ложь).
Создайте таблицу:
CREATE TABLE boolean_example (
id SERIAL PRIMARY KEY,
is_active BOOLEAN
);
Вставьте данные:
INSERT INTO boolean_example (is_active) VALUES (TRUE);
INSERT INTO boolean_example (is_active) VALUES (FALSE);
Просмотрите данные:
SELECT * FROM boolean_example;
Вывод (Output):
id | is_active
----+-----------
1 | t
2 | f
(2 rows)
Наконец, выйдите из терминала psql:
\q
Теперь вы изучили некоторые из основных типов данных в PostgreSQL. Эти типы данных формируют строительные блоки для создания надежных и хорошо определенных схем баз данных.
Создание таблиц с первичными ключами
В этом шаге мы научимся создавать таблицы с первичными ключами в PostgreSQL. Первичный ключ (primary key) — это столбец или набор столбцов, который однозначно идентифицирует каждую строку в таблице. Он обеспечивает уникальность и служит важным элементом для целостности данных и связей между таблицами.
Сначала давайте подключимся к базе данных PostgreSQL. Откройте терминал и используйте команду psql для подключения к базе данных postgres от имени пользователя postgres.
sudo -u postgres psql
Теперь вы должны находиться в интерактивном терминале PostgreSQL.
В этом примере product_id определен как первичный ключ с использованием ограничения PRIMARY KEY. Ключевое слово SERIAL автоматически создает последовательность для генерации уникальных целочисленных значений для product_id.
Это демонстрирует ограничение первичного ключа в действии, предотвращая дублирующиеся значения.
Наконец, выйдите из терминала psql:
\q
Теперь вы успешно создали таблицу с первичным ключом и увидели, как он обеспечивает уникальность. Это фундаментальная концепция в проектировании баз данных.
Добавление основных ограничений (NOT NULL, UNIQUE)
В этом шаге мы научимся добавлять основные ограничения (constraints) к таблицам в PostgreSQL. Ограничения — это правила, которые обеспечивают целостность и согласованность данных. Мы сосредоточимся на двух фундаментальных ограничениях: NOT NULL и UNIQUE.
Сначала давайте подключимся к базе данных PostgreSQL. Откройте терминал и используйте команду psql для подключения к базе данных postgres от имени пользователя postgres.
sudo -u postgres psql
Теперь вы должны находиться в интерактивном терминале PostgreSQL.
Понимание ограничений (Understanding Constraints)
Ограничения используются для ограничения типа данных, которые могут быть вставлены в таблицу. Это обеспечивает точность и надежность данных в базе данных.
1. Ограничение NOT NULL
Ограничение NOT NULL гарантирует, что столбец не может содержать значения NULL. Это полезно, когда определенная часть информации важна для каждой строки в таблице.
2. Ограничение UNIQUE
Ограничение UNIQUE гарантирует, что все значения в столбце различны. Это полезно для столбцов, которые должны иметь уникальные идентификаторы или значения, такие как имена пользователей или адреса электронной почты (помимо первичного ключа).
Добавление ограничений при создании таблицы (Adding Constraints During Table Creation)
Вы можете добавлять ограничения при создании таблицы. Давайте создадим таблицу под названием employees с ограничениями NOT NULL и UNIQUE:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE
);
В этой таблице:
employee_id является первичным ключом.
first_name и last_name объявлены как NOT NULL, что означает, что они должны иметь значение для каждого сотрудника.
email объявлен как UNIQUE, что гарантирует, что у каждого сотрудника будет уникальный адрес электронной почты.
Теперь давайте попробуем вставить некоторые данные, которые нарушают эти ограничения.
Попытка вставить значение NULL в столбец NOT NULL:
employee_id | first_name | last_name | email | hire_date
-------------+------------+-----------+---------------------+------------
1 | John | Smith | [email protected] | 2023-10-27
2 | Jane | Doe | [email protected] | 2023-10-28
(2 rows)
Наконец, выйдите из терминала psql:
\q
Теперь вы успешно создали таблицу с ограничениями NOT NULL и UNIQUE и увидели, как они обеспечивают целостность данных.
Проверка структуры таблицы
В этом шаге мы научимся проверять структуру таблиц в PostgreSQL. Понимание структуры таблицы, включая имена столбцов, типы данных, ограничения и индексы, необходимо для эффективного запроса и манипулирования данными.
Сначала давайте подключимся к базе данных PostgreSQL. Откройте терминал и используйте команду psql для подключения к базе данных postgres от имени пользователя postgres.
sudo -u postgres psql
Теперь вы должны находиться в интерактивном терминале PostgreSQL.
Команда \d
Основным инструментом для проверки структуры таблицы в psql является команда \d (describe - описать). Эта команда предоставляет подробную информацию о таблице, включая:
Давайте проверим структуру таблицы employees, которую мы создали на предыдущем шаге:
\d employees
Вывод (Output):
Table "public.employees"
Column | Type | Collation | Nullable | Default
-------------+------------------------+-----------+----------+------------------------------------------------
employee_id | integer | | not null | nextval('employees_employee_id_seq'::regclass)
first_name | character varying(50) | | not null |
last_name | character varying(50) | | not null |
email | character varying(100) | | |
hire_date | date | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
"employees_email_key" UNIQUE CONSTRAINT, btree (email)
Вывод предоставляет следующую информацию:
Table "public.employees": Указывает имя таблицы и схему (schema).
Column: Перечисляет имена столбцов (employee_id, first_name, last_name, email, hire_date).
Type: Показывает тип данных каждого столбца (integer, character varying, date).
Nullable: Указывает, может ли столбец содержать значения NULL (not null или пусто).
Default: Показывает значение по умолчанию для столбца (если есть).
Indexes: Перечисляет индексы, определенные для таблицы, включая первичный ключ (employees_pkey) и уникальное ограничение для столбца email (employees_email_key).
Проверка других таблиц
Вы можете использовать команду \d для проверки любой таблицы в базе данных. Например, чтобы проверить таблицу users, созданную на шаге 2:
Чтобы перечислить все таблицы в текущей базе данных, вы можете использовать команду \dt:
\dt
Вывод (Output) (будет варьироваться в зависимости от созданных вами таблиц):
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | boolean_example | table | postgres
public | customers | table | postgres
public | datetime_example | table | postgres
public | employees | table | postgres
public | integer_example | table | postgres
public | products | table | postgres
public | text_example | table | postgres
public | users | table | postgres
(8 rows)
Наконец, выйдите из терминала psql:
\q
Теперь вы узнали, как проверять структуру таблиц в PostgreSQL с помощью команд \d и \dt. Это фундаментальный навык для понимания и работы с базами данных.
Итог (Summary)
В этой лабораторной работе мы изучили основные типы данных PostgreSQL, сосредоточившись на целых числах и тексте. Мы узнали о INTEGER и SMALLINT для хранения целочисленных значений, понимая их различные диапазоны и варианты использования. Мы также рассмотрели TEXT, VARCHAR(n) и CHAR(n) для обработки текстовых данных, отметив различия между строками переменной и фиксированной длины.
Кроме того, мы попрактиковались в создании таблиц с использованием этих типов данных, включая использование SERIAL для автоматической генерации последовательностей первичных ключей. Мы вставили примеры данных в таблицы и проверили данные с помощью операторов SELECT, закрепив наше понимание того, как эти типы данных ведут себя в практическом контексте базы данных.