Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 41 из 52 · 11 мин
Своя таблица: имена столбцов, типы и автоматический id.
Нужен список поставщиков: название, телефон, с какого числа работаем.
Опиши таблицу командой CREATE TABLE: имя, столбцы, тип каждого. Типы я буду проверять при каждой вставке.
CREATE TABLECREATE TABLE имя (столбец тип, …);. После создания таблица пустая и готова к INSERT.CREATE TABLE shifts (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
staff_id integer NOT NULL,
starts_at timestamp NOT NULL
);
INSERT INTO shifts (staff_id, starts_at) VALUES (3, '2025-11-12 08:00');
SELECT * FROM shifts;integer · bigint · smallintinteger — до ±2 млрд, bigint — огромные, smallint — до ±32 тыс.SELECT 2147483647::integer AS int_max, 9000000000::bigint AS big;numericnumeric(7, 2) — до 7 цифр, из них 2 после запятой. Считает без ошибок округления.real и double precision для денег не годятся.SELECT 0.1::numeric + 0.2::numeric AS exact, 0.1::double precision + 0.2::double precision AS float;text · varchartext — строка любой длины. varchar(n) — не длиннее n символов.text — нормальный выбор по умолчанию. Ограничение длины лучше задать через CHECK.SELECT pg_typeof('Блокнот'::text) AS t, 'Блокнот'::varchar(3) AS cut;booleantrue, false или NULL.SELECT name, is_available FROM products WHERE NOT is_available;date · timestamp · timestamptzdate — день, timestamp — день и время, timestamptz — с часовым поясом, хранит точный момент.SELECT date '2025-11-12' AS d, timestamp '2025-11-12 08:00' AS ts, timestamptz '2025-11-12 08:00+03' AS tz;GENERATED AS IDENTITYid integer GENERATED ALWAYS AS IDENTITY — база сама выдаёт 1, 2, 3… Вариант BY DEFAULT разрешает указать id вручную.CREATE TABLE notes (id integer GENERATED ALWAYS AS IDENTITY, body text);
INSERT INTO notes (body) VALUES ('первая'), ('вторая');
SELECT * FROM notes;serialserial — устаревшая запись автонумерации, её много в старом коде. Делает то же, что IDENTITY.Деньги — numeric, моменты времени — timestamptz, текст — text, id — IDENTITY.
Создай таблицу suppliers: id — integer с GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name — text, phone — text, since — date.
id генерируется сам — пока нетname — text — пока нетphone — text — пока нетsince — date — пока нетcategories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Какой тип выбрать для цены?
Выберите один ответ.
Чем GENERATED ALWAYS AS IDENTITY отличается от BY DEFAULT?
Проверяем состояние обучения…