В SQL, когда вы создаёте поле для идентификатора (id), ключа в таблице, часто используется либо INT, либо SERIAL. Они похожи, но не совсем одно и то же.
INT— просто числовой тип данных. Если вы хотите, чтобы значения увеличивались автоматически (1, 2, 3, …), вам придётся сами этим управлять или использовать дополнительный механизм.SERIAL— это удобный ярлык (синтаксический сахар), который говорит базе: «Создай мнеINT-поле, и настрой так, чтобы оно автоматически увеличивалось при каждом новом INSERT.»
То есть, когда вы пишете:
|
1 2 3 4 5 |
CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT, email TEXT ); |
то… и здесь хочется привести пример, который раскрывает более полную версию запроса.
Но тут мы упираемся в диалекты SQL. На практике вы будете пользоваться какой то конкретной реализацией SQL — например, MySQL, PostgreSQL или MSSQL.
В PostgreSQL полный запрос будет выглядеть так:
|
1 2 3 4 5 6 7 |
CREATE SEQUENCE users_id_seq; CREATE TABLE users ( id INT PRIMARY KEY DEFAULT nextval('users_id_seq'), name TEXT, email TEXT ); |
Отдельно объявляется т.н. последовательность (SEQUENCE), и потом она используется для столбца users.id.
В MySQL это выглядит иначе:
|
1 2 3 4 5 |
CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, -- автоувеличение для MySQL name VARCHAR(100), email VARCHAR(100) ); |
