Capítulo 3 Restricciones en las tablas
Cuando diseñamos una tabla de base de datos, debemos restringirla en la tabla, y los datos que no cumplan con las condiciones no se pueden insertar en la tabla. Esta es la "restricción".
1. Atributos vacíos
1, NULO
Null en MySQL se representa como: NULL NULLNULO . _ Cuando estábamos aprendiendo C/C++, el atributo vacío NULL representaba el número 0. Pero en MySQL, NULL no representa ningún valor, NULL no significa nada, no representa 0 y no representa un espacio. En MySQL, trate de asegurarse de que los datos no estén vacíos tanto como sea posible, porque si los datos están vacíos, no pueden participar en la operación (hablaremos de eso más adelante).
2. Restricciones vacías
Es lógicamente imposible que algunos datos estén vacíos. Por ejemplo, en las escuelas, si queremos contar la información de los estudiantes, entonces los estudiantes deben tener clases correspondientes, es decir, los datos en la columna de clase no pueden estar vacíos. Por lo tanto, podemos establecer ciertas restricciones en este atributo de datos, a saber: la clase no puede estar vacía. La existencia de restricciones mejora en gran medida la legalidad de los datos en MySQL.
Entonces, ¿cómo establecemos restricciones vacías?
Al crear una tabla, solo necesitamos agregarla not null
después de la variable correspondiente.
La sintaxis es la siguiente:
变量名 数据类型 not null;
Por ejemplo, creamos una tabla T, hay dos variables en esta tabla, una es id idi d , uno esnombre nombrenombre e . Al mismo tiempo, agregamosnot null not\ nullLa restricción de not o t null ll .
Después de crear la tabla, veamos la descripción de la tabla T.
Como se muestra en la figura a continuación, encontramos que la columna de atributo vacío NULL correspondiente a id es NO, es decir, la variable no puede estar vacía.
Así que ahora insertamos datos en la tabla:
Descubrimos que cuando insertamos datos, si la columna id no está escrita, MySQL informará un error, logrando así un cierto efecto de restricción.
Dos, el valor predeterminado
1, predeterminado
Valor predeterminado: Cierto tipo de datos a menudo tendrá un valor específico, que se puede especificar al principio. Cuando se necesitan datos reales, el usuario puede usar selectivamente el valor predeterminado.
El efecto del valor predeterminado: cuando se insertan los datos, al campo no se le asigna un valor y se usa el valor predeterminado
2. Gramática
数据名 数据类型 default 默认值
Creamos una tabla T, hay tres variables en esta tabla: id, puntaje, nombre. Entre ellos, la identificación no puede estar vacía y el puntaje predeterminado es 0 puntos.
Ahora insertamos datos en esta tabla:
encontramos que si no insertamos puntaje, MySQL insertará el valor predeterminado de 0 por defecto.
3. Notas (descripción de la columna)
1 comentario
En C/C++, lo \\
usamos para expresar comentarios, cuando creamos una tabla, algunas variables necesitan que agreguemos algunos comentarios, para facilitar la lectura del programador. Luego, al crear una tabla, podemos usar comment para escribir comentarios.
2. Gramática
数据名称 数据类型 comment '注释内容'
Después de crear la tabla, podemos mirar la descripción de la tabla:
descubrimos que los comentarios agregados cuando se creó la tabla no están visibles en la tabla en absoluto.
Entonces, ¿dónde vamos a comprobar las anotaciones?
Podemos usar la siguiente declaración para ver la declaración que creó la tabla:
show create table 表的名称;
En este punto, aunque podemos ver los comentarios añadidos antes, el formato está desordenado. En este momento, puede ;
reescribirlo como \G
y el sistema ajustará el formato de impresión.
Como se muestra en la siguiente figura:
La figura anterior es la declaración que escribimos cuando creamos la tabla T, desde la cual podemos ver claramente el contenido de nuestras notas.
Cuatro, relleno cero
1. ¿Qué es zerofill?
Antes de explicar qué es zerofill, aquí hay un fenómeno que debe mencionarse, como se muestra en la siguiente figura: la
figura anterior es una descripción de cierta tabla, veamos Type
una columna, en esta columna, hay un número 11 después int, y después de varchar También hay un número 20. Este número 20 es obviamente la longitud máxima de la cadena que especificamos antes.
Entonces, ¿qué significa el número después del int?
De hecho, este 11 es también la longitud máxima. Entonces zerofill es para llenar los bits altos no utilizados con 0, pero no afecta el tamaño del valor en sí.
2. Gramática
数据名称 数据类型 zerofill
Cinco, la clave principal
1, clave principal
En algunos casos, algunos datos solo aparecerán una vez, como el número de identificación de estudiante de un estudiante o el número de identificación de una persona. El número de estudiante y el número de identificación son diferentes para cada persona. Por lo tanto, la clave principal se usa para restringir las variables que aparecen solo una vez.
Las variables restringidas por la clave principal no pueden repetirse ni estar vacías.
Una tabla solo puede tener una clave principal.
2. Gramática
数据名称 数据类型 primary key
Por ejemplo, creamos una tabla T que solo usa la variable id modificada por la clave principal. e inserte datos en la tabla.
Ahora ya hay un dato 1 en esta tabla, insertemos otro 1 en él para ver si se puede insertar con éxito.
Descubrimos que debido a que 1 ya existe, para evitar la duplicación, no podemos insertar datos 1 nuevamente, y el sistema envió un guardado.
3. Modificar la clave principal
Si nuestra variable olvida agregar la clave principal, podemos agregar la clave principal después de crear la tabla, la
sintaxis es la siguiente:
alter table 表的名称 add primary key (变量名);
Primero creamos una tabla T, donde solo hay una variable T sin modificación de clave principal.
Ahora agregamos una clave principal para modificar la variable id.
Ahora veamos la descripción de esta tabla nuevamente:
La clave principal ya ha aparecido en la columna de clave.
Además de agregar la clave principal, también podemos eliminar la clave principal de la variable.
alter table 表的名称 drop primary key;
4. Clave primaria compuesta
Al crear una tabla, podemos combinar varias variables para formar un grupo de variables como clave principal.
La sintaxis es la siguiente:
primary key(变量1,变量2,...)
Cree una tabla T, hay dos variables en esta tabla, una variable es id, una variable es nombre, agregaremos la clave principal al grupo de variables de id + nombre.
Ahora insertamos datos en esta tabla.
Como se muestra en la figura a continuación:
Encontramos que si una de las variables está duplicada, aún podemos insertarla, pero si todo el grupo de variables está duplicado, la inserción falla.
6. Crecimiento personal
1, incremento_automático
Crecimiento propio, como su nombre indica: crecimiento automático. Cuando modificamos una variable con auto_increment, si la variable no está asignada, MySQL encontrará el valor máximo de la variable y luego 最大值+1
lo asignará a la variable.
auto_increment es lo mismo que la clave principal, cada tabla solo puede tener una variable de incremento automático. Para que cualquier variable se autoincremente, la premisa es que sea un índice (la columna clave tiene un valor). De lo contrario, los campos de incremento automático deben ser números enteros.
2. Gramática
数据名称 数据类型 键的类型 auto_increment
Como se muestra en la figura a continuación, creamos una tabla T, y hay dos variables en esta tabla T, una es id y la otra es name. Entre ellos, la variable id se modifica con la clave principal, y también agregamos atributos autocrecientes a la id.
Ahora insertamos datos en la tabla:
primero insertamos datos con una identificación de 10 y luego insertamos datos sin una identificación. Pero al final, mysql adivinó el valor de identificación de los segundos datos en función de la identificación de nuestros primeros datos.
7. Clave única
1, único
A menudo, hay muchos campos en una tabla que requieren unicidad y los datos no se pueden repetir, pero solo puede haber una clave principal en una tabla : una clave única puede resolver el problema de que múltiples campos en una tabla requieren unicidad.
La esencia de la clave única es similar a la de la clave principal. Se permite que la clave única esté vacía, y más de una puede estar vacía. El campo vacío no se compara por su singularidad.
2. Gramática
数据名 数据类型 unique
Ahora creamos una tabla donde la variable id se decora con la clave principal y la variable de nombre se decora con la clave única.
La descripción de la tabla es la siguiente, y encontramos que el tipo de valor clave de los dos se refleja en la columna de valor clave.
8. Claves foráneas
1, clave externa
La clave externa se utiliza para definir la relación entre la tabla principal y la tabla esclava: la restricción de clave externa se define principalmente en la tabla esclava y la tabla maestra debe tener una restricción de clave principal o una restricción única . Cuando se define la clave externa, se requiere que los datos de la columna de clave externa existan en la columna de clave principal de la tabla principal o sean nulos.
2. Gramática
foreign key (变量名) references 主表(变量名)
Por ejemplo, queremos crear la tabla descrita en la siguiente figura. (La tabla de clases a la derecha es la tabla maestra y la tabla de estudiantes es la tabla esclava)
Primero creamos la tabla maestra: myclass
La descripción de la tabla principal es la siguiente:
Ahora creamos la tabla esclava y agregamos restricciones de clave externa a la tabla esclava.
Ahora insertemos datos en la tabla principal primero.
Luego insertamos datos en la tabla esclava:
Descubrimos que si el class_id que insertamos son datos que no existen en la tabla principal, mysql informará un error.