Insertar en la sintaxis selecta de Oracle. Conceptos básicos de T-SQL. DML. Insertar varias filas

Además de la declaración SELECT analizada anteriormente, el lenguaje de manipulación de datos (DML) contiene otras tres declaraciones: INSERT, UPDATE y DELETE. Al igual que la declaración SELECT, estas tres declaraciones operan en tablas o vistas. Este artículo analiza la declaración INSERT y las otras dos declaraciones se analizan en el siguiente artículo.

INSERTAR declaración inserta filas (o partes de filas) en una tabla. Hay dos formas diferentes de esta instrucción:

INSERTAR tab_name [(col_list)] VALORES PREDETERMINADOS | VALORES (( DEFAULT | NULL | expresión ) [ ,...n]) INSERTAR EN nombre_pestaña | view_name [(col_list)] (select_statement | ejecutar_statement) Convenciones de sintaxis

La primera forma de instrucción le permite insertar una fila (o parte de ella) en la tabla. Y la segunda forma de la instrucción INSERT le permite insertar en una tabla el conjunto de resultados de una instrucción SELECT o un procedimiento almacenado ejecutado por una instrucción EXECUTE. El procedimiento almacenado debe devolver datos para insertarlos en la tabla. Cuando se usa con una instrucción INSERT, una instrucción SELECT puede seleccionar valores de una tabla diferente o la misma en la que se insertan los datos, siempre que los tipos de datos de las columnas correspondientes sean compatibles.

Para ambos formularios, el tipo de datos de cada valor insertado debe ser compatible con el tipo de datos de la columna de la tabla correspondiente. Todas las cadenas y datos temporales deben estar entre comillas; No es necesario encerrar los valores numéricos entre comillas.

Insertar una sola fila

Para ambas formas de la instrucción INSERT, especificar explícitamente la lista de columnas es opcional. No enumerar columnas es lo mismo que especificar todas las columnas de la tabla.

Parámetro VALORES POR DEFECTO inserta valores predeterminados para todas las columnas. Las columnas con el tipo de datos TIMESTAMP o propiedad IDENTITY se insertan de forma predeterminada con valores que genera automáticamente el sistema. Para columnas de otros tipos de datos, se inserta el valor predeterminado no nulo correspondiente si está disponible, o NULL en caso contrario. Si una columna no permite valores nulos y no tiene definido un valor predeterminado, la instrucción INSERT falla y se muestra un mensaje.

El siguiente ejemplo inserta filas en la tabla Empleado en la base de datos SampleDb, lo que demuestra el uso de una instrucción INSERT para insertar una pequeña cantidad de datos en la base de datos:

UTILICE SampleDb; INSERTAR EN VALORES del empleado (34990, "Andrey", "Batonov", "d1"); INSERTAR EN VALORES del empleado (38640, "Alexey", "Vasin", "d3");

Hay dos diferentes caminos insertando valores en una nueva fila. La declaración INSERT en el siguiente ejemplo usa explícitamente la palabra clave NULL e inserta un valor NULL en la columna correspondiente:

UTILICE SampleDb; INSERT INTO Employee VALUES (34991, "Andrey", "Batonov", NULL);

Para insertar valores en algunas (pero no en todas) las columnas de una tabla, normalmente es necesario especificar explícitamente esas columnas. Las columnas no especificadas deben permitir valores NULL o tener definido un valor predeterminado.

UTILICE SampleDb; INSERT INTO Empleado(Id, Nombre, Apellido) VALORES (34992, "Andrey", "Batonov");

Los dos ejemplos anteriores son equivalentes. En la tabla Empleado, la única columna que permite valores NULL es la columna DepartmentNumber, y todas las demás columnas fueron deshabilitadas por la cláusula NOT NULL en la declaración CREATE TABLE.

Orden de valores en Oferta de VALORES Las declaraciones INSERT pueden diferir del orden especificado en la declaración CREATE TABLE. En este caso, su orden debe coincidir con el orden en que aparecen las columnas correspondientes en la lista de columnas. A continuación se muestra un ejemplo de cómo insertar datos en un orden diferente al original:

UTILICE SampleDb; INSERT INTO Empleado(Número de departamento, Apellido, Id, Nombre) VALORES ("d1", "Batonov", 34993, "Andrey");

Insertar varias filas

La segunda forma de la instrucción INSERT inserta una o más filas seleccionadas por una subconsulta en la tabla. El siguiente ejemplo muestra cómo insertar filas en una tabla usando la segunda forma de la instrucción INSERT. En este caso, se ejecuta una consulta para seleccionar los números y nombres de los departamentos ubicados en Moscú, y el conjunto de resultados resultante se carga en una nueva tabla creada anteriormente.

La nueva tabla MoscúDepartamento creada en el ejemplo anterior tiene las mismas columnas que la tabla Departamento existente, excepto por la columna Ubicación que falta. La subconsulta en la instrucción INSERT selecciona todas las filas de la tabla Departamento para las cuales el valor de la columna Ubicación es "Moscú", que luego se insertan en la nueva tabla creada al comienzo de la consulta.

El siguiente ejemplo muestra otra forma de insertar filas en una tabla usando la segunda forma de la instrucción INSERT. En este caso, se ejecuta una consulta para seleccionar números de personal, números de proyecto y fechas de inicio del proyecto para todos los empleados con el puesto "Gerente" que trabajan en el proyecto p2 y luego cargan el conjunto de resultados resultante en una nueva tabla creada al comienzo de la consulta:

UTILICE SampleDb; CREAR TABLA ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERTAR EN ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECCIONE EmpId, ProjectNumber, EnterDate DESDE Works_on DONDE Job = "Manager";

Antes de insertar filas usando la instrucción INSERT, las tablas MoscowDepartment y ManagerTeam (en los ejemplos anteriores) estaban vacías. Si la tabla ya existía y contenía filas con datos, se le agregarían nuevas filas.

En secciones anteriores, analizamos el trabajo de recuperar datos de tablas creadas previamente. Ahora es el momento de descubrir cómo podemos crear/eliminar tablas, agregar nuevos registros y eliminar los antiguos. Para estos efectos en SQL Existen operadores como: CREAR- crea una tabla, ALTERAR- cambia la estructura de la tabla, GOTA- elimina una tabla o campo, INSERTAR- agrega datos a la tabla. Comencemos a familiarizarnos con este grupo de operadores del operador. INSERTAR.

1. Agregar líneas enteras

Como sugiere el nombre, el operador INSERTAR Se utiliza para insertar (añadir) filas a una tabla de base de datos. La adición se puede realizar de varias maneras:

  • - agregar una línea completa
  • - agregar parte de una línea
  • - agregar resultados de consulta.

Entonces, para agregar una nueva fila a una tabla, necesitamos especificar el nombre de la tabla, enumerar los nombres de las columnas y especificar el valor de cada columna usando la construcción INSERTAR EN nombre_tabla (campo1, campo2...) VALORES (valor1, valor2...). Veamos un ejemplo.

INSERTAR EN Vendedores (ID, Dirección, Ciudad, Nombre_vendedor, País) VALORES("6", "1st Street", "Los Ángeles", "Harry Monroe", "Estados Unidos")

También puede cambiar el orden de los nombres de las columnas, pero al mismo tiempo necesita cambiar el orden de los valores en el parámetro. VALORES.

2. Agregando parte de las líneas.

En el ejemplo anterior, al utilizar el operador INSERTAR Hemos marcado explícitamente los nombres de las columnas de la tabla. Usando esta sintaxis, podemos omitir algunas columnas. Esto significa que ingresa valores para algunas columnas pero no los proporciona para otras. Por ejemplo:

INSERTAR EN VALORES de vendedores (ID, ciudad, nombre_vendedor)("6", "Los Ángeles", "Harry Monroe")

En este ejemplo, no especificamos un valor para dos columnas. DIRECCIÓN Y País. Puede excluir algunas columnas de la declaración. INSERTAR EN, si esto permite la definición de la tabla. En este caso, se debe cumplir una de las condiciones: esta columna se define como válida NULO(ausencia de cualquier valor) o el valor predeterminado especificado en la definición de la tabla. Esto significa que si no se especifica ningún valor, se utilizará el valor predeterminado. Si te falta una columna de una tabla que no permite que aparezcan valores en sus filas NULO y no tiene un valor predeterminado definido, el DBMS generará un mensaje de error y no se agregará la fila.

3. Agregar datos seleccionados

En el ejemplo anterior, insertamos datos en tablas ingresándolos manualmente en la consulta. Sin embargo, el operador INSERTAR EN nos permite automatizar este proceso si queremos insertar datos de otra tabla. Para este propósito en SQL existe una construcción como INSERTAR EN... SELECCIONAR.... Este diseño le permite seleccionar datos simultáneamente de una tabla e insertarlos en otra. Supongamos que tenemos otra mesa. Vendedores_UE con una lista de vendedores de nuestros productos en Europa y necesitamos agregarlos a la tabla general Vendedores. La estructura de estas tablas es la misma (el mismo número de columnas y los mismos nombres), pero los datos son diferentes. Para ello podemos escribir la siguiente consulta:

INSERTAR EN Vendedores (ID, Dirección, Ciudad, Nombre_vendedor, País) SELECCIONARID, dirección, ciudad, nombre_vendedor, país DE Vendedores_UE

Es necesario prestar atención para que los valores de las claves internas no se repitan (campo IDENTIFICACIÓN), de lo contrario se producirá un error. Operador SELECCIONAR También puede incluir sugerencias. DÓNDE para filtrar datos. También cabe señalar que el DBMS no presta atención a los nombres de las columnas contenidas en la declaración. SELECCIONAR, para ella sólo es importante el orden en el que están dispuestos. Por lo tanto, los datos de la primera columna especificada que se seleccionó debido a SELECCIONAR, se completará en la primera columna de la tabla en cualquier caso Vendedores, especificado después del operador INSERTAR EN, independientemente del nombre del campo.

4. Copiar datos de una tabla a otra

A menudo, cuando se trabaja con bases de datos, es necesario crear copias de cualquier tabla con fines de copia de seguridad o modificación. Hacer copia completa tablas en SQL hay un operador separado SELECCIONAR EN. Por ejemplo, necesitamos crear una copia de la tabla. Vendedores, deberá escribir la solicitud de la siguiente manera:

SELECCIONAR * EN Vendedores_nuevo DE Vendedores

A diferencia del diseño anterior INSERTAR EN... SELECCIONAR... Cuando se agregan datos a una tabla existente, el diseño copia los datos en la nueva tabla. También se puede decir que la primera construcción importa datos y la segunda exporta. Al utilizar el diseño SELECCIONE... EN... DESDE... Se debe considerar lo siguiente:

  • - puedes usar cualquier oración en el operador SELECCIONAR, como AGRUPAR POR Y TENIENDO
  • - puedes usar una combinación para agregar datos de varias tablas
  • - Los datos sólo se pueden agregar a una tabla, sin importar de cuántas tablas se hayan tomado.

Equipo agrega filas a la tabla o vista de tabla principal.

Sintaxis del comando INSERT de Sql

Insertar sintaxis de comando


Palabras clave y parámetros básicos del comando INSERT
  • esquema- identificador de permiso, que normalmente coincide con el nombre de algún usuario
  • vista de tabla- el nombre de la tabla en la que se deben insertar las filas; si se especifica una vista, las filas se insertan en la tabla principal de la vista
  • subconsulta_1- una subconsulta que el servidor procesa de la misma manera que una vista
  • columna- una tabla o columna de vista en la que se ingresa el valor de la frase para cada fila insertada VALORES o subconsulta; Si una de las columnas de la tabla se omite en esta lista, el valor de la columna para la fila insertada es el valor de columna predeterminado definido cuando se creó la tabla. Si se omite por completo una lista de columnas, la cláusula VALORES o la consulta debe determinar valores para todas las columnas de la tabla
  • VALORES- define una cadena de valores que se insertarán en la tabla o vista; el significado debe estar definido en la oración VALORES para cada columna en la lista de columnas
  • subconsulta_2- una subconsulta que devuelve filas insertadas en la tabla; la lista de selección de esta subconsulta debe tener el mismo número de columnas que la lista de columnas de declaración

Declaración con la frase VALORES agrega una sola fila a la tabla. Esta línea contiene los valores definidos por la frase VALORES.
Declaración con subconsulta en lugar de una frase VALORES Agrega todas las filas devueltas por la subconsulta a la tabla. El servidor procesa subconsulta e inserta cada fila devuelta en la tabla. Si la subconsulta no selecciona ninguna fila, el servidor no inserta ninguna fila en la tabla.
Subconsulta Puede acceder a cualquier tabla o vista, incluida la tabla de aserciones de destino. . El servidor asigna valores a los campos en nuevas filas según la posición interna de las columnas en la tabla y el orden de los valores de las frases. VALORES o en la lista de selección de consultas. Si falta alguna columna en la lista de columnas, el servidor les asigna los valores predeterminados definidos cuando se creó la tabla. Si alguna de estas columnas tiene una restricción NOT NULL, el servidor devuelve un error que indica que se violó la restricción y cancela la instrucción INSERT.
Cuando se emite una instrucción INSERT, se habilita cualquier activador INSERT definido en la tabla.

INSERTAR EN Ejemplo 1

INSERTAR EN departamento VALORES(50, "PRODUCTOS", "SAN FRANCISCO");

INSERTAR EN Clientes (ciudad, cname, cnum) VALORES('Londres', 'Hoffman', 2001);

INSERTAR EN Ejemplo 2
El siguiente comando copia en la tabla de bonificaciones los datos de los empleados de la empresa cuyas comisiones superan el 25% de los ingresos:

INSERTAR EN bonificación SELECCIONE nombre, trabajo, sal, comunicación DESDE emp DONDE comunicación > 0,25 * sal;

INSERTAR EN Ejemplo 3
Si necesita insertar NULO-value, debe especificarlo como valor normal de la siguiente manera:

INSERTAR EN Vendedores VALORES (1001,'Peel',NULL,12);

INSERTAR EN Ejemplo 4
El comando se puede utilizar para recuperar valores de una tabla y colocarlos en otra mediante una consulta. Para ello basta con sustituir la frase. VALORES a la solicitud correspondiente:

INSERTAR EN Personal de Londres SELECCIONAR * DE Vendedores DONDE ciudad = 'Londres';

INSERTAR MySQL

Para insertar nuevas filas en una base de datos MySQL, use comando INSERTAR, ejemplos de comandos se dan a continuación:
INSERTAR EN el Ejemplo 1.
Insertar nueva línea a la tabla nombre_tabla.

INSERTAR EN

INSERTAR EN el Ejemplo 2.
Insertando una nueva fila en la tabla nombre_tabla indicando la inserción de datos en las columnas que necesitamos.

INSERTAR EN nombre_tabla VALORES('1','165','0','nombre');

en la base de datos mysql Es posible insertar varias líneas nuevas usando un comando.
INSERTAR EN el Ejemplo 3.
Insertar varias filas en la tabla nombre_tabla.

INSERTAR EN nombre_tabla (tbl_id, chislo, chislotwo, nombre) VALORES ('1′,'159′,'34','nombre1′), ('2′,'14','61','nombre2′), ('3 ′,'356′,'8′,'nombre3');

La consulta SQL INSERT INTO tiene sentido cuando se ha creado una tabla de base de datos. Es decir, la tabla existe, tiene un nombre, se crean filas y columnas. la tabla la crea el operador: , la tabla la modifica el operador.

consulta SQL INSERTAR EN - sintaxis de consulta

La consulta SQL INSERT INTO tiene la siguiente sintaxis:

INSERT INTO table_name (entre paréntesis, si es necesario, inserte una lista de columnas donde desea insertar datos) VALORES datos insertados1, datos insertados2, datos insertados3.

Puede insertar una opción IGNORAR entre INSERTAR e INTRO. No es requerido. Necesario para proteger las claves principales al editar una tabla. De lo contrario, si se produce una duplicación de claves primarias durante la edición, al insertar la opción IGNORAR, la primera fila con la clave primaria permanecerá en la tabla que se está editando y las demás claves primarias se eliminarán. De forma predeterminada, omitimos esta opción.

Hay opciones opcionales LOW_PRIORITY y DELAYED. Determinan las prioridades para agregar información a la base de datos. El primero especifica esperar a que se libere la base de datos, el segundo significa almacenar información en el búfer.

La línea de la consulta: INSERTAR con la frase VALORES le permitirá agregar una sola fila a la tabla de la base de datos. La cláusula VALUES contiene los valores de estos datos.

Se pueden especificar subconsultas en lugar de la frase VALORES. INSERT con una subconsulta agrega las filas devueltas por la subconsulta a la tabla. El servidor de la base de datos procesa la subconsulta e inserta todas las filas devueltas en la tabla. El servidor no inserta filas a menos que la subconsulta las seleccione.

  • subconsulta_1: una subconsulta que el servidor procesa de la misma manera que la vista
  • subquery_2 es ​​una subconsulta que devuelve filas insertadas en la tabla. La lista de esta subconsulta debe tener el mismo número de columnas que la lista de columnas INSERT.

Las subconsultas prácticamente no se utilizan en una base de datos MySQL.

Ejemplos de consulta SQL INSERT INTO en una base de datos MySQL

Insertamos nuevas filas en la base de datos MySQL usando el comando INSERT INTRO.

Primer ejemplo.

Inserte nuevas filas en la tabla nombre_tabla.

INSERTAR EN nombre_tabla VALORES ('2′,'145′,'1′,'nombre');

Esto significa que queremos insertar los valores 2,145,1,nombre en las columnas de la tabla nombre_tabla. Como las columnas no están especificadas, los valores se completan en todas las columnas de la tabla.

Ejemplo dos.

Inserte información en las columnas requeridas (especificadas) de la tabla nombre_tabla.

INSERTAR EN nombre_tabla (cliente_cliente, cliente_subcliente, cliente_correo) VALORES ('nombre1','subnombre1',' [correo electrónico protegido]′), ('nombre2′,'subnombre2′,' [correo electrónico protegido]′), ('nombre3′,'subnombre3′,(' [correo electrónico protegido]′);

Igor Serov especialmente para el sitio "".

La instrucción INSERT inserta nuevos registros en una tabla. En este caso, los valores de las columnas pueden ser constantes literales o ser el resultado de ejecutar una subconsulta. En el primer caso, se utiliza una instrucción INSERT separada para insertar cada fila; en el segundo caso, se insertarán tantas filas como devuelva la subconsulta.

La sintaxis del operador es la siguiente:

    INSERTAR EN [ (,...) ]

    (VALORES(,…))

  1. | (VALORES PREDETERMINADOS)

Como puede ver en la sintaxis presentada, la lista de columnas es opcional (esto se dice corchetes en la descripción de sintaxis). Si falta, la lista de valores insertados debe estar completa, es decir, proporcionar valores para todas las columnas de la tabla. En este caso, el orden de los valores debe corresponder al orden especificado por la instrucción CREATE TABLE para la tabla en la que se insertan las filas. Además, estos valores deben ser del mismo tipo de datos que las columnas en las que se ingresan. Como ejemplo, considere insertar una fila en la tabla Producto creada por la siguiente instrucción CREATE TABLE:

    CREAR TABLA producto

    fabricante char (1) NO NULO,

    modelo varchar(4) NO NULO,

    escriba varchar(7) NO NULO

Supongamos que desea agregar a esta tabla la PC modelo 1157 del fabricante B. Esto se puede hacer con la siguiente declaración:

    INSERTAR EN EL PRODUCTO

    VALORES ("B", 1157, "PC");

Si especifica una lista de columnas, puede cambiar su orden "natural":

    INSERTAR EN Producto (tipo, modelo, fabricante)

    VALORES ("PC", 1157, "B");

Parecería que esta es una característica completamente innecesaria, lo que sólo hace que el diseño sea más engorroso. Sin embargo, gana si las columnas tienen valores predeterminados. Considere la siguiente estructura de tabla:

    CREAR TABLA producto_D

    fabricante char (1) NULL,

    modelo varchar(4) NULO,

    escriba varchar (7) NO NULO POR DEFECTO "PC"

Tenga en cuenta que aquí los valores de todas las columnas tienen valores predeterminados (las dos primeras son NULL y la última columna es de tipo PC). Ahora podríamos escribir:

    INSERTAR EN Product_D (modelo, fabricante)

    VALORES(1157, "B");

En este caso, el valor que falta al insertar una fila será reemplazado por el valor predeterminado: PC. Tenga en cuenta que si a una columna no se le asigna un valor predeterminado en una instrucción CREATE TABLE y se especifica una restricción NOT NULL para prohibir el uso de NULL en esa columna de la tabla, entonces se asume el valor predeterminado de NULL.

Surge la pregunta: ¿es posible no especificar una lista de columnas y, sin embargo, utilizar los valores predeterminados? La respuesta es sí. Para hacer esto, en lugar de especificar explícitamente el valor, use la palabra reservada DEFAULT:

    INSERTAR EN Producto_D

    VALORES ("B", 1158, PREDETERMINADO);

Dado que todas las columnas tienen valores predeterminados, para insertar una fila con valores predeterminados podrías escribir:

    INSERTAR EN Producto_D

    VALORES (POR DEFECTO, POR DEFECTO, POR DEFECTO);

Sin embargo, para este caso existe una construcción especial VALORES POR DEFECTO (ver sintaxis del operador), con la que el operador anterior se puede reescribir en el formulario

    INSERTAR EN Product_D VALORES POR DEFECTO;

Tenga en cuenta que al insertar una fila en una tabla, se verifican todas las restricciones impuestas a esta tabla. Estas podrían ser restricciones de clave primaria o de índice único, restricciones CHECK o restricciones de integridad referencial. Si se viola alguna restricción, se rechazará la inserción de la fila. Consideremos ahora el caso del uso de una subconsulta. Supongamos que necesitamos insertar en la tabla Producto_D todas las filas de la tabla Producto relacionadas con los modelos de computadoras personales (tipo = 'PC'). Dado que los valores que necesitamos ya están en alguna tabla, generar manualmente filas insertadas es, en primer lugar, ineficaz y, en segundo lugar, puede permitir errores de entrada. El uso de una subconsulta resuelve estos problemas:

El uso del símbolo “*” en la subconsulta está justificado en este caso, ya que el orden de las columnas es el mismo para ambas tablas. Si este no fuera el caso, se tendría que aplicar una lista de columnas ya sea en la instrucción INSERT, en la subconsulta o en ambas, que coincidiría con el orden de las columnas:

Aquí, como antes, no puede especificar todas las columnas si desea utilizar los valores predeterminados existentes, por ejemplo:

En este caso, la columna de tipo de la tabla Product_D se sustituirá por el valor predeterminado PC para todas las filas insertadas.

Tenga en cuenta que cuando se utiliza una subconsulta que contiene un predicado, solo se insertarán aquellas filas cuyo valor del predicado sea VERDADERO (¡no DESCONOCIDO!). En otras palabras, si la columna de tipo en la tabla Producto fuera NULLable y ese valor estuviera presente en varias filas, esas filas no se insertarían en la tabla Producto_D.

La técnica artificial de utilizar una subconsulta que forma una fila con la cláusula UNION ALL le permite superar la limitación de insertar una fila en la instrucción INSERT cuando se utiliza el constructor de filas en la cláusula VALUES. Entonces, si necesitamos insertar varias filas usando una instrucción INSERT, podemos escribir:

    INSERTAR EN Producto_D

    SELECCIONE el fabricante "B" AS, modelo 1158 AS, tipo "PC" AS

    UNIÓN TODOS

    SELECCIONE "C", 2190, "Portátil"

    UNIÓN TODOS

    SELECCIONE "D", 3219, "Impresora";

Es preferible utilizar UNION ALL que UNION incluso si se garantiza la ausencia de filas duplicadas, ya que en este caso no se realizará ninguna comprobación para eliminar duplicados.

Cabe señalar que la inserción de múltiples tuplas utilizando el constructor de filas ya está implementada en Sistema de gestión de bases de datos relacionales (DBMS), desarrollado por Microsoft Corporation.Lenguaje de consulta estructurado) es un lenguaje informático universal utilizado para crear, modificar y manipular datos en bases de datos relacionales. servidor SQL 2008. Dada esta posibilidad, la última consulta se puede reescribir como:

    INSERTAR EN VALORES Product_D

    ("B", 1158, "PC"),

    ("C", 2190, "Computadora portátil"),


Arriba