[Super detallado] Restricciones en la base de datos Mysql

Tabla de contenido

1. El concepto y clasificación de las restricciones

1. El concepto de restricciones

2. Clasificación de las restricciones

2. Análisis de casos 

1. Restricción no nula (no nula)

2. Restricción de clave principal (clave principal)

3. Restricciones por defecto (por defecto)

4. Crecimiento automático (auto_incremento)

5. Restricciones de clave externa


1. El concepto y clasificación de las restricciones

1. El concepto de restricciones

  • Las restricciones son reglas que actúan sobre las columnas de una tabla para limitar los datos que se agregan a la tabla.
  • La existencia de restricciones asegura la corrección, validez e integridad de los datos en la base de datos.

2. Clasificación de las restricciones

2. Análisis de casos 

DROP TABLE IF EXISTS emp;

-- 员工表
CREATE TABLE emp (
  id INT PRIMARY KEY auto_increment, -- 员工id,主键且自增长 -- 【auto_increment】
  ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一
  joindate DATE NOT NULL , -- 入职日期,非空
  salary DOUBLE(7,2) NOT NULL , -- 工资,非空
  bonus DOUBLE(7,2) DEFAULT 0 -- 奖金,如果没有奖金默认为0
);

1. Restricción no nula (no nula)

-- 演示非空约束
insert into emp(id,ename,joindate,salary,bonus) values(3,null,'1999-11-11',8800,5000)-- 报错 null
insert into emp(id,ename,joindate,salary,bonus) values(3,"李四",'1999-11-11',8800,5000)-- 报错 唯一

(1) Agregar restricciones:

-- Agregar una restricción no nula al crear la tabla

crear tabla nombre de tabla (

        el tipo de datos del nombre de la columna no es nulo ,

....

) ;

-- Agregar restricciones después de crear la tabla

modificar tabla nombre de tabla modificar nombre de campo tipo de datos no nulo ;

(2) Eliminar restricciones:

modificar tabla nombre de tabla modificar nombre de campo tipo de datos;

2. Restricción de clave principal (clave principal)

-- 演示主键约束:非空且唯一
insert into emp(id,ename,joindate,salary,bonus) values(1,"张三",'1999-11-11',8800,5000);

insert into emp(id,ename,joindate,salary,bonus) values(1,"张三",'1999-11-11',8800,5000);-- 报错,id唯一
insert into emp(id,ename,joindate,salary,bonus) values(null,"张三",'1999-11-11',8800,5000);-- 报错 null

insert into emp(id,ename,joindate,salary,bonus) values(2,"李四",'1999-11-11',8800,5000);

(1) Agregar restricciones:

-- Agregar una restricción de clave principal al crear la tabla

crear tabla nombre de tabla (

        columna nombre tipo de datos clave principal [auto_incremento] ,

....

) ;

crear tabla nombre de tabla (

        tipo de datos de nombre de columna,

        [restricción] [nombre de la restricción] clave principal (nombre de la columna)

....

) ;

-- Agregue restricciones de clave principal después de construir la tabla

alterar el nombre de la tabla de la tabla agregar  la clave principal (nombre del campo) ;

(2) Eliminar restricciones:

modificar tabla tabla nombre soltar clave primaria ; 

3. Restricciones por defecto (por defecto)

-- 演示默认约束
insert into emp(id,ename,joindate,salary) values(3,"王五",'1999-11-11',8800);-- defaut 约束 不给任何值

insert into emp(id,ename,joindate,salary,bonus) values(4,"赵六",'1999-11-11',8800,null);-- null也算值

(1) Agregar restricciones:

-- Agregar restricciones predeterminadas al crear una tabla

crear tabla nombre de tabla (

        nombre de la columna tipo de datos valor predeterminado predeterminado ,

....

) ;

-- Agregar restricciones predeterminadas después de crear la tabla

modificar el nombre de la tabla de la tabla modificar  el nombre de la columna establecer el valor predeterminado predeterminado ;

(2) Eliminar restricciones:

modificar tabla nombre de  tabla arter  columna nombre soltar por defecto ;

4. Crecimiento automático (auto_incremento)

"auto_increment" disponible cuando la columna es numérica y única

-- 演示自动增长:auto_increment:当列是数字类型且为唯一约束时
insert into emp(ename,joindate,salary,bonus) values("赵六",'1999-11-11',8800,null);-- null也算值
insert into emp(id,ename,joindate,salary,bonus) values(null,"赵六2",'1999-11-11',8800,null);
insert into emp(id,ename,joindate,salary,bonus) values(null,"赵六3",'1999-11-11',8800,null);

5. Restricciones de clave externa

  • Concepto: Las claves foráneas se utilizan para establecer conexiones entre los datos de dos tablas para garantizar la coherencia y la integridad de los datos.

/*
	外键约束:
		* 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

	
	-- 创建表时添加外键约束
	CREATE TABLE 表名(
		 列名 数据类型,
		 …
		 [CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名) 
	); 


	-- 建完表后添加外键约束
	ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);


	-- 删除约束
	ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
	
	
*/
-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;


-- 部门表
CREATE TABLE dept(
	id int primary key auto_increment,
	dep_name varchar(20),
	addr varchar(20)
);
-- 员工表 
CREATE TABLE emp(
	id int primary key auto_increment,
	name varchar(20),
	age int,
	dep_id int,

	-- 添加外键 dep_id,关联 dept 表的id主键
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
		
);
-- 添加 2 个部门
insert into dept(dep_name,addr) values
('研发部','广州'),('销售部', '深圳');

-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO emp (NAME, age, dep_id) VALUES 
('张三', 20, 1),
('李四', 20, 1),
('王五', 20, 1),
('赵六', 20, 2),
('孙七', 22, 2),
('周八', 18, 2);

-- ------------------
select * from emp;
select * from dept;


-- 删除外键
alter table emp drop FOREIGN key fk_emp_dept;


-- 建完表后,添加外键
alter table emp add CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id);

5.1 Crear tabla de empleados y tabla de departamentos

-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;


-- 部门表
CREATE TABLE dept(
	id int primary key auto_increment,
	dep_name varchar(20),
	addr varchar(20)
);
-- 员工表 
CREATE TABLE emp(
	id int primary key auto_increment,
	name varchar(20),
	age int,
	dep_id int,

	-- 添加外键 dep_id,关联 dept 表的id主键
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
		
);

 5.2 Sintaxis

(1) Agregar restricciones:

-- Agregar restricciones de clave externa al crear la tabla

crear tabla nombre de tabla (

        tipo de datos de nombre de columna ,

        ....

[restricción] [nombre de clave externa] clave externa (nombre de columna de clave externa) hace referencia a la tabla principal (nombre de columna de la tabla principal)

-- 添加外键 dep_id,关联 dept 表的id主键,外键名称随便写,一般以fk_开头
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)

) ;

-- Agregue restricciones de clave externa después de construir la tabla

modificar tabla nombre de tabla agregar restricción nombre de clave externa clave externa (nombre de campo de clave externa) referencias nombre de tabla principal (nombre de lista principal);

​-- 建完表后,添加外键
alter table emp add CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id);

(2) Eliminar restricciones:

modificar tabla nombre de tabla soltar  clave externa nombre de clave externa ;  

-- 删除外键
alter table emp drop FOREIGN key fk_emp_dept;

Aviso:

  • ¡ Primero cree la tabla maestra y agregue los datos en la tabla , y luego opere en la tabla esclava ! ! !
  • Al eliminar, elimine primero los datos de la tabla esclava para eliminar los datos de la tabla maestra correspondiente . ! !

Supongo que te gusta

Origin blog.csdn.net/weixin_48373085/article/details/128528737
Recomendado
Clasificación