Documente Academic
Documente Profesional
Documente Cultură
Página 1 de 28
Revisión: 8
Índice de contenido
Licencia:..................................................................................................................................3
Introducción............................................................................................................................8
Estándares de SQL...................................................................................................................8
Las tablas.................................................................................................................................8
Sentencias SQL........................................................................................................................9
Ten en cuenta que..............................................................................................................9
Notación para las sentencias SQL........................................................................................9
DDL y DML............................................................................................................................10
Tipos de datos.......................................................................................................................11
Manos a la obra....................................................................................................................11
Notas específicas de SQLite...............................................................................................11
Creando una tabla (CREATE).............................................................................................12
Insertando datos en una tabla (INSERT).............................................................................12
Actualizando datos de un registro (UPDATE).....................................................................12
Borrando registros(DELETE)...............................................................................................12
Recuperando datos de una tabla (SELECT).........................................................................12
Borrando una tabla (DROP)...............................................................................................13
Consultas con predicado...................................................................................................13
Cláusulas...........................................................................................................................13
Operadores para la cláusula WHERE..............................................................................14
Comodines para el LIKE............................................................................................15
Alias..................................................................................................................................15
Operando con varias tablas...................................................................................................17
Conceptos de claves (Primary key).....................................................................................17
Una tabla con varias primary keys.................................................................................18
Conceptos de claves (Foreign key).....................................................................................19
Joins..................................................................................................................................19
Uniones (UNION y UNION ALL)..............................................................................................20
Funciones..............................................................................................................................21
Ejemplos de funciones agregadas:.....................................................................................21
Ejemplos de funciones escalares:.......................................................................................21
GROUP BY.............................................................................................................................22
HAVING.................................................................................................................................22
Índices...................................................................................................................................23
Constraints - Restricciones.....................................................................................................23
Triggers.................................................................................................................................25
Consultas algo más complejas...............................................................................................27
Anidando consultas...........................................................................................................27
Limitar el número de elementos en la consulta..................................................................28
Página 2 de 28
Revisión: 8
Licencia:
Reconocimiento 3.0 España
Página 3 de 28
Revisión: 8
Página 4 de 28
Revisión: 8
Página 5 de 28
Revisión: 8
posible.
b. Si usted reproduce, distribuye o comunica públicamente la obra o la prestación, una
colección que la incorpore o cualquier obra derivada, debe mantener intactos todos los
avisos sobre la propiedad intelectual e indicar, de manera razonable conforme al medio
o a los medios que usted esté utilizando:
i. El nombre del autor original, o el seudónimo si es el caso, así como el del titular
originario, si le es facilitado.
ii. El nombre de aquellas partes (por ejemplo: institución, publicación, revista) que
el titular originario y/o el licenciador designen para ser reconocidos en el aviso
legal, las condiciones de uso, o de cualquier otra manera razonable.
iii. El título de la obra o la prestación si le es facilitado.
iv. El URI, si existe, que el licenciador especifique para ser vinculado a la obra o la
prestación, a menos que tal URI no se refiera al aviso legal o a la información
sobre la licencia de la obra o la prestación.
v. En el caso de una obra derivada, un aviso que identifique la transformación de
la obra en la obra derivada (p. ej., "traducción castellana de la obra de Autor
Original," o "guión basado en obra original de Autor Original").
Este reconocimiento debe hacerse de manera razonable. En el caso de una obra
derivada o incorporación en una colección estos créditos deberán aparecer como
mínimo en el mismo lugar donde se hallen los correspondientes a otros autores o
titulares y de forma comparable a los mismos. Para evitar la duda, los créditos
requeridos en esta sección sólo serán utilizados a efectos de atribución de la obra o la
prestación en la manera especificada anteriormente. Sin un permiso previo por escrito,
usted no puede afirmar ni dar a entender implícitamente ni explícitamente ninguna
conexión, patrocinio o aprobación por parte del titular originario, el licenciador y/o las
partes reconocidas hacia usted o hacia el uso que hace de la obra o la prestación.
c. Para evitar cualquier duda, debe hacerse notar que las restricciones anteriores (párrafos
4.a y 4.b) no son de aplicación a aquellas partes de la obra o la prestación objeto de
esta licencia que únicamente puedan ser protegidas mediante el derecho sui generis
sobre bases de datos recogido por la ley nacional vigente implementando la directiva
europea de bases de datos
5. Exoneración de responsabilidad
A MENOS QUE SE ACUERDE MUTUAMENTE ENTRE LAS PARTES, EL LICENCIADOR OFRECE LA
OBRA O LA PRESTACIÓN TAL CUAL (ON AN "AS-IS" BASIS) Y NO CONFIERE NINGUNA
GARANTÍA DE CUALQUIER TIPO RESPECTO DE LA OBRA O LA PRESTACIÓN O DE LA
PRESENCIA O AUSENCIA DE ERRORES QUE PUEDAN O NO SER DESCUBIERTOS. ALGUNAS
JURISDICCIONES NO PERMITEN LA EXCLUSIÓN DE TALES GARANTÍAS, POR LO QUE TAL
EXCLUSIÓN PUEDE NO SER DE APLICACIÓN A USTED.
6. Limitación de responsabilidad. SALVO QUE LO DISPONGA EXPRESA E IMPERATIVAMENTE
LA LEY APLICABLE, EN NINGÚN CASO EL LICENCIADOR SERÁ RESPONSABLE ANTE USTED
POR CUALESQUIERA DAÑOS RESULTANTES, GENERALES O ESPECIALES (INCLUIDO EL DAÑO
EMERGENTE Y EL LUCRO CESANTE), FORTUITOS O CAUSALES, DIRECTOS O INDIRECTOS,
PRODUCIDOS EN CONEXIÓN CON ESTA LICENCIA O EL USO DE LA OBRA O LA PRESTACIÓN,
INCLUSO SI EL LICENCIADOR HUBIERA SIDO INFORMADO DE LA POSIBILIDAD DE TALES
DAÑOS.
7. Finalización de la licencia
Página 6 de 28
Revisión: 8
Página 7 de 28
Revisión: 8
Introducción
Estos apuntes son una introducción muy básica al SQL, en ningún caso sustituyen a un buen
manual. Simplemente pueden dar una idea rápida de que es el SQL o bien ayudar a recordar
conceptos que no se utilizaban hace mucho tiempo.
SQL responde a Structured Query Language, es un lenguaje declarativo para acceder a las
bases de datos relacionales (hay otros tipos pero no vamos a hablar aquí de ellas). Nos
permitirá crear nuevas bases de datos, modificar bases de datos existentes y consultar y añadir
información.
Estándares de SQL
SQL es un estándar ANSI(American National Standards Institute) desde 1986 y esto implica
que conociendo este lenguaje podemos manipular cualquier base de datos de cualquier
fabricante. Por supuesto cada fabricante tendrá extensiones al lenguaje SQL pero si nos
apegamos al estándar conseguiremos hacer que nuestra consultas funcionen en cualquier
base de datos. Este estándar fué también adoptado por la ISO en 1987.
Año Nombre
1986 SQL-86
1989 SQL-89
1992 SQL-92
1999 SQL:1999
2003 SQL:2003
2006 SQL:2006
2008 SQL:2008
Las tablas
Los datos en una base de datos relacionales se guardarán siempre en una o más tablas. Una
tabla consistirá en una o más columnas y una o más filas.
Con las columnas especificamos los datos que vamos a guardar y con cada fila introducimos
los datos en sí mismos.
Página 8 de 28
Revisión: 8
Ejemplo:
Nombre Apellidos Edad
Unai Estébanez 32
Jon Zaragoza 30
Aquí podemos ver una tabla con tres columnas y dos filas (de datos).
Cada tabla se identificará con un nombre, por ejemplo “Contactos”.
A cada fila se le denomina comúnmente “Registro”.
A cada parte de la fila (cada columna de una fila) se le llama “Campo”.
Sentencias SQL
Para acceder a las tablas y consultar o modificar los datos usaremos sentencias SQL.
Ejemplo:
SELECT * FROM Contactos; ← A esto se le llama sentencia SQL.
Esta sentencia SQL nos permite obtener todas los datos de la tabla “Contactos”. A una
sentencia se le llama a una serie de comandos junto con unas cláusulas, operadores,
funciones, etc.. Todo ello forma una “frase” (sentencia) y nos permite realizar una operación.
Página 9 de 28
Revisión: 8
DDL y DML
SQL se puede dividir en dos lenguajes DDL y DML. Cada parte tiene unos comandos para
realizar operaciones de distinta naturaleza.
Un comando es una “orden”, le indicará a la base de datos lo que esperamos que haga y tal y
como hemos dicho tenemos dos grupos:
1. DDL (Data Definition Language): Estos nos permitirán crear nuevas bases de datos,
modificarlas y eliminarlas. Estos comandos afectan a tablas, campos e índices.
• CREATE Crea nuevas tablas, campos e índices.
• ALTER Modifica las tablas
• DROP Elimina tablas e índices.
2. DML (Data Manipulation Language): Nos permiten
manipular(consultar,ordenar,filtrar,etc) los datos existentes en una base de datos.
• SELECT Consulta filas en la base de datos
• UPDATE Modifica valores de una fila
• INSERT Inserta una nueva fila
• DELETE Elimina filas
Página 10 de 28
Revisión: 8
Tipos de datos
En cada columna vamos a meter datos, por ejemplo, un nombre o una edad. Esto hay que
decírselo a la base de datos cuando creamos cada tabla1.
Cada base de datos tiene unos tipos definidos, en nuestro caso, resumiendo (consultar la
documentación para más información) tenemos los siguientes tipos:
• NULL
• INTEGER para guardar números enteros.
• REAL para números reales.
• TEXT para guardar texto
• BLOB para guardar datos binarios
Para más información sobre SQLite versión 3 se puede consultar la documentación sobre tipos
de datos en (http://www.sqlite.org/datatype3.html).
Manos a la obra
Vamos a jugar un poco con los comandos para entenderlos. Yo he realizado los ejemplos en
la consola de SQLite que puedes descargarte en (http://www.sqlite.org/). En principio no
debieras tener pegas para usar cualquier otra base de datos, yo he utilizado esta porque es la
que estoy usando en mi proyecto actual.
1 Esto no es cierto para todas las bases de datos, actualmente es posible no indicar que tipo de datos metemos
y la base de datos por si misma determinar que tipo es cada dato a medida que se los mete. Aún así es buena
costumbre especificarlos y seguir la definición inicial que hacemos.
Página 11 de 28
Revisión: 8
Borrando registros(DELETE)
Borramos a Andres:
DELETE FROM Contactos WHERE Nombre="Andres";
Página 12 de 28
Revisión: 8
Ejemplo:
SELECT DISTINCT Nombre FROM Contactos;
Nos devolverá todos los nombre de la tabla contactos pero omitirá las filas cuyos campos
seleccionados coincidan totalmente.
En este otro caso solo nos omitirá las filas en las que coincidan los dos campos.
SELECT DISTINCT Nombre,Edad FROM Contactos;
Cláusulas
Son condiciones de modificación para definir los datos que deseamos seleccionar o
manipular. Ya las hemos utilizado sin darnos cuenta, FROM es una de ellas.
Efectivamente FROM “especifica” de que tabla queremos obtener los datos, es por tanto una
cláusula.
Cláusulas comunes son
• FROM Especifica la tabla de la que cogemos los registros
• WHERE Indica condiciones que deben cumplir los registros seleccionados
• GROUP BY Separa los registros seleccionados en grupos específicos.
Página 13 de 28