English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Restricciones SQL (Constraints)

En este tutorial, aprenderá cómo usar restricciones SQL.

¿Qué es una restricción?

Las restricciones son limitaciones para una o más columnas de una tabla para limitar el tipo de valores que se pueden almacenar en esa columna. Las restricciones proporcionan un mecanismo estándar para mantener la precisión y la integridad de los datos dentro de las tablas de la base de datos.

En SQL hay varios tipos diferentes de restricciones, incluyendo:

Ahora, vamos a discutir cada restricción en detalle.

Restricción NOT NULL

La restricción NOT NULL especifica que la columna no acepta valores NULL.

Esto significa que si se aplica la restricción NOT NULL a una columna, debe insertar una nueva fila en la tabla sin agregar un valor no NULL para esa columna.

Las siguientes sentencias SQL crean una tabla llamadaperson deLa tabla, que tiene cuatro columnas, de las cuales tresid,nameyphoneNo se aceptan valores NULL.

CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL
);

Nota:Un valor nulo o NULL es diferente de cero, un espacio en blanco o una cadena de longitud cero, por ejemplo ''. NULL indica que aún no se ha ingresado.

Restricción PRIMARY KEY

La restricción PRIMARY KEY identifica las columnas o conjuntos que tienen valores únicos que identifican las filas de la tabla. Ninguna de las dos filas en la tabla puede tener el mismo valor de clave principal. Del mismo modo, no puede ingresar valores NULL en la columna de clave principal.

Las siguientes sentencias SQL crean una tabla llamadapersonsde la tabla, yidLa columna especificada como clave principal. Esto significa que el campo no permite valores NULL o repetidos.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL
);

Consejo:La clave principal generalmente se compone de una columna de una tabla, pero puede estar compuesta por múltiples columnas, por ejemplo, la dirección de correo electrónico del empleado o el número de identificación asignado es la clave lógica de la tabla de empleados.

Restricción única (UNIQUE)

La restricción UNIQUE limita una o más columnas para que contengan valores únicos en la tabla.

A pesar de que las restricciones UNIQUE y PRIMARY KEY obligan a la unicidad, UNIQUE pero PRIMARY KEY cuando desee obligar a la unicidad de una columna o combinación de columnas (en lugar de la clave principal), utilice restricciones en lugar de restricciones.

Las siguientes sentencias SQL crean una tabla llamadapersonsde la tabla, yphonecolumna especificada como unique. Esto significa que el campo no permite valores repetidos.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

Nota:Se pueden definir múltiples restricciones UNIQUE en una tabla, mientras que solo se puede definir una restricción PRIMARY KEY en una tabla. Además, a diferencia de la restricción PRIMARY KEY, la restricción UNIQUE permite valores NULL.

Restricción DEFAULT (DEFAULT)

Restricción DEFAULT especifica el valor predeterminado de la columna.

el valor predeterminado de la columna es cuandoINSERTCuando la sentencia no asigna explícitamente un valor específico para la columna, el motor de base de datos insertará algún valor en la columna.

Las siguientes sentencias SQL son para País/Regiónasignar un valor predeterminado a la columna.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE,
    country VARCHAR(30) NOT NULL DEFAULT 'Australia'
);

Nota:Si se define una columna de tabla como NOT NULL pero se asigna un valor predeterminado para esa columna, no es necesario asignar explícitamente un valor para esa columna en la sentencia INSERT para insertar una nueva fila en la tabla.

Restricción de clave foránea (FOREIGN KEY)

Una clave foránea (FK) es una columna o combinación de columnas que se utiliza para establecer y fortalecer relaciones entre datos de dos tablas.

Esto muestraempleados (employees)yDepartamentos(departmentsla relación entre las tablas (employeesde la tabladept_idde la columna ydepartmentsla columna clave principal de la tabla. Por lo tanto,dept_id para que coincida conde la columnade los empleadosla clave foránea de la tablaDepartamentostabla.

En MySQL, se puede crear una clave foránea al crear una tabla FOREIGN KEY definiendo restricciones. Las siguientes sentencias enemployeesde la tabladept_idestablecer una clave foránea, que se refieredepartmentsde la tabladept_idcolumna.

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

Restricción CHECK (CHECK)

Las restricciones CHECK se utilizan para limitar los valores que se pueden放置 en una columna.

Por ejemplo, se puede crear una restricción CHECK para limitar el rango de valores de la columna de salario, permitiendo solo valores entre3Entre 0,000 y10Entre 0,000 y 0,000. Esto evita que se introduzca un salario que esté fuera del rango normal. Aquí hay un ejemplo:

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT NOT NULL CHECK (salary >= 3000 AND salary <= 10000),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

Nota: MySQL no admite restricciones de verificación SQL. Sin embargo, todos los motores de almacenamiento de MySQL analizarán la cláusula CHECK, pero la ignorarán.