Puede usar las instrucciones INSERT y SELECT para agregar filas a una tabla de las siguientes maneras:
- Utilice la instrucción INSERT para especificar valores directamente o desde una subconsulta.
- Utilice la instrucción SELECT con la cláusula INTO.
Utilizar INSERT
La instrucción INSERT agrega una o más filas nuevas a una tabla. Tratada de forma simplificada, INSERT tiene el siguiente formato:
INSERT [INTO] table_or_view [(column_list)] data_values
La instrucción INSERT inserta data_values como una o más filas en la tabla o vista especificada. column_list es una lista separada por comas de los nombres de columnas que se pueden utilizar para especificar las columnas para las que se suministran datos. Si no se especifica column_list, todas las columnas de la tabla o vista reciben datos.
Cuando column_list no especifica todas las columnas de la tabla o vista, se inserta el valor predeterminado, si se ha definido alguno para la columna, o un valor de NULL en aquellas columnas que no se hayan especificado en la lista. Todas las columnas no especificadas en la lista de columnas deben permitir valores NULL o tener asignado un valor predeterminado.
Las instrucciones INSERT no especifican valores para los siguientes tipos de columnas porque SQL Server Database Engine (Motor de base de datos de SQL Server) genera los valores de las siguientes columnas:
- Columnas con una propiedad IDENTITY que genera los valores para la columna.
- Columnas que tengan un valor predeterminado que utilice la función NEWID para generar un valor GUID exclusivo.
- Columnas calculadas.
Las columnas calculadas son columnas virtuales definidas como una expresión calculada a partir de una o varias columnas en la instrucciónCREATE TABLE
, como:
CREATE TABLE TestTable
(ColA INT PRIMARY KEY,
ColB INT NOT NULL,
ColC AS (ColA + ColB) * 2)
En el siguiente ejemplo se muestra cómo insertar filas en una tabla con columnas que generan automáticamente un valor o tienen un valor predeterminado. La instrucción
INSERT
inserta filas que contienen valores para algunas de las columnas, pero no para todas. En la última instrucción INSERT
, no se especifica ninguna columna y sólo se insertan los valores predeterminados.USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1
(
column_1 int IDENTITY,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my column default'),
column_3 timestamp,
column_4 varchar(40) NULL
);
GO
INSERT INTO dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit value');
INSERT INTO dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1 DEFAULT VALUES;
GO
SELECT column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
Utilizar INSERT con la cláusula VALUE y una subconsulta SELECT
Los valores de datos suministrados deben coincidir con la lista de columnas. El número de valores de datos debe ser el mismo que el número de columnas y el tipo de datos, precisión y escala de cada valor de datos debe coincidir con los de la columna correspondiente. Puede especificar los valores de datos de la siguiente manera:
- Mediante una cláusula
VALUES
para especificar los valores de datos de una fila. Por ejemplo:
INSERT INTO MyTable (PriKey, Description)
VALUES (123, 'A description of part 123.')
- Mediante una subconsulta
SELECT
para especificar los valores de datos para una o más filas, por ejemplo:
INSERT INTO MyTable (PriKey, Description)
SELECT ForeignKey, Description
FROM SomeView
Utilizar SELECT con INTO
Para crear una tabla a partir de los valores de otra, puede usar
SELECT INTO
. Por ejemplo:SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
No hay comentarios:
Publicar un comentario