Изучение целочисленных ограничений в SQL: полное руководство по созданию таблиц

При создании таблиц базы данных в SQL важно учитывать типы данных и их ограничения, особенно при работе с целыми числами. Понимание ограничений целочисленных типов данных гарантирует, что конструкция вашей базы данных будет оптимизирована с точки зрения эффективности хранения и целостности данных. В этой статье мы рассмотрим различные методы установки целочисленных ограничений при создании таблиц в SQL, а также приведем примеры кода.

Метод 1: использование целочисленных типов данных фиксированной длины
Один из подходов к ограничению диапазона целых чисел заключается в использовании целочисленных типов данных фиксированной длины, таких как TINYINT, SMALLINT, INT и BIGINT. Эти типы данных выделяют определенное количество байтов для хранения целочисленных значений, тем самым определяя их верхний и нижний пределы. Рассмотрим пример создания таблицы с целочисленным столбцом фиксированной длины:

CREATE TABLE MyTable (
    id INT,
    age TINYINT,
    salary BIGINT
);

Метод 2: указание целочисленных ограничений
SQL позволяет вам определять ограничения для столбцов, чтобы обеспечить соблюдение определенных правил целостности данных. Вы можете использовать ограничения для ограничения диапазона целых чисел. Вот пример создания таблицы с целочисленным столбцом, ограниченным определенным диапазоном:

CREATE TABLE MyTable (
    id INT,
    age INT CHECK (age BETWEEN 18 AND 99),
    salary INT CHECK (salary >= 0)
);

Метод 3: использование столбцов идентификаторов
Многие системы баз данных предлагают концепцию столбцов идентификаторов, которые автоматически генерируют уникальные целочисленные значения для каждой новой строки, вставленной в таблицу. Используя столбцы идентификаторов, вы можете неявно устанавливать ограничения для генерируемых целых чисел в зависимости от используемого типа данных. Вот пример:

CREATE TABLE MyTable (
    id INT IDENTITY(1,1),
    name VARCHAR(50)
);

Метод 4: пользовательские триггеры проверки целочисленного диапазона
В определенных ситуациях могут потребоваться более сложные правила проверки для целочисленных ограничений, выходящих за рамки того, что предлагают встроенные ограничения. В таких случаях вы можете реализовать собственные триггеры для проверки и обеспечения соблюдения желаемых ограничений. Вот упрощенный пример:

CREATE TABLE MyTable (
    id INT,
    age INT,
    salary INT
);
CREATE TRIGGER LimitIntegerRange
BEFORE INSERT OR UPDATE ON MyTable
FOR EACH ROW
BEGIN
    IF NEW.age < 18 OR NEW.age > 99 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age should be between 18 and 99.';
    END IF;
    IF NEW.salary < 0 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Salary cannot be negative.';
    END IF;
END;