Está en la página 1de 8

SQL

SQL (por sus siglas en ingls Structured Query Lan- El SEQUEL termin siendo el predecesor de SQL, que es
guage; en espaol lenguaje de consulta estructurada) una versin evolucionada del primero. SQL pasa a ser el
es un lenguaje especco del dominio que da acceso a un lenguaje por excelencia de los diversos sistemas de ges-
sistema de gestin de bases de datos relacionales que per- tin de bases de datos relacionales surgidos en los aos si-
mite especicar diversos tipos de operaciones en ellos. guientes y fue por n estandarizado en 1986 por el ANSI,
Una de sus caractersticas es el manejo del lgebra y el dando lugar a la primera versin estndar de este lengua-
clculo relacional que permiten efectuar consultas con el je, SQL-86 o SQL1. Al ao siguiente este estndar
n de recuperar, de forma sencilla, informacin de bases es tambin adoptado por ISO.
de datos, as como hacer cambios en ellas. Sin embargo, este primer estndar no cubra todas las ne-
Originalmente basado en el lgebra relacional y en el cesidades de los desarrolladores e inclua funcionalidades
clculo relacional, SQL consiste en un lenguaje de deni- de denicin de almacenamiento que se consider supri-
cin de datos, un lenguaje de manipulacin de datos y un mirlas. As que, en 1992, se lanz un nuevo estndar am-
lenguaje de control de datos. El alcance de SQL incluye pliado y revisado de SQL llamado SQL-92 o SQL2.
la insercin de datos, consultas, actualizaciones y borra- En la actualidad SQL es el estndar de facto de la inmen-
do, la creacin y modicacin de esquemas y el control sa mayora de los SGBD comerciales. Y, aunque la diver-
de acceso a los datos. Tambin el SQL a veces se describe sidad de aadidos particulares que incluyen las distintas
como un lenguaje declarativo, tambin incluye elementos implementaciones comerciales del lenguaje es amplia, el
procesales. soporte al estndar SQL-92 es general y muy amplio.
SQL fue uno de los primeros lenguajes comerciales para El ANSI SQL sufri varias revisiones y agregados a lo
el modelo relacional de Edgar Frank Codd como se des-
largo del tiempo:
cribi en su papel de 1970 El modelo relacional de datos
para grandes bancos de datos compartidos. A pesar de
no adherirse totalmente al modelo relacional descrito por
Codd, pas a ser el lenguaje de base de datos ms usado. 2 Caractersticas generales de SQL
SQL pas a ser el estndar del Instituto Nacional Es-
SQL es un lenguaje de acceso a bases de datos que explota
tadounidense de Estndares (ANSI) en 1986 y de la
la exibilidad y potencia de los sistemas relacionales y
Organizacin Internacional de Normalizacin (ISO) en
permite as gran variedad de operaciones.[4]
1987. Desde entonces, el estndar ha sido revisado pa-
ra incluir ms caractersticas. A pesar de la existencia de Es un lenguaje declarativo de "alto nivel" o de no proce-
ambos estndares, la mayora de los cdigos SQL no son dimiento que, gracias a su fuerte base terica y su orien-
completamente portables entre sistemas de bases de datos tacin al manejo de conjuntos de registros y no a re-
diferentes sin ajustes. gistros individuales permite una alta productividad en
codicacin 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 re-
1 Orgenes y evolucin gistros. SQL tambin tiene las siguientes caractersticas:

Los orgenes de SQL estn ligados a las bases de datos Lenguaje de denicin de datos: El LDD de SQL
de las pc o mvil aun a los de las bases de datos relacio- proporciona comandos para la denicin de esque-
nales. En 1970 E. F. Codd propone el modelo relacional mas de relacin, borrado de relaciones y modica-
y asociado a este un sublenguaje de acceso a los datos ciones de los esquemas de relacin.
basado en el clculo de predicados.[1] Basndose en es- Lenguaje interactivo de manipulacin de datos:
tas ideas, los laboratorios de IBM denieron el lenguaje El LMD de SQL incluye lenguajes de consultas ba-
SEQUEL (Structured English Query Language) que ms sado tanto en lgebra relacional como en clculo re-
tarde fue ampliamente implementado por el sistema de lacional de tuplas.
gestin de bases de datos (SGBD) experimental System
R, desarrollado en 1977 tambin por IBM. Sin embargo, Integridad: El LDD de SQL incluye comandos para
fue Oracle quien lo introdujo por primera vez en 1979 en especicar las restricciones de integridad que deben
un producto comercial. cumplir los datos almacenados en la base de datos.

1
2 3 LENGUAJE DE DEFINICIN DE DATOS (DDL)

Denicin de vistas: El LDD incluye comandos pa- 3 Lenguaje de denicin de datos


ra denir las vistas.
(DDL)
Control de transacciones: SQL tiene comandos
para especicar el comienzo y el nal de una El lenguaje de denicin de datos (en ingls Data Deni-
transaccin. tion Language, o DDL), es el que se encarga de la modi-
cacin de la estructura de los objetos de la base de datos.
Incluye rdenes para modicar, borrar o denir las tablas
SQL incorporado y dinmico: Esto quiere decir
en las que se almacenan los datos de la base de datos.
que se pueden incorporar instrucciones de SQL en
Existen cuatro operaciones bsicas: CREATE, ALTER,
lenguajes de programacin como: C++, C, Java,
DROP y TRUNCATE.[5]
PHP, Cobol, Pascal y Fortran.

Autorizacin: El LDD incluye comandos para es- 3.1 CREATE | CREAR


pecicar los derechos de acceso a las relaciones y a
las vistas. Este comando permite crear objetos de datos, como nue-
vas bases de datos, tablas, vistas y procedimientos alma-
cenados.
2.1 Tipos de datos
Ejemplo (crear una tabla)
Algunos de los tipos de datos bsicos de SQL son:
CREATE TABLE 'CUSTOMERS';
Varchar: Recibe cadena de palabras compuestas de
letras, nmeros y caracteres especiales.
3.2 ALTER | MODIFICAR
Date: una fecha de calendario que contiene el ao
(de cuatro cifras), el mes y el da. Este comando permite modicar la estructura de una ta-
bla u objeto. Se pueden agregar/quitar campos a una ta-
Time: La hora del da en horas minutos segundos (el bla, modicar el tipo de un campo, agregar/quitar ndices
valor predeterminado es 0). a una tabla, modicar un trigger, etc.

Datetime: la combinacin de Date y Time. Ejemplo (agregar columna a una tabla)

ALTER TABLE 'ALUMNOS' ADD EDAD INT


2.2 Optimizacin UNSIGNED;

Como ya se dijo antes, y suele ser comn en los lengua-


jes de acceso a bases de datos de alto nivel, SQL es un
lenguaje declarativo. O sea, que especica qu es lo que
3.3 DROP | ELIMINAR
se quiere y no cmo conseguirlo, por lo que una sentencia
Este comando elimina un objeto de la base de datos. Pue-
no establece explcitamente un orden de ejecucin.
de ser una tabla, vista, ndice, trigger, funcin, procedi-
El orden de ejecucin interno de una sentencia puede miento o cualquier objeto que el motor de la base de datos
afectar seriamente a la eciencia del SGBD, por lo que soporte. Se puede combinar con la sentencia ALTER.
se hace necesario que ste lleve a cabo una optimiza-
cin antes de su ejecucin. Muchas veces, el uso de n- Ejemplo
dices 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 DROP TABLE 'ALUMNOS';
actualizacin de la informacin. La optimizacin diere
sensiblemente en cada motor de base de datos y depende
de muchos factores.
3.4 TRUNCATE | BORRAR TABLA
Existe una ampliacin de SQL conocida como FSQL
(Fuzzy SQL, SQL difuso) que permite el acceso a bases Este comando trunca todo el contenido de una tabla. La
de datos difusas, usando la lgica difusa. Este lenguaje ventaja sobre el comando DROP, es que si se quiere bo-
ha sido implementado a nivel experimental y est evolu- rrar todo el contenido de la tabla, es mucho ms rpido,
cionando rpidamente. especialmente si la tabla es muy grande. La desventaja
4.2 SELECT | SELECCIONAR 3

es que TRUNCATE slo sirve cuando se quiere eliminar palabra clave FROM indica que los datos sern recupe-
absolutamente todos los registros, ya que no se permite rados de la tabla Coches.
la clusula WHERE. Si bien, en un principio, esta sen- SELECT matricula, marca, modelo, color, nume-
tencia parecera ser DML (Lenguaje de Manipulacin de ro_kilometros, num_plazas FROM Coches ORDER
Datos), es en realidad una DDL, ya que internamente, el BY marca,modelo;
comando TRUNCATE borra la tabla y la vuelve a crear
y no ejecuta ninguna transaccin. Ejemplo de Consulta simplicada a travs de un comodn
de Campos (*):
Ejemplo El uso del asterisco indica que queremos que la consulta
devuelva todos los campos que existen en la tabla y los
TRUNCATE TABLE 'NOMBRE_TABLA'; datos sern devueltos ordenados por marca y por modelo.
SELECT * FROM Coches ORDER BY marca, mode-
lo;

4 Lenguaje de manipulacin de
datos DML(Data Manipulation
Language)
4.2.2 Clusula WHERE
4.1 Denicin
Un lenguaje de manipulacin de datos (Data Manipula- La clusula WHERE es la instruccin que nos permite
tion Language, o DML en ingls) es un lenguaje propor-ltrar el resultado de una sentencia SELECT. Habitual-
cionado por el sistema de gestin de base de datos quemente no deseamos obtener toda la informacin existente
en la tabla, sino que queremos obtener slo la informacin
permite a los usuarios llevar a cabo las tareas de consulta
o manipulacin de los datos, organizados por el modeloque nos resulte til en ese momento. La clusula WHE-
de datos adecuado.[5] RE ltra los datos antes de ser devueltos por la consulta.
Cuando en la Clusula WHERE queremos incluir un tipo
El lenguaje de manipulacin de datos ms popular hoy texto, debemos incluir el valor entre comillas simples.
da es SQL, usado para recuperar y manipular datos en
una base de datos relacional. Ejemplos:
En nuestro ejemplo, se desea consultar un coche en con-
creto, para esto se agreg una clusula WHERE. Esta
4.2 SELECT | SELECCIONAR clusula especica una o varias condiciones que deben
cumplirse para que la sentencia SELECT devuelva los
La sentencia SELECT nos permite consultar los datos datos. En este caso la consulta devolver slo los datos
almacenados en una tabla de la base de datos. del coche con matrcula para que la consulta devuelva s-
lo los datos del coche con matrcula MF-234-ZD o bien
4.2.1 Forma bsica la matrcula FK-938-ZL . Se puede utilizar la clusula
WHERE solamente, en combinacin con tantas con-
SELECT [ALL | DISTINCT ] diciones como queramos.
<nombre_campo> [{,<nombre_campo>}] SELECT matricula, marca, modelo, color, nume-
FROM <nombre_tabla>|<nombre_vista> ro_kilometros, num_plazas FROM Coches
[{,<nombre_tabla>|<nombre_vista>}] WHERE matricula = 'MF-234-ZD' OR matricula =
[WHERE <condicin> [{ AND|OR <condicin>}]] 'FK-938-ZL' ;
[GROUP BY <nombre_campo> [{,<nombre_campo
Una Condicin WHERE puede ser negada a travs del
>}]]
[HAVING <condicin>[{ AND|OR <condicin>}]] Operador Lgico NOT. La Siguiente consulta devolver
todos los datos de la tabla Coches, menos el que tenga la
[ORDER BY <nombre_campo>|<indice_campo> [ASC
| DESC] Matrcula MF-234-ZD .
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]] SELECT matricula,marca, modelo, color, nume-
Ejemplo: ro_kilometros, num_plazas FROM coches WHERE
NOT matricula = 'MF-234-ZD';
Para formular una consulta a la tabla Coches y recupe-
rar los campos matricula, marca, modelo, color, nume- La Siguiente consulta utiliza la condicional DISTINCT,
ro_kilometros, num_plazas debemos ejecutar la siguiente la cual nos devolver todos los valores distintos formados
consulta. Los datos sern devueltos ordenados por marca por los Campos Marca y Modelo. de la tabla coches.
y por modelo en orden ascendente, de menor a mayor. La SELECT DISTINCT marca, modelo FROM coches;
4 4 LENGUAJE DE MANIPULACIN DE DATOS DML(DATA MANIPULATION LANGUAGE)

4.2.3 Clusula ORDER BY 4.4 INSERT | INSERTAR

La clusula ORDER BY es la instruccin que nos permite Una sentencia INSERT de SQL agrega uno o ms registros
especicar el orden en el que sern devueltos los datos. a una (y slo una) tabla en una base de datos relacional.
Podemos especicar la ordenacin ascendente o descen-
dente a travs de las palabras clave ASC y DESC. La
ordenacin depende del tipo de datos que este denido 4.4.1 Forma bsica
en la columna, de forma que un campo numrico ser or-
denado como tal, y un alfanumrico se ordenar de la A INSERT INTO 'tablatura' ('columna1',['columna2,... '])
a la Z, aunque su contenido sea numrico. El valor prede- VALUES ('valor1', ['valor2,...']) O tambin se puede
terminado es ASC si no se especica al hacer la consulta. utilizar como: INSERT INTO tablatura VALUES
('valor1','valor2')
Ejemplos:
'SELECT' matricula,
Las cantidades de columnas y valores deben ser iguales.
marca,
Si una columna no se especica, le ser asignado el valor
modelo,
por omisin. Los valores especicados (o implcitos) por
color,
la sentencia INSERT debern satisfacer todas las restric-
numero_kilometros,
ciones aplicables. Si ocurre un error de sintaxis o si algu-
num_plazas
na de las restricciones es violada, no se agrega la la y se
'FROM' coches
devuelve un error.
'ORDER BY' marca 'ASC', modelo 'DESC'; Este ejem-
plo, selecciona todos los campos matricula, marca, mo-
delo, color, numero_kilometros y num_plazas de la tabla 4.4.2 Ejemplo
coches, ordenndolos por los campos marca y modelo,
marca en forma ascendente y modelo en forma descen- INSERT INTO agenda_telefonica (nombre, numero)
dente. VALUES ('Roberto Jeldrez', 4886850);
SELECT matricula,
marca, Cuando se especican todos los valores de una tabla, se
modelo, puede utilizar la sentencia acortada:
color,
numero_kilometros, num_plazas INSERT INTO nombreTabla VALUES ('valor1', ['va-
FROM coches lor2,...'])
ORDER BY 2;
Este ejemplo, selecciona todos los campos matrcula, Ejemplo (asumiendo que 'nombre' y 'nmero' son las ni-
marca, modelo, color, numero_kilometros y num_plazas cas columnas de la tabla 'agenda_telefonica'):
de la tabla coches, ordenndolos por el campo marca, ya INSERT INTO agenda_telefonica VALUES ('Jhonny
que aparece en segundo lugar dentro de la lista de campos Aguilar', 080473968);
que componen la SELECT.

4.3 SUBCONSULTAS 4.4.3 Formas avanzadas

Una subconsulta es una sentencia SELECT que est em- Una caracterstica de SQL (desde SQL-92) es el uso de
bebida en una clusula de otra sentencia SQL. constructores de las para insertar mltiples las a la vez,
Las subconsultas pueden resultar tiles si necesitas selec- con una sola sentencia SQL:
cionar las de una tabla con una condicin que depende INSERT INTO ''tabla'' (''columna1'', [''columna2,...
de los datos de la propia tabla o de otra tabla. '']) VALUES (''valor1a'', [''valor1b,...'']), (''value2a'',
[''value2b,...'']),...;
La subconsulta (consulta interna), se ejecuta antes de la
consulta principal; el resultado de la subconsulta es utili-
zado por la consulta principal (consulta externa). Esta caracterstica es soportada por DB2, PostgreSQL
SELECT c.matricula, c.modelo FROM coches c WHE- (desde la versin 8.2), MySQL, y H2.
RE c.matricula IN ( SELECT m.matricula FROM Ejemplo (asumiendo que 'nombre' y 'nmero' son las ni-
multas m WHERE m.importe > 100 ); cas columnas en la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto
En este ejemplo, se seleccionan las matriculas y los mo- Fernndez', '4886850'), ('Alejandro Sosa', '4556550');
delos de los coches cuyas multas superan los u$s 100.
4.5 UPDATE 5

Que poda haber sido realizado por las sentencias WHERE name IN ('John Doe', 'Peter Doe')
INSERT INTO agenda_telefonica VALUES ('Ro-
berto Fernndez', '4886850'); INSERT INTO agen- El SELECT produce una tabla (temporal), y el esquema
da_telefonica VALUES ('Alejandro Sosa', '4556550'); de la tabla temporal debe coincidir con el esquema de la
tabla donde los datos son insertados.
Notar que las sentencias separadas pueden tener semn-
tica diferente (especialmente con respecto a los triggers), 4.5 UPDATE
y puede tener diferente rendimiento que la sentencia de
insercin mltiple. Una sentencia UPDATE de SQL es utilizada para modi-
Para insertar varias las en MS SQL puede utilizar esa car los valores de un conjunto de registros existentes en
construccin: una tabla.
INSERT INTO phone_book SELECT 'John Doe', '555-
1212' UNION ALL SELECT 'Peter Doe', '555-2323'; 4.5.1 Ejemplo

Tenga en cuenta que no se trata de una sentencia SQL v- UPDATE My_table SET eld1 = 'updated value asd'
lida de acuerdo con el estndar SQL (SQL: 2003), debido WHERE eld2 = 'N';
a la clusula subselect incompleta.
Para hacer lo mismo en Oracle se usa la Tabla DUAL,
siempre que se trate de solo una simple la: 4.6 DELETE
INSERT INTO phone_book SELECT 'John Doe',
'555-1212' FROM DUAL UNION ALL SELECT 'Peter Una sentencia DELETE de SQL borra uno o ms registros
Doe','555-2323' FROM DUAL existentes en una tabla.

Una implementacin conforme al estndar de esta lgica 4.6.1 Forma bsica


se muestra el siguiente ejemplo, o como se muestra arriba
(no aplica en Oracle): DELETE FROM tabla WHERE columna1 = 'valor1';
INSERT INTO phone_book SELECT 'John Doe',
'555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL SELECT 'Peter Doe','555-2323' FROM 4.6.2 Ejemplo
LATERAL ( VALUES (1) ) AS t(c)
DELETE FROM My_table WHERE eld2 = 'N';

Copia de las de otras tablas Un INSERT tambin


puede utilizarse para recuperar datos de otros, modicar- 5 Recuperacin de clave
la si es necesario e insertarla directamente en la tabla. To-
do esto se hace en una sola sentencia SQL que no implica Los diseadores de base de datos que usan una clave su-
ningn procesamiento intermedio en la aplicacin clien- plente como la clave principal para cada tabla, se ejecu-
te. Un SUBSELECT se utiliza en lugar de la clusula VA- tar en el ocasional escenario en el que es necesario recu-
LUES. El SUBSELECT puede contener JOIN, llamadas perar automticamente la base de datos, generando una
a funciones, y puede incluso consultar en la misma TA- clave primaria de una sentencia SQL INSERT para su
BLA los datos que se inserta. Lgicamente, el SELECT uso en otras sentencias SQL. La mayora de los sistemas
se evala antes que la operacin INSERT est iniciada. no permiten sentencias SQL INSERT para retornar la
Un ejemplo se da a continuacin. de datos. Por lo tanto, se hace necesario aplicar una solu-
cin en tales escenarios.
INSERT INTO phone_book2 SELECT * FROM pho-
ne_book WHERE name IN ('John Doe', 'Peter Doe') Implementaciones comunes incluyen:

Una variacin es necesaria cuando algunos de los datos de Utilizando un procedimiento almacenado especco
la tabla fuente se est insertando en la nueva tabla, pero de base de datos que genera la clave suplente, realice
no todo el registro. (O cuando los esquemas de las tablas la operacin INSERT, y nalmente devuelve la clave
no son iguales.) generada.
INSERT INTO phone_book2 ( [name], [phoneNumber] Utilizando una sentencia SELECT especica de ba-
) SELECT [name], [phoneNumber] FROM phone_book se de datos, sobre una tabla temporal que contiene
6 8 INTEROPERABILIDAD

la ltima la insertada. DB2 implementa esta carac- 7 Sistemas de gestin de base de


terstica de la siguiente manera:
datos
SELECT * FROM NEW TABLE ( INSERT INTO pho- Los sistemas de gestin de base de datos con soporte SQL
ne_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ms utilizados son, por orden alfabtico:
) ) AS t
DB2

Utilizando una sentencia SELECT despus de la Firebird


sentencia INSERT con funcin especca de base
de datos, que devuelve la clave primaria generada HSQL
por el registro insertado ms recientemente. Informix

Utilizando una combinacin nica de elementos del Interbase


original SQL INSERT en una posterior sentencia
SELECT. MariaDB

Microsoft SQL Server


Utilizando un GUID en la sentencia SQL INSERT
y la recupera en una sentencia SELECT. MySQL

Utilizando la funcin de PHP mysql_insert_id() de Oracle


MySQL despus de la sentencia INSERT. PostgreSQL

Utilizando un INSERT con la clusula RETUR- PervasiveSQL


NING para Oracle, que slo se puede utilizar dentro
de un PL/SQL bloque, en el caso de PostgreSQL SQLite
se puede usar tambin tanto con SQL como con Sybase ASE
PL/SQL.

INSERT INTO phone_book VALUES ( 'Cristobal Jel- 8 Interoperabilidad


drez','0426.817.10.30' ) RETURNING phone_book_id
INTO v_pb_id
El lenguaje de consultas de los diferentes sistemas de
gestin de bases de datos son incompatibles entre ellos
y no necesariamente siguen completamente el estndar.
En el caso de MS SQL se puede utilizar la siguiente En particular, la sintaxis de fecha y tiempo, la conca-
instruccin: tenacin de cadenas, nulas, y la comparacin de textos
en cuanto al tratamiento de maysculas y minsculas va-
Set NoCount On; INSERT INTO phone_book VALUES ran de un proveedor a otro. Una excepcin particular es
( 'Cristobal Jeldrez','0426.817.10.30' ); Select @@Iden- PostgreSQL, que se esfuerza por lograr el cumplimiento
tity as ID del estndar.[6]
Las implementaciones populares de SQL omiten comn-
mente soporte para funciones bsicas de SQL estndar,
como la de los tipos de dato DATE o TIME. Es el ca-
6 Disparadores so del manejador de bases de datos de Oracle (cuyo tipo
DATE se comporta como DATETIME, y carece de un
tipo TIME)[7] y MS SQL Server (antes de la versin de
Los disparadores, tambin conocidos como desencade- 2008). Como resultado, el cdigo SQL rara vez puede ser
nantes (triggers en ingls) son denidos sobre la tabla en portado entre los sistemas de base de datos sin modica-
la que opera la sentencia INSERT, y son evaluados en el ciones.
contexto de la operacin. Los desencadenantes BEFORE
INSERT permiten la modicacin de los valores que se Hay varias razones para esta falta de portabilidad entre
insertarn en la tabla. Los desencadenantes AFTER IN- sistemas de bases de datos:
SERT no puede modicar los datos de ahora en adelante,
pero se puede utilizar para iniciar acciones en otras ta- La complejidad y el tamao del estndar SQL con-
blas, por ejemplo para aplicar mecanismos de auditora lleva a que la mayora de las implementaciones de
Excel. SQL no sean compatibles con la norma completa.
7

La norma no especica el comportamiento de la ba- [7] Basic Elements of Oracle SQL: Data Types. Oracle
se de datos en varias reas importantes (por ejemplo, Database SQL Language Reference 11g Release 2 (11.2).
ndices, almacenamiento de archivos, etc.), dejando Oracle Database Documentation Library. Redwood City,
a las implementaciones decidir cmo comportarse. CA: Oracle USA, Inc. Consultado el 8 de junio de 2016.

El estndar SQL especica con precisin la sintaxis


que un sistema de base de datos conforme debe im-
plementar. Sin embargo, no est tan bien denida la
especicacin en el estndar de la semntica de las
construcciones del lenguaje, lo que lleva a ambige-
dad.

Muchos proveedores de bases de datos tienen gran-


des bases de clientes existentes, por lo que introducir
cambios para adaptarse el estndar podra producir
incompatibilidades en las instalaciones de los usua-
rios y el proveedor puede no estar dispuesto a aban-
donar la compatibilidad con versiones anteriores.

Hay poco incentivo comercial para que un provee-


dor facilite a los usuarios el cambiar de proveedor
de bases de datos.

Los usuarios que evalan el software de base de da-


tos tienden a valorar ms otros factores tales como
el rendimiento ms alto en sus prioridades sobre las
conformidad al estndar.

9 Vase tambin
Lenguaje de denicin de datos

SQL injection

FSQL

AQL

Modelo de base de datos

10 Referencias
[1] EF Codd; A relational model of data for large shared data
banks. Comm. ACM, 13 (1970), pp. 377-387.

[2] Eisenberg et al.: SQL:2003 Has Been Published.

[3] Aprobacin de SQL 2008.

[4] Chapple, Mike. SQL Fundamentals. En About.com.


Databases. Consultado el 17 de octubre de 2015.

[5] Rocko, Larry (2011). Course Technology/Cengage


Learning, ed. The language of SQL.

[6] About PostgreSQL. PostgreSQL 9.1 ocial website.


PostgreSQL Global Development Group. 2012. Consul-
tado el 8 de junio de 2016. PostgreSQL prides itself in
standards compliance. Its SQL implementation strongly
conforms to the ANSI-SQL:2008 standard.
8 11 ORIGEN DEL TEXTO Y LAS IMGENES, COLABORADORES Y LICENCIAS

11 Origen del texto y las imgenes, colaboradores y licencias


11.1 Texto
SQL Fuente: https://es.wikipedia.org/wiki/SQL?oldid=98846979 Colaboradores: AstroNomo, Andre Engels, Subienkov, PACO, Joseape-
rez, Sabbut, Moriel, JorgeGG, Pieter, Lourdes Cardenal, Hashar, Vanbasten 23, Sanbec, Tony Rotondas, Dodo, Ejmeza, Triku, Ascnder,
AdeVega, Sms, Elwikipedista, Murphy era un optimista, Valyag, Santiz, Jac, Rodrigouf, Cinabrium, Pipepupo, Porao, WingMaster, Jua-
nenriquez, Baldur71, Balderai, Benjavalero, Renabot, Boticario, RichardWeiss, Soulreaper, RobotJcb, Airunp, JMPerez, Edub, Yrithinnd,
Taichi, Rembiapo pohyiete (bot), Johnbojaen, Orgullobot~eswiki, RobotQuistnix, Gcsantiago, Francosrodriguez, Alhen, Superzerocool,
Yrbot, BOT-Superzerocool, Oscar ., BOTijo, YurikBot, Cameri, Icvav, GermanX, Zam, Beto29, The Photographer, R0MAN0, No s qu
nick poner, Eloy, Eskimbot, Gtz, Kaser, Grimpi, Tomatejc, Siabef, Guillefc, Calsbert, Jstitch, Nelson.cruz, CEM-bot, Damifb, Laura
Fiorucci, -jem-, Alexav8, Osepu, Roberpl, Fache, Erodrigufer, Dorieo, Montgomery, FrancoGG, Ingenioso Hidalgo, Resped, Juank8041,
Alvaro qc, Ty25, Mahadeva, uo Martnez, RoyFocker, Farm74, Juancmartinezh, Clementito, Botones, Cratn, Isha, Jugones55, Hotpa-
drino, Mansoncc, Diegazo, Muro de Aguas, Aitormoreno, TXiKiBoT, Netito777, Qu3tzalc0atl5, Jvlivs, Chabbot, Plux, DonBarredora,
Cinevoro, Warlockzero, VolkovBot, Technopat, Queninosta, Matdrodes, Rosette, Synthebot, DJ Nietzsche, BlackBeast, Shooke, Lucien
leGrey, AlleborgoBot, Muro Bot, Racso, Jesusosm, Rgfernandez, SieBot, Mushii, Loveless, MatiasAB, Siuto, Cobalttempest, Ogue, Mar-
celo, Gurgut, Xiscobernal, Tirithel, Mutari, Jmmuguerza, Javierito92, StarBOT, McMalamute, Eduardosalg, Leonpolanco, Pan con queso,
Botito777, LordT, Marcelomasci~eswiki, Raulshc, Jmrubira, Osado, Rrupo, UA31, AVBOT, ElWiau, Louperibot, J.delanoy, MarcoAure-
lio, Diegusjaimes, Arjuno3, Andreasmperu, Luckas-bot, Nallimbot, Jotterbot, Jorge 2701, Gacpro, RafaelRoblesL, SuperBraulio13, Xq-
bot, Jkbw, FrescoBot, Magomaitin, Botarel, Stuy, Rokemaster, AstaBOTh15, Juliandt, BOTirithel, Hprmedina, Dnog, TobeBot, Jsanchev,
DixonDBot, ErKURITA, PatruBOT, CVBOT, KamikazeBot, Gustavo Girardelli, Humbefa, Waeswaes, Jorge c2010, Cosmico085, Grou-
choBot, Carbosi, Bachi 2805, ZroBot, HRoestBot, Jotagarzon, Grillitus, Hoo man, ChuispastonBot, Kevyn.ry2, Xerox 5B, Antonorsi,
MerlIwBot, EdAr713, Jgcalderon37, Nagb1992, Renly, ChayitaBOT, Amolbot, Ileana n, Garett Omarx Daz Guzmn, LlamaAl, Elvisor,
Creosota, Juanitorreslp, Diegorb892, U-Alex, Camelotcam, Samuel nielsen, Fsaenzperez, Lautaro 97, Dogoteacher, Addbot, Balles2601,
BrobdingnaG, Rodbrunneis, Dnajerag, Carocad, JSStenta, Jarould, Matiia, Pineitor, Crystallizedcarbon, BenjaBot, Rodrigo Ronderos,
Ing.aragon.ipn, ElDaniMaster, 123neomar, Benjamn Quintana Jacobo, Costalf, TheSaul, YZUGUI, CoRegistros, Antojedalar, Krassni-
ne, Ricardo Quispe Quispe, FabricioWikipedia, Markdelapuerta, Fedeymaza, Sergee92 y Annimos: 582

11.2 Imgenes
Archivo:Yes_check.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/f/fb/Yes_check.svg Licencia: Public domain Colabo-
radores: Trabajo propio Artista original: SVG by Gregory Maxwell, simplied by Sarang

11.3 Licencia del contenido


Creative Commons Attribution-Share Alike 3.0

También podría gustarte