You are on page 1of 18

La historia de SQL (que se pronuncia deletreando en ingls las letras que lo componen, es decir "ese-cu-ele" y no "siquel" como se oye

a menudo) empieza en 1974 con la definicin, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigacin de IBM, de un lenguaje para la especificacin de las caractersticas de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implement en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisin del lenguaje (SEQUEL/2), que a partir de ese momento cambi de nombre por motivos legales, convirtindose en SQL. El prototipo (System R), basado en este lenguaje, se adopt y utiliz internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al xito de este sistema, que no estaba todava comercializado, tambin otras compaas empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenz a entregar sus productos relacionales y en 1983 empez a vender DB2. En el curso de los aos ochenta, numerosas compaas (por ejemplo Oracle y Sybase, slo por citar algunos) comercializaron productos basados en SQL, que se convierte en el estndar industrial de hecho por lo que respecta a las bases de datos relacionales. En 1986, el ANSI adopt SQL (sustancialmente adopt el dialecto SQL de IBM) como estndar para los lenguajes relacionales y en 1987 se transfom en estndar ISO. Esta versin del estndar va con el nombre de SQL/86. En los aos siguientes, ste ha sufrido diversas revisiones que han conducido primero a la versin SQL/89 y, posteriormente, a la actual SQL/92. El hecho de tener un estndar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en l. Desde el punto de vista prctico, por desgracia las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e implementa en la propia base de datos slo el corazn del lenguaje SQL (el as llamado Entry level o al mximo el Intermediate level), extendindolo de manera individual segn la propia visin que cada cual tenga del mundo de las bases de datos. Actualmente, est en marcha un proceso de revisin del lenguaje por parte de los comits ANSI e ISO, que debera terminar en la definicin de lo que en este momento se conoce como SQL3. Las caractersticas principales de esta nueva encarnacin de SQL deberan ser su transformacin en un lenguaje stand-alone (mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la introduccin de nuevos tipos de datos ms complejos que permitan, por ejemplo, el tratamiento de datos multimediales Todo comienza en 1974 en los laboratorios de investigacin de IBM, se realiza un lenguaje para especificacin de las caractersticas de las bases de datos que adoptan el modelo relacional, conocido como SEQUEL (Structured English Query Language), posteriormente se implement un prototipo al que llamaron SEQUEL-XRM (1974 y 1975). Al experimentar con ste prototipo (entre 1976 y 1977) a lo que seria una versin de SEQUEL/2, despues fue llamado SQL (por motivos legales). En el curso de los ochenta, varias compaas (Oracle y Sybase, etc) comercializaron productos basados en SQL, que se convierte en el estndar industrial de hecho por lo que respecta a las bases de datos relacionales. En 1986 la ANSI adopt SQL como el estndar para los lenguajes relacionales para un ao ms tarde convertirse en un estndar de ISO. Una de sus caractersticas que ayudo al impulso espectacular que tuvo fue el manejo del lgebra y el clculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- informacin de inters de una base de datos, as como tambin hacer cambios sobre ella.

En la actualidad el SQL es el estndar de la inmensa mayora de los SGBD comerciales (MySQL, Postgree, DB2, Informix, Microsoft SQL, Access, Oracle, SyBase, etc).

Historia de versiones

Versin Ao Nombre de la versin Nombre clave

1.0 (OS/2)

1989 SQL Server 1-0

SQL

4.21 1993 SQL Server 4.21 (WinNT)

SEQUEL

6.0

1995 SQL Server 6.0

SQL95

6.5

1996 SQL Server 6.5

Hydra

7.0

1998 SQL Server 7.0

Sphinx

1999

SQL Server 7.0 OLAP Tools

Plato

8.0

2000 SQL Server 2000

Shiloh

8.0

2003

SQL Server 2000 64-bit Edition

Liberty

9.0

2005 SQL Server 2005

Yukon

10.0

2008 SQL Server 2008

Katmai

10.50

2010 SQL Server 2008 R2

Kilimanjaro

11.0

2012 SQL Server 2012

Denali

ABCDEFGHIJKLM NOPQRSTUVWXYZ La lista siguiente incluye todas las palabras reservadas por el motor de base de datos Microsoft Access para su uso en instrucciones SQL. Las palabras de la lista que no estn en letras maysculas estn tambin reservadas por otras aplicaciones. Por tanto, los temas de Ayuda individuales para estas palabras proporcionan descripciones generales que no se centran en su uso en SQL.
NOTA

Las palabras seguidas por un asterisco (*) estn reservadas, pero actualmente no tienen ningn

significado en el contexto de las instrucciones SQL de Microsoft Access (por ejemplo, Level y TableID). Las palabras que no estn subrayadas no tienen vnculos a explicaciones. A

ABSOLUTE ADD ADMINDB ALL Alfanumrico: vea TEXT ALTER ALTER TABLE And AS
B-C

ANY ARE AS ASC ASSERTION AUTHORIZATION AUTOINCREMENT: vea COUNTER Avg

BEGIN Between BINARIO BIT BIT_LENGTH BOOLEAN: vea BIT BOTH BY BYTE

COLLATION COLUMN COMMIT COMP, COMPRESSION CONNECT CONNECTION CONSTRAINT, CONSTRAINTS CONTAINER CONTAINS

CASCADE CATALOG CHAR, CHARACTER: vea TEXT CHAR_LENGTH CHARACTER_LENGTH CHECK CLOSE CLUSTERED COALESCE COLLATE
D

CONVERT Count COUNTER CREATE CURRENCY CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR

DATABASE DATE: vea DATETIME DATETIME DAY DEC, DECIMAL DECLARE DELETE DESC
E-H

DISALLOW DISCONNECT DISTINCT DISTINCTROW DOMAIN DOUBLE DROP

EQV EXCLUSIVECONNECT EXEC, EXECUTE EXISTS EXTRACT FALSE FETCH FIRST FLOAT, FLOAT8: vea DOUBLE FLOAT4: vea SINGLE
I

FOREIGN FROM Clusula FROM GENERAL: vea LONGBINARY GRANT GROUP GUID HAVING HOUR

IDENTITY IEEEDOUBLE: vea

INPUT INSENSITIVE

DOUBLE IEEESINGLE: vea SINGLE IGNORE IMAGE Imp In IN INDEX INDEXCREATEDB INNER
J-M

INSERT INSERT INTO INT, INTEGER, INTEGER4: vea LONG INTEGER1: vea BYTE INTEGER2: vea SHORT INTERVAL INTO Is ISOLATION

JOIN KEY LANGUAGE LAST LEFT Level* Like LOGICAL, LOGICAL1: vea BIT LONG LONGBINARY LONGCHAR
N-P

LONGTEXT LOWER MATCH Max MEMO: vea LONGTEXT Min MINUTE Mod MONEY: vea CURRENCY MONTH

NATIONAL NCHAR NONCLUSTERED Not NTEXT NULL NUMBER: vea DOUBLE NUMERIC: vea DECIMAL NVARCHAR OCTET_LENGTH OLEOBJECT: vea LONGBINARY

OUTER* OUTPUT OWNERACCESS PAD PARAMETERS PARTIAL PASSWORD PERCENT PIVOT POSITION PRECISION

ON OPEN OPTION Or ORDER


Q-S

PREPARE PRIMARY PRIVILEGES PROC, PROCEDURE PUBLIC

REAL: VEA SINGLE REFERENCES RESTRICT REVOKE RIGHT ROLLBACK SCHEMA SECOND SELECT SELECTSCHEMA SELECTSECURITY SET SHORT SINGLE SIZE
T-Z

SMALLDATETIME SMALLINT: vea SHORT SMALLMONEY SOME SPACE SQL SQLCODE, SQLERROR, SQLSTATE StDev StDevP STRING: vea TEXT SUBSTRING Sum SYSNAME SYSTEM_USER

TABLE TableID* TEMPORARY TEXT TIME: vea DATETIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TINYINT TO TOP TRAILING TRANSACTION

UPDATEOWNER UPDATESECURITY UPPER USAGE USER USING VALUE VALUES Var VARBINARY: vea BINARY VARCHAR: vea TEXT VarP VARYING

TRANSFORM TRANSLATE TRANSLATION TRIM TRUE UNION UNIQUE UNIQUEIDENTIFIER UNKNOWN UPDATE UPDATEIDENTITY

VIEW WHEN WHENEVER WHERE WITH WORK Xor YEAR YESNO: vea BIT ZONE

Usos tpicos de SQL Server Profiler


SQL Server 2008 R2 Otras versiones

Este tema an no ha recibido ninguna valoracin - Valorar este tema El SQL Server Profiler es una interfaz enriquecida para crear y administrar trazas y analizar y reproducir resultados de traza. El uso del SQL Server Profiler depende de la razn por la que se est supervisando una instancia del SQL Server Database Engine (Motor de base de datos de SQL Server). Por ejemplo, si se encuentra en la fase de desarrollo del ciclo de produccin, no estar tan preocupado por la sobrecarga resultante de realizar el seguimiento de muchos eventos, sino por obtener todos los detalles de rendimiento que pueda recopilar. Si, por el contrario, est supervisando un servidor de produccin, desear que las trazas estn ms centradas y limitadas en el tiempo para evitar sobrecargar el servidor. Utilice el SQL Server Profiler para: Supervisar el rendimiento de una instancia del SQL Server Database Engine (Motor de base de datos de SQL Server), Analysis Server o Integration Services (despus de que se hayan ejecutado). Depurar procedimientos almacenados e instrucciones Transact-SQL. Analizar el rendimiento mediante la identificacin de las consultas que se ejecutan lentamente. Realizar pruebas de esfuerzo y evaluaciones de calidad mediante la reproduccin de trazas. Reproducir las trazas de uno o varios usuarios.

Analizar las consultas al guardar los resultados del plan de presentacin. Probar procedimientos almacenados e instrucciones Transact-SQL en la fase de desarrollo de un proyecto mediante la ejecucin paso a paso de las instrucciones para confirmar que el cdigo funciona correctamente. Solucionar problemas de SQL Server mediante la captura de eventos en un sistema de produccin y su reproduccin en un sistema de prueba. Esto es til para realizar pruebas o depuracin, y permite a los usuarios seguir utilizando el sistema de produccin sin interferencias. Auditar y revisar la actividad producida en una instancia de SQL Server. Esto permite a los administradores de seguridad revisar los eventos de auditora, entre los que se incluyen intentos de inicio de sesin correctos o errneos, y funcionamiento correo o errneo de permisos para obtener acceso a instrucciones u objetos. Guardar los resultados de traza en XML para proporcionar una estructura jerrquica normalizada para estos resultados. Esto permite modificar trazas existentes o crear trazas de forma manual y, a continuacin, reproducirlas. Agregar resultados de traza para permitir que las clases de eventos similares se agrupen y se analicen. Estos resultados proporcionan recuentos basados en un nico grupo de columnas. Permitir a aquellos usuarios que no son administradores crear trazas. Establecer una correlacin entre los contadores de rendimiento y una traza para diagnosticar problemas de rendimiento. Configurar las plantillas de traza que se pueden utilizar para trazas posteriores.

SQL
SQL

Desarrollador(es)

IBM ISO/IEC 9075-1:2012

Informacin general

Paradigma

Multiparadigma

Apareci en

1974

Diseado por

Donald D. Chamberlin Raymond F. Boyce

ltima versin estable

SQL:2012 (2012)

Tipo de dato

Esttico, Fuerte

Implementaciones

Varias

Dialectos

SQL-86, SQL-89, SQL92, SQL:1999, SQL:2003,SQL:2008, SQL:2012

Influido por

Datalog

Ha influido a

Agena, CQL, LINQ,Windows PowerShell

[cita requerida]

Sistema operativo

multiplataforma

SQL

Desarrollador

IBM

ISO/IEC 9075-1:2008

Informacin general

Extensin de archivo

.sql

Tipo de MIME

application/x-sql

Lanzamiento inicial

1986

ltima versin

SQL:2012
2012

Tipo de formato

Base de datos

Estndar(es)

ISO/IEC 9075

Formato abierto

El lenguaje de consulta estructurado o SQL (por sus siglas en ingls structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en estas. Una de sus caractersticas es el manejo del lgebra y elclculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencillainformacin de inters de una base de datos, as como tambin hacer cambios sobre ella.

Contenido
[ocultar]

1 Orgenes y evolucin 2 Caractersticas generales del SQL

2.1 Optimizacin

3 Lenguaje de definicin de datos (DDL)

3.1 CREATE

3.1.1 Ejemplo (crear una tabla)

3.2 ALTER

3.2.1 Ejemplo (agregar columna a una tabla)

3.3 DROP

3.3.1 Ejemplo

3.4 TRUNCATE

3.4.1 Ejemplo

4 Lenguaje de manipulacin de datos DML(Data Manipulation Language)

o o

4.1 Definicin 4.2 INSERT

4.2.1 Forma bsica 4.2.2 Ejemplo 4.2.3 Formas avanzadas

o
4.3 UPDATE

4.2.3.1 Copia de filas de otras tablas

4.3.1 Ejemplo

4.4 DELETE

4.4.1 Forma bsica 4.4.2 Ejemplo

5 Recuperacin de clave 6 Disparadores 7 Sistemas de gestin de base de datos 8 Referencias 9 Vase tambin

[editar]Orgenes

y evolucin

Los orgenes del SQL estn ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el clculo de predicados. Basndose en estas ideas, los laboratorios de IBM definen el

lenguajeSEQUEL (Structured English Query Language) que ms tarde sera ampliamente implementado por el sistema de gestin de bases de datos (SGBD) experimental System R, desarrollado en 1977 tambin por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial. El SEQUEL terminara siendo el predecesor de SQL, siendo este una versin evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestin de bases de datos relacionales surgidos en los aos siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versin estndar de este lenguaje, el "SQL-86" o "SQL1". Al ao siguiente este estndar es tambin adoptado por la ISO. Sin embargo, este primer estndar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definicin de almacenamiento que se consideraron suprimir. As que en1992 se lanza un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o "SQL2". En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD comerciales. Y, aunque la diversidad de aadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es general y muy amplio. El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo:

Ao Nombre 1986 SQL-86 1989 SQL-89 1992 SQL-92

Alias SQL-87

Comentarios Primera publicacin hecha por ANSI. Confirmada por ISO en 1987. Revisin menor.

SQL2

Revisin mayor.

1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para relaciones jerrquicas), triggers y algunas caractersticas orientadas a objetos. 2003 SQL:2003 Introduce algunas caractersticas de XML, cambios en las funciones, estandarizacin del objeto sequence y de las columnas autonumericas. (Ver Eisenberg et al.:SQL:2003 Has Been Published.) ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras de importar y guardar datos XML en una base de datos SQL, manipulndolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML. Adems, proporciona facilidades que permiten a las aplicaciones integrar dentro de su cdigo SQL el uso de XQuery, lenguaje de consulta XML publicado por el W3C (World Wide Web Consortium) para acceso concurrente a datos ordinarios SQL y documentos XML. Permite el uso de la clusula ORDER BY fuera de las definiciones de los cursores. Incluye los disparadores del tipo INSTEAD OF. Aade la sentencia

2006 SQL:2006

2008 SQL:2008

TRUNCATE. (Ver [1].) [editar]Caractersticas

generales del SQL

El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones. Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base terica y su orientacin al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificacin y la orientacin a objetos. De esta forma una sola sentencia puede equivaler a uno o ms programas que se utilizaran en un lenguaje de bajo nivel orientado a registros.

[editar]Optimizacin
Como ya se dijo arriba, y suele ser comn en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qu es lo que se quiere y no cmo conseguirlo, por lo que una sentencia no establece explcitamente un orden de ejecucin. El orden de ejecucin interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de su ejecucin. Muchas veces, el uso de ndices acelera una instruccin de consulta, pero ralentiza la actualizacin de los datos. Dependiendo del uso de la aplicacin, se priorizar el acceso indexado o una rpida actualizacin de la informacin. La optimizacin difiere sensiblemente en cada motor de base de datos y depende de muchos factores. Existe una ampliacin de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lgica difusa. Este lenguaje ha sido implementado a nivel experimental y est evolucionando rpidamente.

[editar]Lenguaje

de definicin de datos (DDL)

El lenguaje de definicin de datos (en ingls Data Definition Language, o DDL), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Incluye rdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.

[editar]CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, [[Vista 'CAMPO 2' STRING </source>

[editar]Ejemplo (crear una tabla)


CREATE TABLE Empleado ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

Nombre VARCHAR(50), Apellido VARCHAR(50), Direccion VARCHAR(255), Ciudad VARCHAR(60), Telefono VARCHAR(15), idCargo INT )

[editar]ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar ndices a una tabla, modificar un trigger, etc.

[editar]Ejemplo (agregar columna a una tabla)


ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT UNSIGNED;

[editar]DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

[editar]Ejemplo
DROP TABLE 'NOMBRE_TABLA';

[editar]TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho ms rpido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE slo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la clusula WHERE. Si bien, en un principio, esta sentencia parecera ser DML (Lenguaje de Manipulacin de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transaccin.

[editar]Ejemplo
TRUNCATE TABLE 'NOMBRE_TABLA';

[editar]Lenguaje

de manipulacin de datos DML(Data Manipulation

Language)
[editar]Definicin
Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional.

[editar]INSERT
Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional.

[editar]Forma bsica
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...'']) Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le ser asignado el valor por omisin. Los valores especificados (o implcitos) por la sentencia INSERTdebern satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.

[editar]Ejemplo
INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850); Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada: INSERT INTO ''VALUES (''valor1'', [''valor2,...'']) Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas de la tabla 'agenda_telefonica'): INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 080473968);

[editar]Formas avanzadas
Una caracterstica de SQL (desde SQL-92) es el uso de constructores de filas para insertar mltiples filas a la vez, con una sola sentencia SQL: INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),... Esta caracterstica es soportada por DB2, PostgreSQL (desde la versin 8.2), MySQL, y H2. Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas en la tabla 'agenda_telefonica'): INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850'), ('Alejandro Sosa', '4556550'); Que poda haber sido realizado por las sentencias INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850'); INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550'); Notar que las sentencias separadas pueden tener semntica diferente (especialmente con respecto a los triggers), y puede tener diferente rendimiento que la sentencia de insercin mltiple. Para insertar varias filas en MS SQL puede utilizar esa construccin:

INSERT INTO phone_book SELECT 'John Doe', '555-1212' UNION ALL SELECT 'Peter Doe', '555-2323'; Tenga en cuenta que no se trata de una sentencia SQL vlida de acuerdo con el estndar SQL (SQL: 2003), debido a la clusula subselect incompleta. Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila: INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM DUAL UNION ALL SELECT 'Peter Doe','555-2323' FROM DUAL Una implementacin conforme al estndar de esta lgica se muestra el siguiente ejemplo, o como se muestra arriba (no aplica en Oracle): INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c) UNION ALL SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)

[editar]Copia de filas de otras tablas


Un INSERT tambin puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningn procesamiento intermedio en la aplicacin cliente. Un SUBSELECT se utiliza en lugar de la clusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lgicamente, el SELECT se evala antes que la operacin INSERT est iniciada. Un ejemplo se da a continuacin. INSERT INTO phone_book2 SELECT * FROM phone_book WHERE name IN ('John Doe', 'Peter Doe') Una variacin es necesaria cuando algunos de los datos de la tabla fuente se est insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.) INSERT INTO phone_book2 ( [name], [phoneNumber] ) SELECT [name], [phoneNumber] FROM phone_book WHERE name IN ('John Doe', 'Peter Doe') El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados.

[editar]UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.

[editar]Ejemplo
UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

[editar]DELETE
Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla.

[editar]Forma bsica
SQL="DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''"

[editar]Ejemplo
DELETE FROM My_table WHERE field2 = 'N';

[editar]Recuperacin

de clave

Los diseadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutar en el ocasional escenario en el que es necesario recuperar automticamente la base de datos, generando una clave primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayora de los sistemas no permiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solucin en tales escenarios. Implementaciones comunes incluyen:

Utilizando un procedimiento almacenado especifico de base de datos que genera la clave suplente, realice la operacin INSERT, y finalmente devuelve la clave generada.

Utilizando una sentencia SELECT especfica de base de datos, sobre una tabla temporal que contiene la ltima fila insertada. DB2 implementa esta caracterstica de la siguiente manera:

SELECT * FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) ) AS t

Utilizando una sentencia SELECT despus de la sentencia INSERT con funcin especfica de base de datos, que devuelve la clave primaria generada por el registro insertado ms recientemente.

Utilizando una combinacin nica de elementos del original SQL INSERT en una posterior sentencia SELECT.

Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT. Utilizando la funcin de PHP mysql_insert_id() de MySQL despus de la sentencia INSERT. Utilizando un INSERT con la clusula RETURNING para Oracle, que slo se puede utilizar dentro de un PL/SQL bloque, en el caso de PostgreSQL se puede usar tambin tanto con SQL como con PL/SQL.

INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) RETURNING phone_book_id INTO v_pb_id

En el caso de MS SQL se puede utilizar la siguiente instruccin: SET NoCount ON; INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ); SELECT @@IDENTITY AS ID [editar]Disparadores
Los disparadores, tambin conocidos como desencadenantes (triggers en ingls) son definidos sobre la tabla en la que opera la sentencia INSERT, los desencadenantes son evaluados en el contexto de la operacin. Desencadenantes BEFORE INSERT permiten la modificacin de los valores que se insertar en la tabla. Desencadenantes AFTER INSERT no puede modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otras tablas, por ejemplo para aplicar mecanismos de auditora.

You might also like