PostgreSQL - Создание таблиц: Пособие для начинающих

Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир PostgreSQL, конкретно focusing на том, как создавать таблицы. Не волнуйтесь, если вы никогда не писали ни строчки кода – я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого руководства вы будете создавать таблицы, как профи!

PostgreSQL - Create Table

Что такое таблица в PostgreSQL?

Прежде чем мы углубимся в детали создания таблиц, давайте поймем, что такое таблица. Представьте себе таблицу Excel – вы знаете, те сетки с строками и столбцами? Таблица в базе данных очень похожа. Это набор связанных данных, организованных в строки (также называемые записями) и столбцы (также называемые полями).

Например, если вы ведете小型 библиотеку, у вас может быть таблица под названием "Книги" с колонками "Название", "Автор", "ISBN" и "Дата публикации". Каждая строка в этой таблице будет представлять одну книгу вашей библиотеки.

Синтаксис CREATE TABLE

Теперь давайте посмотрим на базовый синтаксис для создания таблицы в PostgreSQL:

CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);

Не пугайтесь! Это проще, чем кажется. Давайте разберем это:

  1. CREATE TABLE: Эта команда говорит PostgreSQL, что вы хотите создать новую таблицу.
  2. table_name: Здесь вы указываете, как вы хотите назвать свою таблицу.
  3. Внутри скобок вы перечисляете все колонки, которые вы хотите в своей таблице.
  4. Для каждой колонки вы указываете:
  • Имя колонки
  • Тип данных (например, INTEGER для целых чисел, TEXT для строк и т.д.)
  • Любые ограничения (например, NOT NULL, если колонка всегда должна иметь значение)

Примеры: Давайте создадим несколько таблиц!

Пример 1: Простая таблица Книги

Давайте начнем с простого примера. Мы создадим таблицу для нашей вымышленной библиотеки:

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

Давайте разберем это:

  • book_id: Это уникальный идентификатор для каждой книги. SERIAL означает, что он будет автоматически увеличиваться для каждой новой добавленной книги.
  • title: Может содержать до 100 символов и не может быть пустым (NOT NULL).
  • author: До 50 символов, также не может быть пустым.
  • publication_date: Это可选но (мы не указали NOT NULL).
  • isbn: Уникален для каждой книги.

Пример 2: Более сложная таблица Клиенты

Теперь давайте создадим slightly более сложную таблицу для клиентов:

CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);

Эта таблица introduces новые concepts:

  • DEFAULT: Мы используем это для registration_date, чтобы автоматически устанавливать текущую дату при добавлении нового клиента.
  • CHECK: Это ensures, что loyalty_points nunca puede ser negativo.

Типы данных в PostgreSQL

PostgreSQL предлагает широкий выбор типов данных. Вот некоторые из них:

Тип данных Описание Пример
INTEGER Целое число 42
SERIAL Автоматически увеличивающееся целое число Автоматически присвоено
VARCHAR(n) Строка переменной длины до n символов 'Hello, World!'
TEXT Строка переменной длины任意长度 'Очень длинный текст...'
DATE Дата (без времени) '2023-06-15'
TIMESTAMP Дата и время '2023-06-15 14:30:00'
BOOLEAN Значение True/False TRUE или FALSE
NUMERIC(p,s) Точное числовое значение с p знаками (s после десятичной точки) 123.45

Ограничения в PostgreSQL

Ограничения – это правила, которые мы устанавливаем для наших колонок. Вот некоторые из них:

Ограничение Описание
NOT NULL Колонка не может содержать NULL значения
UNIQUE Все значения в колонке должны быть разными
PRIMARY KEY Уникально идентифицирует каждую строку в таблице
FOREIGN KEY Обеспечивает целостность ссылок между двумя таблицами
CHECK Обеспечивает, что все значения в колонке удовлетворяют определенному условию
DEFAULT Устанавливает значение по умолчанию для колонки

Ещё несколько примеров

Пример 3: Таблица с внешним ключом

Давайте создадим таблицу 'orders', которая ссылается на нашу таблицу 'customers':

CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);

Эта таблица имеет foreign key (customer_id), который ссылается на таблицу customers, обеспечивая, что каждая запись связана с valid customer.

Пример 4: Таблица с составным primary key

Иногда вам может понадобиться primary key, состоящий из нескольких колонок:

CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);

Эта таблица может использоваться для обработки книг с несколькими авторами или авторов, написавших несколько книг.

Заключение

Поздравляю! Вы только что сделали свои первые шаги в мир создания таблиц в PostgreSQL. Помните, что практика makes perfect. Попробуйте создавать таблицы для разных сценариев – может быть, для музыкальной библиотеки, кулинарной книги или даже для базы данных ваших любимых видеоигр.

Не бойтесь experиментировать и犯 ошибки – это как мы учимся! И всегда помните: в мире баз данных у вас есть сила создавать, изменять и даже удалять целые миры данных. Используйте эту силу мудро, молодой жук!

Счастливого кодирования, и пусть PostgreSQL будет с вами!

Credits: Image by storyset