Directorio de artículos
Limitaciones comunes
Restricción significado : una restricción, utilizada para restringir los datos en la tabla, con el fin de garantizar la precisión y confiabilidad de los datos en la tabla.
Sintaxis:
create table 表名(
字段名 字段类型 约束
)
clasificación:
1. No nulo: no vacío, asegúrese de que el valor del campo no esté vacío, como nombre, número de alumno, etc.
2, predeterminado: la restricción predeterminada, que se utiliza para garantizar que el campo tenga un valor predeterminado, como género
3. Clave principal: la clave principal, para garantizar la unicidad y que no esté vacía, como la identificación del estudiante, la identificación del empleado, etc.
4. Único: garantiza la singularidad y puede estar vacío, como el número de asiento.
5. comprobar: comprobar las restricciones [ no compatible con mysql ]
6, clave externa: clave externa, restringe la relación entre las dos tablas, se utiliza para garantizar que el valor del campo debe provenir del valor de la columna asociada de la tabla principal, agrega una restricción de clave externa de la tabla, utilizada para hacer referencia a una columna en la tabla principal Valores, como el número profesional de la tabla de estudiantes, el número de departamento de la tabla de empleados y el tipo de número de trabajo de la tabla de empleados
La clave principal y la única diferencia:
categoría | Garantizar la singularidad | Si se permite que esté vacío | Cuantos puede haber en una mesa | Ya sea para permitir la combinación |
---|---|---|---|---|
Clave primaria | √ | × | Como máximo 1 | √, pero no recomendado (clave primaria conjunta) |
solamente | √ | √ | Puede haber varios | √, pero no recomendado |
Clave externa:
1. Se requiere establecer la relación de clave externa en la
tabla secundaria. 2. El tipo de la columna de clave externa de la tabla secundaria debe ser consistente o compatible con el tipo de la columna asociada de la tabla primaria. el nombre no es obligatorio.
3. La columna asociada de la tabla principal debe ser una clave. (Por lo general, la clave principal o única)
4. Al insertar datos, inserte primero la tabla principal, luego inserte la tabla secundaria, al eliminar datos, elimine la tabla secundaria primero, y luego elimine la tabla primaria
Cuándo agregar restricciones:
1. Al crear una tabla
2. Al modificar una tabla
Agregue categorías de restricciones:
1. Restricciones a nivel de columna: las
seis restricciones se admiten gramaticalmente, pero las restricciones de clave externa no tienen ningún efecto.
2. Restricciones a nivel de tabla:
todas son compatibles excepto las no vacías y las predeterminadas
CREATE TABLE 表名(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
)
categoría | posición | Tipos de restricciones admitidos | ¿Es posible nombrar una restricción? |
---|---|---|---|
Restricciones a nivel de columna | Detrás de la columna | Las seis restricciones se admiten gramaticalmente, pero las restricciones de clave externa no tienen ningún efecto | Hipocresía |
Restricciones a nivel de tabla | Debajo de todas las columnas | Además de no vacío, predeterminado, otro soporte | Sí (la clave principal no tiene ningún efecto) |
Uno, agregue restricciones al crear una tabla
(1) Agregar restricciones a nivel de columna
Sintaxis:
agregue directamente el tipo de restricción después del nombre y el tipo de campo.
Solo admite: predeterminado, no vacío, clave principal, único
CREATE DATABASE students;
CREATE TABLE major(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);
USE students;
CREATE TABLE stuinfo(
id INT PRIMARY KEY,#主键
stuName VARCHAR(20) NOT NULL,#非空
gender CHAR(1) CHECK(gender="男" OR gender="女"),#检查
seat INT UNIQUE,#唯一
age INT DEFAULT 17,#默认
majorId INT REFERENCES major(id)#外键
);
DESC stuinfo;
#查看stuinfo表中所有的索引,包括主键、外键、唯一
SHOW INDEX FROM stuinfo;
(2) Agregar restricciones a nivel de tabla
Sintaxis: en la parte inferior de cada campo
[RESTRICCIÓN nombre de restricción] tipo de restricción (nombre de campo)
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT ,
CONSTRAINT pk PRIMARY KEY (id),#主键
CONSTRAINT uq UNIQUE (seat),#唯一键
CONSTRAINT ck CHECK (gender='男' OR gender='女'),#检查
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
);
Método de escritura
general : clave primaria general, no vacía, única, etc. como restricciones a nivel de columna, claves externas como restricciones a nivel de tabla
CREATE TABLE IF NOT EXISTS stuinfo(
id INT PRIMARY KEY,
stuname VARCHAR(20) NOT NULL,
sex CHAR(1),
age INT DEFAULT 18,
seat INT UNIQUE,
major_id INT,
CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id)
);
Dos, agregue restricciones al modificar la tabla
Agregue restricciones a nivel de columna:
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束;
Agregue restricciones a nivel de tabla:
ALTER TABLE 表名 ADD 【CONSTRAINT 约束名】 约束类型(字段名) 【外键的引用】;
1. Agregue restricciones no vacías
ALTER TABLE stuinfo
MODIFY COLUMN stuname VARCHAR (20) NOT NULL ;
2. Agregar restricciones predeterminadas
ALTER TABLE stuinfo
MODIFY COLUMN age INT DEFAULT 18 ;
3. Agregar
restricción de nivel de columna de clave principal (1)
ALTER TABLE stuinfo
MODIFY COLUMN id INT PRIMARY KEY ;
(2) Restricciones a nivel de tabla
ALTER TABLE stuinfo
ADD PRIMARY KEY (id) ;
4. Agregue
restricciones de nivel de columna únicas (1)
ALTER TABLE stuinfo
MODIFY COLUMN seat INT UNIQUE ;
(2) Restricciones a nivel de tabla
ALTER TABLE stuinfo
ADD UNIQUE (seat) ;
5. Agregar claves externas
ALTER TABLE stuinfo
ADD FOREIGN KEY(majorid) REFERENCES major(id);
Tres, elimine las restricciones al modificar la tabla
1. Eliminar restricciones no vacías
ALTER TABLE stuinfo
MODIFY COLUMN stuname VARCHAR (20) NULL ;
2. Eliminar la restricción predeterminada
ALTER TABLE stuinfo
MODIFY COLUMN age INT ;
3. Eliminar la clave principal
#方法一
ALTER TABLE stuinfo
MODIFY COLUMN id INT ;
#方法二
ALTER TABLE stuinfo
DROP PRIMARY KEY ;
4. Eliminar único
ALTER TABLE stuinfo
DROP INDEX seat ;
5. Eliminar claves externas
ALTER TABLE stuinfo
DROP FOREIGN KEY major_id ;
SHOW INDEX FROM stuinfo ;
prueba
1. Agregue la restricción PRIMARY KEY (my_emp_id_pk) a la columna id de la tabla emp2
#方式一
ALTER TABLE emp2
MODIFY COLUMN id INT PRIMARY KEY ;
#方式二
ALTER TABLE emp2
ADD CONSTRAINT my_emp_id_pk PRIMARY KEY (id)
2. Agregue la columna dept_id a la tabla emp2 y defina la restricción FOREIGN KEY en ella. La columna asociada es la columna id en la tabla dept2.
ALTER TABLE emp2
ADD COLUMN dept_id INT ;
ALTER TABLE emp2
ADD COLUMN FOREIGN KEY (dept_id) REFERENCES dept2 (id) ;