Modificar la descripción de la tabla. ALTER TABLE sintaxis de la declaración. D.Agregar múltiples columnas con restricciones

Equipo ALTERAR TABLA usado para adiciones, eliminación o modificaciones columnas en una existente mesa.

Comando ALTERAR TABLA

Equipo ALTERAR TABLA modifica la definición de la tabla de una de las siguientes maneras:

  • agrega una columna
  • añade una restricción de integridad
  • anula una columna (tipo de datos, tamaño, valor predeterminado)
  • elimina una columna
  • modifica las características de la memoria u otros parámetros
  • Habilita, deshabilita o elimina una restricción o desencadenante de integridad.

Condición: La tabla debe estar en el esquema del usuario o el usuario debe tener privilegios del sistema. ALTERAR CUALQUIER TABLA.

Agregar una columna con una restricción NO NULO, desarrollador o administrador DB Hay que tener en cuenta una serie de circunstancias. Primero debe crear una columna sin restricciones y luego ingresar valores en todas sus filas. Después de que todos los valores de las columnas ya no sean NULO-valores, se le puede aplicar una restricción NO NULO. Si una columna tiene una restricción NO NULO intenta agregar el usuario, se devuelve un mensaje de error que dice que la tabla debe estar vacía o que la columna debe contener un valor para cada fila existente (recuerde que después de colocar una restricción en la columna NO NULO no puede estar presente en él NULO-valores en ninguno de los filas existentes). EN SGBD Oracle Desde la versión 8i, puedes eliminar columnas.

Al cambiar los tipos de datos de columnas existentes o agregar columnas a una tabla de base de datos, debe cumplir una serie de condiciones. Generalmente se acepta que aumentar es bueno y disminuir generalmente no es tan bueno. Aumentos permitidos:

  • Aumentar el tamaño de la columna CARBONIZARSE o VARCHAR2
  • Aumentar el tamaño de la columna NÚMERO
  • Agregar nuevas columnas a una tabla

Disminuir varias características tablas, incluidos algunos tipos de datos de columnas y numero real Las columnas de la tabla requieren acciones especiales. A menudo, antes de realizar un cambio, debe asegurarse de que todos los valores de la columna o columnas relevantes sean correctos. NULO-significados. Para realizar tales operaciones en las columnas de la tabla que contienen datos, el desarrollador debe encontrar o crear algún tipo de área para almacenar temporalmente estos datos. Por ejemplo, cree una tabla usando el comando CREAR TABLA COMO SELECCIONAR, que recupera datos de la clave principal y columna mutable o columnas. Cambios permitidos:

  • Reducir el tamaño de la columna NÚMERO
  • Reducir el tamaño de la columna CARBONIZARSE o VARCHAR2(solo con columna vacía para todas las filas)
  • Cambiar el tipo de datos de una columna (solo si la columna está vacía para todas las filas)

ALTERAR TABLA Ejemplo 1

Agregar una columna a una tabla:

ALTERAR TABLA t1(pole1 char(10));

ALTERAR TABLA Ejemplo 2

Cambiar el tamaño de una columna de la tabla:

ALTERAR TABLA t1 MODIFICAR(polo1 carácter(20));

ALTERAR TABLA Ejemplo 3

Eliminar una columna de la tabla:

ALTERAR TABLA t1 COLUMNA DE GOTA polo1;

Puede utilizar el comando ALTER TABLE para cambiar el nombre de la tabla sin moverla información fisica en la base de datos:

ALTERAR TABLA t1 RENOMBRAR A t2;

Se puede realizar una operación similar usando el comando RENAME:

REBAUTIZAR t1 A t2;

Las restricciones de integridad en las columnas y tablas de la base de datos se pueden cambiar, así como prohibir, permitir y eliminar. Esto le brinda al desarrollador la capacidad de crear, modificar y eliminar reglas comerciales que restringen los datos. Consideremos agregar restricciones a la base de datos. La simplicidad o complejidad de este proceso depende de determinadas circunstancias. Si no puedes crear una restricción con la base de datos, la forma más sencilla es agregarla antes de ingresar los datos:

ALTERAR TABLA Ejemplo 4

Modificar la estructura de la tabla

ALTERAR TABLA t1 MODIFICAR(campo1 NO NULO);

CREAR TABLA t2

(campo1 CHAR(10) CLAVE PRIMARIA);

ALTERAR TABLA t1 AGREGAR

(RESTRICCIÓN fk_t1 LLAVE EXTRANJERA(campo1)

REFERENCIAS t2(campo1));

ALTERAR TABLA t1 AGREGAR (ÚNICO(p_nombre));

ALTERAR TABLA t1 AGREGAR(p_tamaño CHAR(4) CONTROLAR

(p_size IN ('P','S','M','L','XL','XXL','XXXL')));

El primer comando anterior usa la cláusula MODIFY para agregar una restricción NOT NULL en una columna y la cláusula ADD para agregar todos los demás tipos de restricciones de integridad de la tabla. La columna para la cual se agrega la restricción ya debe existir en la tabla de la base de datos; de lo contrario, no se creará la restricción.

ALTERAR TABLA Ejemplo 5

Para agregar restricciones de integridad, puede omitir el nombre de la restricción que está creando usando la palabra clave RESTRICCIÓN. En este caso el comando se verá así:

ALTERAR TABLA t1 AÑADIR CLAVE EXTRANJERA (polo1) REFERENCIAS t2 (polo1);

Hay una serie de condiciones para crear restricciones:

  • Claves primarias: las columnas no pueden contener valores NULL y todos los valores deben ser únicos.
  • Claves foráneas: Aquellas columnas de otras tablas a las que se hace referencia deben contener valores que coincidan con todos los valores de las columnas de referencia, o los valores de estas últimas deben ser valores NULL.
  • Restricciones ÚNICAS: todos los valores de las columnas deben ser valores únicos o NULL.
  • VERIFICAR Restricciones: La nueva restricción solo se aplicará a los datos agregados o modificados después de su creación.
  • NOT NULL: No se permiten valores NULL en las columnas.

Las restricciones se pueden permitir o negar. Una restricción permitida cumple sus funciones implementando reglas comerciales en relación con los datos ingresados ​​​​en la tabla, y una restricción prohibida se transfiere a la categoría de ineficaz, como si se hubiera eliminado y sus reglas no se implementaran.

ALTERAR TABLA Ejemplo 6

Prohibición de restricciones:

ALTERAR TABLA t1 DESHABILITAR LLAVE PRINCIPAL;
ALTERAR TABLA t1 DESACTIVAR ÚNICO(p_nombre);

ALTERAR TABLA Ejemplo 7

En algunos casos, deshabilitar una clave principal de la que dependen las claves externas puede causar problemas, por ejemplo:

ALTERAR TABLA t2 DESACTIVAR CLAVE PRIMARIA;

Error en la línea 1: No se puede desactivar la restricción…. – existen dependencias(es imposible desactivar una restricción; existen dependencias)

Para eliminar una clave principal cuando hay claves externas que dependen de ella, use el comando ALTER TABLE DISABLE<ограничения>Se requiere construcción en CASCADA:

ALTERAR TABLA t2 DESACTIVAR CLAVE PRIMARIA CASCADA;

ALTERAR TABLA Ejemplo 8

La restricción prohibida se resuelve de la siguiente manera:

ALTERAR TABLA t1 HABILITAR CLAVE PRINCIPAL;

ALTERAR TABLA t1 HABILITAR ÚNICO(p_nombre);

Sólo puedes permitir aquellas restricciones que se establecieron previamente, y en en este momento prohibido.

Una restricción cuyo proceso de creación haya fallado no existirá en forma prohibida, a la espera de resolución después de que se resuelva el error. Normalmente, el propietario de la tabla, o alguien a quien se le hayan concedido los derechos adecuados, puede eliminar la restricción:

ALTERAR TABLA t1 GOTA ÚNICA(p_nombre);

Introducción

Para modificar (cambiar) objetos individuales de la base de datos, el lenguaje SQL tiene comandos y consultas SQL basadas en ellos: SQL ALTER TABLE. Este comando (consulta) se utiliza cuando necesita guardar datos en tablas y solo corregir (modificar) algunos de ellos.

En el artículo anterior, analizamos el comando CREATE y el SQL utilizado para crear una nueva tabla de base de datos. Hoy veremos cómo cambiar datos individuales en una tabla de base de datos según consulta sql ALTERAR TABLA.

Nota. El comando ALTER pertenece a un subconjunto de SQL, el lenguaje DDL, el lenguaje de definición de datos. Con su ayuda, puede modificar no sólo tablas, sino también procedimientos, usuarios, vistas y áreas de tablas. Existe toda una familia de comandos de este tipo: ALTER TABLE, ALTER VIEW, ALTER PROCEDIMIENTO, ALTER TRIGGER, ALTER USUARIO, ALTER ROLE.

¿Qué puede hacer el comando ALTER?

Usando el comando ALTER puedes:

  • Agregue una columna a la tabla;
  • Agregue una restricción de integridad;
  • Cambiar el tipo de datos en una columna de la tabla, su tamaño, valor predeterminado (anular la columna);
  • Eliminar columna;
  • Habilite, deshabilite, elimine un desencadenante o una restricción de integridad.

Nota. Integridad de la base de datos: cualquier relación debe tener clave primaria y para cada clave externa debe haber una clave primaria.

¡Importante! Para utilizar el comando ALTER, el usuario debe tener privilegios ALTER, INSERT y CREATE en la tabla.

Lección 8, Serie de lecciones “Lenguaje SQL”

Sintaxis del comando SQL ALTER TABLE

Veamos la sintaxis del comando ALTER TABLE.

ALTERAR TABLA nombre_tabla opciones de modificación de tabla

IGNORE es una opción opcional para proteger la clave principal.

Ejemplos de uso del comando ALTER TABLE

No. 1 Agregar una columna a la tabla

ALTER TABLE client(client_site varchar(10));//Agregue la columna client_site a la tabla de clientes//

No. 2 Cambiar el tamaño del margen de la columna

ALTER TABLE client(client_passwd varchar(25));//Cambiar el tamaño del campo de la columna client_passwd//

No. 3 Cambie el tamaño del campo de la columna usando modificar

ALTER TABLE el cliente modifica client_passwd varchar(25);//Cambiando el tamaño del campo de la columna client_passwd//

No. 4 Agregar una columna después de una determinada columna

ALTER TABLE client add client_site varchar(50) after client_telefon;//Agrega la columna client_site a la tabla de clientes, después de la columna client_telefon//

Resumen del artículo

  • En este artículo conocimos al equipo. lenguaje SQL ALTERAR TABLA.
  • Vimos cómo usar ALTER TABLE usando ejemplos de una tabla de base de datos.

La manipulación de tablas es una de las actividades más comunes que realizan los administradores y programadores de bases de datos cuando trabajan con objetos de bases de datos. Esta sección detalla cómo crear y modificar tablas.

El estándar ANSI es una especie de mínimo común denominador para todos los fabricantes, aunque no todas las posibilidades. versión estándar Cada fabricante implementa las declaraciones CREATE TABLE y ALTER TABLE. Sin embargo, el estándar ANSI es forma básica, que se puede utilizar en todas las plataformas.

A su vez, las plataformas ofrecen varias extensiones y adiciones a las declaraciones CREATE TABLE y ALTER TABLE del estándar ANSI.

Por lo general, es necesario pensar detenidamente en el diseño de la mesa y cómo crearla. Este proceso se llama diseño de base de datos. El proceso de analizar las relaciones de una tabla con sus propios datos y otras tablas de la base de datos se denomina normalización. Recomendamos que los programadores y administradores de bases de datos estudien los principios de diseño y normalización antes de utilizar los comandos CREATE DATABASE.

Sintaxis de SQL 2003

Al ejecutar CREAR declaraciones El estándar TABLE de SQL 2003 crea una tabla permanente o temporal en la base de datos. La sintaxis es la siguiente.

CREAR [(LOCAL TEMPORAL) GLOBAL TEMPORAL)] TABLA nombre_tabla (nombre_columna atributos tipo_datos [, ...]) | [nombre_columna CON OPCIONES opciones] |

| (GENERADO POR EL SISTEMA | GENERADO POR EL USUARIO | DERIVADO)] [, ...]] [definición_tabla]] nombre_tabla tipos_datos atributos] |

nombre_columna SET DEFAULT valor_predeterminado] |

nombre_columna DROP DEFAULT] | nombre_columna AÑADIR ALCANCE nombre_tabla | nombre_columna ALCANCE DE GOTA (RESTRICTO | CASCADA)] |

nombre_columna (RESTRICTO | CASCADA)] |

| Palabras clave TEMPORARIO

Se declara una tabla permanente o TEMPORAL con alcance local (LOCAL) o global (GLOBAL). Solo se puede acceder a las tablas temporales locales desde la sesión que las creó y se eliminan automáticamente cuando finaliza la sesión que las creó. Las tablas temporales globales son accesibles desde todos

sesiones activas

, pero se eliminan automáticamente cuando finaliza la sesión que los creó. No califique los nombres de tablas temporales con un nombre de esquema.

(nombre_columna tipo_datos atributos [,]) Se define una lista en la que una o más columnas, sus tipos de datos y atributos adicionales , por ejemplo, la tolerancia de valores NULL (nulabilidad). Cada declaración de tabla debe incluir al menos una columna, para la cual puede especificar: nombre_columna Especifica el nombre de la columna. Debe ser un identificador que sea válido según las reglas del RDBMS en particular. ¡El nombre debe ser significativo! tipo_datos Se asocia con una columna denominada nombre_columna cierto tipo

datos. Para aquellos tipos de datos que le permiten especificar su longitud, existe

NO NULO

parámetro adicional longitud, por ejemplo VARCHAR(255). El tipo de datos debe ser válido en el RDBMS. Para descripción completa

tipos de datos válidos y sus variantes

fabricantes específicos consulte el capítulo 2. atributos no se pueden utilizar caracteres alfabéticos. La expresión puede ser una cadena o un literal numérico, pero también puede especificar una función del sistema o definida por el usuario. estándar SQL 2003 permite el uso de lo siguiente en la cláusula DEFAULT funciones del sistema: NULL, USER, CURRENTJJSER, SESSION_USER, SYSTEMJJSER, CURRENT_PATH, CURRENT_D AND THOSE, CURRENTJIME, LOCALTIME, CURRENTJIMESTAMP, LOCALTJMESTAMP, ARRAY o ARRAY.

COLLATE nombre_colación

Se determina la intercalación utilizada, es decir, el orden de clasificación en la columna correspondiente. El nombre del mapeo depende de la plataforma. Si no se especifica un nombre de clasificación, la clasificación predeterminada es el juego de caracteres utilizado en la columna. LAS REFERENCIAS ESTÁN VERIFICADAS Este parámetro determina si se verificarán las referencias en la columna REF definida con la opción de alcance. Oferta adicional ON DELETE determina si los registros referenciados tendrán valores grabación remota, se establecerá en NULL o se impondrá una restricción a la operación.

CONSTRAINT nombre de restricción [tipo_restricción [restricción]]

El parámetro asigna a la columna una restricción y, opcionalmente, un nombre de restricción. Los tipos de restricciones se analizan en el Capítulo 2. Debido a que una restricción está asociada con una columna específica, la declaración de restricción supone que esa columna será la única en la restricción. Una vez creada la tabla, la restricción se considera una restricción a nivel de tabla.

nombre_columna

Una columna se define con opciones especiales, como una opción de alcance, una opción de valor predeterminado, una restricción a nivel de columna o una cláusula COLLATE. En muchas implementaciones, la cláusula CON OPCIONES se limita a crear tablas escritas.

ME GUSTA nombre_tabla

La nueva tabla se crea con las mismas definiciones de columna que la tabla existente nombre_tabla.

REFIS nombre_columna (GENERADO POR EL SISTEMA | DERIVADO GENERADO POR EL USUARIO)

Define una columna de identificador de objeto (OID) en tablas escritas. Se requiere un identificador de objeto para una tabla que es la raíz de una jerarquía de tablas. Según este parámetro, la columna REF puede ser generada automáticamente por el sistema (GENERADA POR EL SISTEMA), especificada manualmente por el usuario al ingresar una fila (GENERADA POR EL USUARIO) o creada a partir de otra columna REF (DERIVADA). El parámetro requiere que el atributo REFERENCES se incluya en la columna column_name.

CONSTRAINT tipo de restricción [nombre de la restricción] [,…]

A una tabla se le asignan una o más restricciones. Esta configuración es notablemente diferente de las restricciones a nivel de columna porque se supone que las restricciones a nivel de columna se aplican solo a la columna a la que están asociadas. Para restricciones a nivel de tabla, es posible asociar varias columnas con una restricción. Por ejemplo, en una tabla de ventas, es posible que necesite declarar una restricción única en las claves concatenadas store_id, order_id y order_date. Esto sólo se puede hacer usando una restricción a nivel de tabla. Para una discusión detallada de las limitaciones, consulte el Capítulo 2.

OF tipo_nombre [definición_tabla]

Se declara que la tabla se basa en un tipo definido por el usuario ya preparado. En esta situación, la tabla solo puede tener una columna para cada atributo. tipo estructurado más una columna adicional definida en la cláusula REF IS. El tipo de datos REF se describe en detalle en la sección de la instrucción CREATE/ALTER TYPE. Esta cláusula es incompatible con la cláusula LIKE table_name. Dónde:

UNDER supertabla [definición/tablas]

Declara una supertabla inmediata para la tabla actual en el mismo esquema (si existe). Opcionalmente, puede especificar una definición de tabla completa para la supertabla, llenándola con columnas, restricciones y similares.

EN COMMIT (PRESERVAR FILAS ELIMINAR FILAS]

La cláusula ON COMMIT PRESERVE ROWS conserva las filas de datos de la tabla temporal cuando se ejecuta una instrucción COMMIT. La cláusula ON COMMIT DELETE RO WS elimina todas las filas de datos en una tabla temporal cuando se ejecuta una instrucción COMMIT.

AGREGAR atributos de tipo de datos de nombre de columna

Se agrega a la tabla una columna con el tipo de datos y los atributos apropiados.

ALTER nombre_columna SET DEFAULT valor_predeterminado

Agrega un valor predeterminado a la columna (si no existe) o cambia un valor existente.

ALTER nombre_columna DROP DEFAULT

El valor predeterminado se elimina completamente de columna especificada.

ALTER nombre_columna AGREGAR ALCANCE nombre_tabla

El alcance se agrega a la columna especificada. Un alcance es una referencia a tipo personalizado datos.

ALTER nombre_columna DROP SCOPE

El alcance se elimina de la columna especificada. Las cláusulas RESTRICT y CASCADE se explican al final de esta lista.

DROP COLUMN nombre_columna

La columna especificada se elimina de la tabla. Las cláusulas RESTRICT y CASCADE se explican al final de esta lista.

AGREGAR restricción_tabla

Se agrega una restricción a la tabla con nombre especificado y características.

Nombre de la restricción DROP CONSTRAINT

La restricción existente se elimina de la tabla.

RESTRINGIR

Cuando se especifica esta cláusula, el RDBMS cancela el comando si encuentra objetos en la base de datos que dependen del objeto.

Cuando se especifica esta cláusula, el RDBMS elimina todos los demás objetos que dependen de este objeto.

    Para utilizar la instrucción ALTER TABLE, debe tener privilegios ALTER, INSERT y CREATE en la tabla.

    La opción IGNORE es una extensión de MySQL para ANSI SQL92. Controla cómo funciona ALTER TABLE cuando hay claves únicas duplicadas en la nueva tabla. Si no se especifica la opción IGNORAR, para esta copia el proceso se interrumpe y se revierte. Si se especifica IGNORE, para las filas con claves únicas duplicadas, solo se utiliza la primera fila y el resto se elimina.

    Puede ejecutar varias instrucciones ADD, ALTER, DROP y CHANGE en un solo comando ALTER TABLE. Esta es una extensión de MySQL para ANSI SQL92, donde solo se permite una de las expresiones mencionadas en un único comando ALTER TABLE.

    Las opciones CHANGE col_name , DROP col_name y DROP INDEX también son extensiones de MySQL para ANSI SQL92.

    La opción MODIFY es una extensión de Oracle del comando ALTER TABLE.

    La palabra opcional COLUMNA representa ruido blanco y se puede omitir.

    Cuando se utiliza ALTER TABLE table_name RENAME TO new_name sin ninguna otra opción, MySQL simplemente cambia el nombre de los archivos correspondientes tabla dada. En este caso, no es necesario crear una tabla temporal. .

    La instrucción create_definition utiliza la misma sintaxis para AGREGAR y CAMBIAR que para CREAR TABLA. Tenga en cuenta que esta sintaxis incluye el nombre de la columna, no solo su tipo. .

    Se puede cambiar el nombre de una columna utilizando la instrucción CHANGE column_name create_definition. Para hacer esto, debe especificar los nombres de las columnas antiguas y nuevas y su tipo actual. Por ejemplo, para cambiar el nombre de una columna INTEGER de a a b, puede hacer lo siguiente:

    mysql> ALTERAR TABLA t1 CAMBIAR a b INTEGER;

    Si cambia el tipo de columna pero no su nombre, la sintaxis de la expresión CHANGE aún requiere que se especifiquen ambos nombres de columna, incluso si son iguales. Por ejemplo:

    mysql> ALTERAR TABLA t1 CAMBIAR b b BIGINT NO NULO;

    Sin embargo, a partir de la versión 3.22.16a de MySQL, también puedes usar una expresión MODIFY para cambiar el tipo de una columna sin cambiarle el nombre:

    mysql> ALTERAR TABLA t1 MODIFICAR b BIGINT NO NULO;

    Cuando utilice CAMBIAR o MODIFICAR para reducir la longitud de una columna que forma parte de un índice (por ejemplo, un índice en los primeros 10 caracteres de una columna VARCHAR), no puede hacer que la columna sea más corta que la cantidad de caracteres indexados.

    Al cambiar el tipo de columna usando CAMBIAR o MODIFICAR, MySQL intenta convertir los datos a nuevo tipo lo más correctamente posible.

    En MySQL 3.22 y posteriores, puede usar FIRST o ADD... AFTER column_name para agregar una columna en una posición determinada dentro de una fila de la tabla. De forma predeterminada, la columna se agrega al final. A partir de MySQL 4.0.1, también puedes usar palabras clave PRIMERO y DESPUÉS en las opciones CAMBIAR o MODIFICAR.

    La opción ALTER COLUMN establece un nuevo valor predeterminado para una columna o elimina uno antiguo. Si se elimina el antiguo valor predeterminado y esta columna puede ser NULL, el nuevo valor predeterminado será NULL. Si la columna no puede ser NULL, MySQL asigna un valor predeterminado como se describe en la sección.

    La opción DROP INDEX elimina un índice. Es una extensión de MySQL para ANSI SQL92. .

    Si se eliminan columnas de una tabla, esas columnas también se eliminan de cualquier índice del que formen parte. Si se eliminan todas las columnas que componen el índice, entonces este índice también se elimina.

    Si una tabla contiene solo una columna, esa columna no se puede eliminar. En su lugar, puedes eliminar esta mesa utilizando el comando DROP TABLE.

    La opción DROP PRIMARY KEY elimina el índice principal. Si dicho índice no existe en una tabla determinada, se elimina el primer índice ÚNICO de esa tabla. (MySQL marca el primero clave únicaÚNICA como clave principal de PRIMARY KEY si no se especificó explícitamente ninguna otra clave principal de PRIMARY KEY). Cuando agrega un ÍNDICE ÚNICO o una CLAVE PRIMARIA a una tabla, se almacena antes que cualquier otra clave no única para que las claves duplicadas puedan identificarse lo antes posible.

    La opción ORDENAR POR le permite crear nueva mesa con líneas colocadas en un orden determinado. Tenga en cuenta que la tabla creada no conservará este orden de filas después de las operaciones de inserción y eliminación. En algunos casos, esta característica puede facilitar las operaciones de clasificación en MySQL si la tabla tiene una disposición de columnas que le gustaría tener en el futuro. Esta opción es principalmente útil si sabes de antemano cierto orden, que consultará principalmente cadenas. El uso de esta opción después de transformaciones importantes de la tabla permite un mejor rendimiento.

    Cuando utiliza el comando ALTER TABLE en tablas MyISAM, todos los índices no únicos se crean en paquete separado(similar a REPARACIÓN). Esto hará que el comando ALTER TABLE sea más rápido cuando haya varios índices.

    A partir de MySQL 4.0, la característica anterior se puede habilitar explícitamente. El comando ALTER TABLE... DISABLE KEYS impide que MySQL actualice índices no únicos en tablas MyISAM. Luego puede usar el comando ALTER TABLE... ENABLE KEYS para recrear los índices que faltan. Dado que MySQL hace esto con algoritmo especial Si bien es mucho más rápido que insertar llaves una por una, el bloqueo de llaves puede proporcionar una velocidad significativa en grandes conjuntos de inserciones.

    Al utilizar la función C API mysql_info(), puede determinar cuántos registros se copiaron y también (cuando se usa IGNORE) cuántos registros se eliminaron debido a valores de clave únicos duplicados.

    Las declaraciones FOREIGN KEY, CHECK y REFERENCES no hacen prácticamente nada en todos los tipos de tablas excepto en InnoDB. InnoDB admite AGREGAR RESTRICCIÓN CLAVE EXTRANJERA (...) REFERENCIAS... (...) . Tenga en cuenta que InnoDB no permite especificar index_name. . El soporte de sintaxis FOREIGH KEY se proporciona únicamente por razones de compatibilidad, para facilitar la transferencia de código de otros servidores SQL y lanzar aplicaciones que crean tablas con enlaces. .

Se pueden distinguir los siguientes niveles de restricciones de verificación:

  • nivel de atributo (columna),
  • nivel de tupla (fila),
  • nivel de relación (tabla).

Una restricción a nivel de columna verifica el valor de solo una columna separada, en otras palabras, en la limitación de este tipo hay una referencia a solo una columna de la tabla cuya definición contiene esta limitación. Para dar un ejemplo de tal limitación, volvamos al diagrama de la “Empresa de informática”. En la tabla Producto, la columna de tipo puede contener uno de tres valores. Podemos evitar que se ingrese cualquier otra información en esta columna usando una restricción como esta:

    VERIFICAR (escriba IN ("impresora", "pc", "portátil"))

Demos un paso atrás para ver la declaración ALTER TABLE, que nos permite cambiar la estructura de una tabla sin tener que recrearla cada vez. Esto es aún más importante porque puede ser necesario cambiar la estructura cuando la tabla ya contiene datos.

Puede utilizar la instrucción ALTER TABLE para agregar o eliminar columnas, valores predeterminados y restricciones.

EN momento presente Estamos interesados ​​en agregar una restricción en la columna de tipo, por lo que primero proporcionaremos la sintaxis del operador para agregar una restricción:

    ALTERAR TABLA

    AÑADIR RESTRICCIÓN ;

Ahora agreguemos nuestra restricción y verifiquemos cómo funciona.

    ALTERAR TABLA Producto

    AGREGAR RESTRICCIÓN chk_type VERIFICAR (escriba IN ("pc", "laptop", "impresora"));

Para asegurarnos de que la restricción funcione como esperamos, intentemos agregar un nuevo tipo de modelo:

    INSERT INTO Product VALUES ("A", 1122, "cuaderno");

Como era de esperar, recibiremos un mensaje de error en respuesta:

La instrucción INSERT entró en conflicto con la restricción CHECK "chk_type". El conflicto se produjo en la base de datos "aprender", tabla "dbo.product", columna "tipo". la declaración ha sido finalizado.

(La declaración INSERT entró en conflicto con la restricción CHECK "chk_type". El conflicto se produjo en la base de datos "learn", tabla "dbo.product", columna "tipo". Esta declaración fue abortada).

Como puede imaginar, una restricción a nivel de fila contiene referencias a varias columnas. En este caso, la restricción se verifica para cada cadena variable por separado. Se puede agregar (o cambiar) una fila si no se viola la restricción.

Como ejemplo, prohibamos al fabricante Z fabricar cualquier otra cosa que no sean impresoras.

    ALTERAR TABLA Producto

    AGREGAR restricción chk_maker_Z VERIFICAR ((maker="Z" AND type= "printer" ) OR maker "Z" );

Entonces, la restricción verifica que el modelo en la tabla Producto debe ser una impresora del fabricante Z (maker="Z" and type="printer") o cualquier otro fabricante (pero no Z).

Si intentamos agregar el modelo de PC del fabricante Z,




Arriba