Clave primaria externa de la base de datos

1. Restricciones de clave primaria (identificación única de la tabla)

Características de las columnas que se pueden utilizar como claves primarias: las columnas no pueden estar vacías y no pueden aparecer valores duplicados.

Hay dos formas de especificar la clave principal al crear una tabla:

Crear tabla stu(

sid CHAR(6) clave principal,

nombre VARCHAR(20 años),

Edad INT,

Variable género (10)

);

Especifique la columna sid como columna de clave principal

Crear tabla stu(

sid CHAR(6),

sname VARCHAR(20 años),

edad INT,

variable de género (10),

clave principal (sid)

);

Especifique el columna sid como columna de clave principal

Especifique la clave principal al modificar la tabla: alterar tabla stu agregar clave principal (SID);

Eliminar la clave principal: ALTER TABLE stu DROP primaria key;;

2. La clave principal crece por sí sola

Debido a que la columna de clave principal es única y no puede estar vacía, generalmente especificamos la clave principal como un número entero y luego la configuramos. para crecer automáticamente.

Especifique la clave principal para que crezca automáticamente al crear una tabla:

Crear tabla stu(

sid INT clave principal AUTO_INCREMENT

sname VARCHAR(20 años),

Edad INT,

Género VARCHAR(10)

);

Establezca la clave principal en crece automáticamente al modificar la tabla: ALTER TABLE stu ?

3. Restricción no nula

Crear tabla stu(

sid INT clave primaria AUTO_INCREMENT

sname VARCHAR(20) no es vacío,

Edad INT,

Género VARCHAR(10)

);

Se establece una restricción no nula en el nombre columna.

4. Restricciones únicas

Algunas columnas no pueden tener valores duplicados, por lo que puede agregar restricciones únicas a estas columnas.

Crear tabla stu(

sid INT clave primaria AUTO_INCREMENT

sname VARCHAR(20) no es NULL UNIQUE,

edad INT,

p>

Género VARCHAR(10)

);

6. Restricciones de clave externa

Características de las claves externas: La clave externa debe ser otra tabla El valor de la clave principal (¡la clave externa debe hacer referencia a la clave principal!), la clave externa se puede repetir, la clave externa puede estar vacía y una tabla puede tener varias claves externas.

Crear tabla de departamentos (//tabla de departamentos

nº de departamento INT? La clave principal se incrementa automáticamente,

nombre de departamento CHAR(20)

Insertar en el valor del departamento (10, departamento de I+D);

Insertar en el valor del departamento (20, "Departamento de Recursos Humanos");

Insertar en valor del departamento (30, "Departamento de Finanzas");

Crear tabla emp( // tabla de empleados

empno INT clave primaria AUTO_INCREMENT,

Iname Walchar (50 ),

Dno INT, //departamento del empleado (clave externa),

Restricción fk_emp_dept clave externa (dno) se refiere al departamento (deptno)

);

¿Insertar emp(empno,ename)? VALUES(NULL,'Zhang San'), // Las claves externas no pueden pasar valores.

¿Insertar emp(empno,ename)? Valor (NULL, 'John Doe', 10), // Las claves externas se pueden repetir.

¿Insertar emp(empno,ename)? Valor(vacío,'王五',10),

¿Insertar emp(empno,ename)? VALUES(NULL,'Liu Zhao',80), //La tabla de departamento no tiene un registro con un valor de clave principal de 80 y el cliente SQL compiló un error.

7. Modo de relación uno a uno

Crear tabla de maridos

Crear tabla hashand(

clave primaria INT oculta AUTO_INCREMENT,

hname VARCHAR(50 años),

);

INSERT INTO hashand value (NULL, 'Liu Bei');

INSERT INTO hashand value (NULL,'Guan Yu');

INSERT INTO hashand value (NULL,'Zhang Fei');

SELECT * FROM hashand

//Crear tabla de esposa

Crear primo político (

wid INT clave primaria AUTO_INCREMENT

wname VARCHAR (50 años),

Restricción fk_wife_hashand clave externa (wid)? Consulte hashand(oculto)

)

/**

wid:

1, no vacío

2. Único

3. Tome oculto como ejemplo

*/

Insertar en esposa. valores (1, 'Yang Guifei');

Insertar en los valores de la esposa (2,'Daji');

Insertar en los valores de la esposa (3,' elogios');

SELECT * FROM esposa

Para un modelo de relación uno a uno, la clave principal de la tabla es una clave externa. Por ejemplo, en un marido. En el modelo de relación entre esposas, un marido sólo puede tener una esposa y una esposa sólo puede tener un marido.

Para un modelo de relación uno a muchos, la clave principal de la tabla maestra es la clave externa de la tabla esclava. Por ejemplo, en el modelo de relación entre pedidos y usuarios, un usuario puede realizar varios pedidos y un pedido solo puede pertenecer a un usuario.

Para el modelo de relación de muchos a muchos, no hay distinción entre la tabla maestra y la tabla esclava. Es necesario establecer una tercera tabla para registrar las claves externas de las dos tablas y establecerlas. dos claves externas para hacer referencia a las dos tablas respectivamente.

8. Modelo de relación de muchos a muchos

En la relación de muchos a muchos del currículum en la tabla, se debe utilizar una tabla intermedia, es decir, tres. Se necesitan mesas. En la tabla intermedia, se deben usar dos claves externas para hacer referencia a las claves primarias de las otras dos tablas, como el modelo de relación entre estudiantes y profesores. Un profesor puede tener varios alumnos y un estudiante puede tener varios profesores.

Crear tabla estudiante(

sid INT clave primaria AUTO_INCREMENT

nombre CHAR(40)

);

Crear tabla profesor(

tid INT clave primaria AUTO_INCREMENT

caracteres tname (40)

);

Crear tabla stu_tea(< /p >

sid INT,

tid INT,

Agregar restricción fk_stu_tea_sid clave externa (sid) que hace referencia al estudiante (sid),

Agregar restricción fk_stu_tea_tid clave externa (tid) Cita profesor (tid)

);

Insertar valores de estudiante (NULL, 'Andy Lau');

Insertar en estudiante valores (NULL, 'Andy Lau'); 'Tony Leung');

Insertar en el valor del estudiante (NULL, "Huang Rihua");

Insertar en el estudiante valor (NULL, "Miao Qiaowei");

Insertar en el valor del estudiante (vacío, 'Tang·');

Insertar en el valor del maestro (vacío, 'Teacher Cui' );

Insertar en el valor del profesor (vacío, 'Profesor Liu');

Insertar en el valor del profesor (vacío, 'profesor');

SELECCIONAR * FROM estudiante

SELECT * FROM profesor;

Insertar valor stu_tea (1, 1); //Andy Lau es alumno del profesor Cui.

Insertar valor stu_tea (2, 1); //Liang Chaowei es alumno del profesor Cui.

Insertar valor stu_tea (3, 1); //Huang Rihua es alumno del profesor Cui.

Insertar valor stu_tea (4, 1); //Miao Qiaowei es alumna del profesor Cui.

Insertar valor stu_tea (5, 1); //Tang es alumno del profesor Cui.

Insertar valor stu_tea (2, 2); //Liang Chaowei es alumno del profesor Liu.

Insertar valor stu_tea (3, 2); //Huang Rihua es alumno del profesor Liu.

Insertar valor stu_tea (4, 2); //Miao Qiaowei es alumna del profesor Liu.

Insertar valor stu_tea (3, 3); //Es el alumno del profesor.

Inserte el valor de stu_tea (5, 3); //Tang es el alumno del Sr. Liu.

SELECT * FROM stu_tea

En este momento, cada registro de la tabla intermedia stu_tea explica la relación entre la tabla de estudiantes y la tabla de profesores.

Por ejemplo, el registro en la tabla stu_tea: sid es 1001, tid es 2001, es decir, el alumno con el número 1001 tiene un profesor con el número 2001.

Sid. Tres veces al día

El alumno con el número 1001 2001 // tiene un profesor con el número 2001.

1001 2002 //El alumno número 1001 tiene un profesor número 2002.

1001 2003 //El alumno número 1001 tiene un profesor número 2003.

1002 2001 //El profesor con el número 2001 tiene un alumno con el número 1002.

1002 2004 //El profesor numerado 2004 tiene un alumno numerado 1002.

9. Fusionar conjuntos de resultados

Se requiere que el tipo de columna y el número de columnas en el conjunto de resultados que se fusionarán sean los mismos.

UNION, elimina filas duplicadas, UNION ALL, no elimina filas duplicadas.