Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bases de Datos Elementos Básicos de SQL: © Luis Mengual
Bases de Datos Elementos Básicos de SQL: © Luis Mengual
BASES DE DATOS
© Luis Mengual
F. I. M. DE DATOS
BASES - Elementos Básicos de SQL
L.S.I.I.S
BASES DE DATOS
Elementos Básicos de SQL
http://www.personal.fi.upm.es/~lmengual/base_datos/bd.html
OBJETIVOS
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
ÍNDICE
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
ÍNDICE
3. Lenguaje de Manipulación de Datos (Data Manipulation Language, DML)
Modificación de las Bases de Datos
Inserción
Borrado
Actualizaciones
Consultas SELECT
Selección básica
Eliminación Duplicados (DISTINCT)
Selección Condicional Simple (WHERE)
Selección Condicional Compuesta (WHERE AND/OR)
Selección Tuplas en Función de Valores (IN)
Selección Función de Rango de Valores (BETWEEN)
Selección Búsqueda de Patrones (LIKE)
Selección Ordenación de Resultados (ORDER BY)
Selección Funciones Aritméticas (AVG, COUNT, MAX, MIN, SUM)
Selección Grupos tuplas (GROUP BY)
Selección y limitar Funciones Aritméticas (HAVING)
Selección con Alias
Selección 2 tablas (join natural)
Selección Concatenación Resultados (CONCAT)
Selección Subcadenas Resultados (SUBSTR)
SQL Avanzado
CONSULTAS ANIDADAS
Operador EXISTS
Subconsultas en la cláusula FROM
Operador UNION © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
BIBLIOGRAFÍA
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
Tablas, Registros, Atributos
Tabla: Alumnos
Dni Nombre Fecha_Nac
MODELO RELACIONAL
Clave Primaria, Ajena
Tabla: Matriculaciones
Tabla: Alumnos
Dni Cod_Asignatura Nota
Dni Nombre Fecha_Nac
72.124.563 023456 (Física) 8
72.124.563 Silvia Rodríguez 12/09/1990
12.345.235 023121 (Química) 5
12.345.235 Carlos Martinez 13/03/1991
12.345.235 023212(Dibujo) 5
7.375.911 No vale
Clave Primaria Clave Ajena
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
Diagramas de Esquema
Alumnos Matriculaciones
Fecha_Nac Nota
Tabla Hija
Tabla Padre
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
Paso de Diagramas E-R a Modelo Relacional (I)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
Paso de Diagramas E-R a Modelo Relacional (II)
Transformación de relaciones 1:N (I)
Cif Dni
(0,1) (0,N)
Nombre Empresa Trabaja-en Trabajador Nombre
Domicilio Direccion
Trabajador
Empresa
Dni
Cif
Nombre
Nombre
Direccion
Domicilio
Cif
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
MODELO RELACIONAL
Paso de Diagramas E-R a Modelo Relacional (II)
(0,M) (0,N)
Fecha_nac Alumnos Matricula Asignaturas Nombre
Nombre Curso
Nota
Clave primaria
Dominios
– Un dominio describe un conjunto de posibles valores para cierto atributo.
Como un dominio restringe los valores del atributo, puede ser
considerado como una restricción.
Clave única
– Cada tabla puede tener uno o más campos cuyos valores identifican de
forma única cada registro de dicha tabla,
– No pueden existir dos o más registros diferentes cuyos valores en dichos
campos sean idénticos.
– Pueden existir varias claves únicas en una determinada tabla, y a cada
una de éstas suele llamársele candidata a clave primaria.
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Clave primaria
– Una clave primaria es una clave única elegida entre todas las candidatas
Sólo puede existir una clave primaria por tabla y ningún campo de dicha
clave puede contener valores NULL.
Clave índice
– Las claves índice surgen con la necesidad de tener un acceso más rápido
a los datos. Los índices pueden ser creados con cualquier combinación
de campos de una tabla.
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
CODIGO JAVA
Internet SGBD
+
BD
cdcol.cds
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
}
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
statement.close();
resultSet.close();
connection.close();
System.out.println("Liberados recursos y cerrada conexion");
}
catch(SQLException se) {
//se.printStackTrace();
System.out.println("Mensaje errorr : "+se.getMessage());
System.out.println("Codigo error : "+se.getErrorCode());
System.out.println("Estado SQL : "+se.getSQLState());
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch(Exception e) {
System.out.println("Se produjo un error inesperado: "+e.getMessage());
}
finally {
try {
}
© Luis Mengual
}
BASES DE DATOS - Elementos Básicos de SQL
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL
Structured Query Language
Lenguaje Declarativo
– Especifica qué es lo que se quiere y no cómo
conseguirlo, por lo que una sentencia no establece
explícitamente un orden de ejecución
1980
1981 1981
1984
ANSI encarga el desarrollo de
1985 un lenguaje relacional
1986
1987
1987
1988 SQL/86 estándar ISO
1989
1989
1990
1994
SQL/92 -> Versión extendida de SQL
1995
1996
1997
1998
1999
2000
2000
2001
2001
SQL3 -> Capacidades multimedia
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL
Structured Query Language
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Ventajas de SQL
Manipulación de Tablas
Tipos de Datos
Tipos Numéricos
INT (INTEGER) para almacenar números enteros (4B)
– En un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned,
el rango es 0 a 4294967295
TINYINT es un número entero con rango de valores válidos desde -128 a 127. Si se
configura como unsigned (sin signo), el rango de valores es de 0 a 255 (1B)
SMALLINT, para números enteros, con rango desde -32768 a 32767. Si se configura como
unsigned, 0 a 65535. (2B)
MEDIUMINT para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se
configuracomo unsigned, 0 a 16777215 (3B)
BIGINT número entero con rango de valores desde -9223372036854775808 a
9223372036854775807. Unsigned, desde 0 a 18446744073709551615. (8B)
Manipulación de Tablas
Tipos de Datos
Tipos de caracteres
CHAR (n)
– Este tipo se utiliza para almacenar cadenas de longitud
fija. Su longitud abarca desde 1 a 255 caracteres.
VARCHAR (n)
– Al igual que el anterior se utiliza para almacenar cadenas,
en el mismo rango de 1-255 caracteres, pero en este
caso, de longitud variable
TEXT
– Se usa para cadenas con un rango de 255 - 65535
caracteres
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Tipos de Datos
Tipos Binarios
BINARY(M)
– El tipo BINARY es similar al tipo CHAR, pero almacena
cadenas de datos binarios en lugar de cadenas de
caracteres no binarias.
VARBINARY(M)
– El tipo VARBINARY es similar al tipo VARCHAR, pero
almacena cadenas de bytes en lugar de cadenas de
caracteres no binarias.
BLOB
– Se usa para cadenas binarias con un rango de 255 -
65535 caracteres
MEDIUMLOB 16Mbytes
LONGBLOB 4Gbytes
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Tipos de Datos
TIMESTAMP
– Combinación de fecha y hora. El rango va desde el 1 de enero
de 1970 al año 2037. El formato de almacenamiento coincide en
algunos gestores con DATETIME
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Tipos de Datos
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Tipos de Datos - Funciones
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Tipos de Datos. Creación de Dominios
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Crear tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Restricción UNIQUE
Manipulación de Tablas
Restricciones en las tablas
Restricción CHECK
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Claves Primarias
Las claves primarias pueden especificarse cuando se
crea la tabla (utilizando CREATE TABLE) o cambiándola
estructura existente de la tabla (utilizando ALTER TABLE)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Claves Ajenas (I)
Una clave ajena es un campo (o campos) que señala la clave
primaria de otra tabla. El propósito de la clave externa es asegurar
la integridad referencial de los datos. En otras palabras, sólo se
permiten los valores que se esperan que aparezcan en la base de
datos.
Pedidos
Cliente
npedido Clave Primaria
Clave Primaria Dni (Primary Key)
(Primary Key) fecha
Nombre
Cantidad
Apellido
Clave Ajena
Cliente_dni (Foreing Key)
Manipulación de Tablas
Restricciones en las tablas
Claves Ajenas (II)
Las claves ajenas pueden especificarse cuando se crea la tabla
(utilizando CREATE TABLE)
CREATE TABLE Pedidos
(npedido integer,
Fecha date,
Cantidad double,
Cliente_Dni integer,
Primary Key (npedido),
Foreign Key (Cliente_Dni) references Ciente(Dni));
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Claves Ajenas (III)
Las claves ajenas tambien pueden especificarse
cambiando la estructura existente de la tabla (utilizando
ALTER TABLE)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Borrado en tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
Actualización en tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
)ENGINE=InnoDB;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Restricciones en las tablas
ON DELETE CASCADE.
– Con esta opción escrita a continuación del atributo al que se hace
referencia, lo que se consigue es que si se borra en la tabla a la que hace
referencia el atributo una de las tuplas, las tuplas que contengan ese valor
en la tabla donde se ha definido la clave ajena se eliminaran
automáticamente
ON UPDATE CASCADE.
– Si se modifica alguno de los valores de la tabla referenciada,
automáticamente se actualizan y toman el mismo valor.
Manipulación de Tablas
Modificación de tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Modificación de tablas
Manipulación de Tablas
Modificación de tablas
Cliente
Dni integer
Nombre varchar (30)
Apellido varchar (30)
Cliente
Dni integer
Nombre varchar (30)
Apellido varchar (30)
Dirección varchar (20)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Modificación de tablas
Cliente
Dni integer
NomApp varchar (30)
Apellido varchar (30)
Dirección varchar (20)
Cliente
Dni integer
NomApp varchar (60)
Apellido varchar (30)
Dirección varchar (20) © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Modificaciones en las tablas
Cliente
Dni integer
NomApp varchar (60)
Apellido varchar (30)
Dirección varchar (20)
Cliente
Dni integer
NomApp varchar (60)
Direccion varchar (20)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Borrado de tablas
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Inserción de Datos
Manipulación de Tablas
Inserción de Datos
Cliente
Dni integer
NomApp varchar (60)
Direccion varchar (20)
Manipulación de Tablas
Actualización de Datos
UPDATE "nombre_tabla"
SET "columna_1" =[nuevo valor], "columna_2" = [nuevo valor],
… "columna_n" =[nuevo valor],
WHERE {condición}
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Actualización de Datos
Tabla: Cliente
Dni Nombre Direccion
UPDATE Cliente
SET direccion=‘Arturo soria12’
WHERE Nombre=‘Carlos Soto’
AND Dni= 7124563
Tabla: Cliente
Dni Nombre Direccion
Manipulación de Tablas
Borrado de Datos
DELETE FROM
"nombre_tabla"
WHERE {condición}
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Manipulación de Tablas
Borrado de Datos
Tabla: Cliente
Dni Nombre Direccion
Tabla: Cliente
Dni Nombre Direccion
Manipulación de Tablas
Borrado de Datos
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Consulta Básica
Comando SELECT
SELECT lista_atributos
FROM lista_tablas
WHERE condiciones
GROUP BY lista_atributos
HAVING condiciones
ORDER BY lista_atributos;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Consulta Básica
Comando SELECT
SELECT "nombre_columna"
FROM "nombre_tabla"
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Consulta Básica
Comando SELECT
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
SELECT Tienda
FROM Información_ventas
Resultado:
Madrid
Sevilla
Madrid
Barcelona
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Eliminación Duplicados
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Eliminación Duplicados
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
Sevilla 250 2010/01/07
Madrid 300 2010/01/08
Barcelona 700 2010/01/08
Resultado:
Madrid
Sevilla
Barcelona
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Condicional Simple
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición"
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Condicional Simple: Operadores
Operadores Uso
< Menor que
<> Distinto de
= Igual que
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Condicional Simple
Comando SELECT … WHERE
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
Sevilla 250 2010/01/07
Madrid 300 2010/01/08
SELECT Tienda
FROM Información_ventas
WHERE Ventas>1000
Resultado:
Madrid
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Condicional Compuesta
Comando SELECT … WHERE ….AND/OR
{}+ significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que
AND u OR pueden utilizarse indistintamente. Además, podemos utilizar el símbolo © Luis Mengual
paréntesis () para indicar el orden de la condición.
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Condicional Compuesta
Comando SELECT … WHERE ….AND/OR
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
Sevilla 250 2010/01/07
Cuenca 300 2010/01/08
Barcelona 700 2010/01/08
SELECT Tienda
FROM Información_Ventas
WHERE Ventas > 1000
OR (Ventas < 500 AND Ventas> 275)
Resultado:
Madrid
Cuenca © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Tuplas en Función de Valores
Comando SELECT … WHERE ….IN
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna"
IN (''valor1', ''valor2', ...)
Consulta de Datos
Selección Tuplas en Función de Valores
Comando SELECT … WHERE ….IN
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
SELECT *
FROM Información_ventas
WHERE Tienda IN ('Madrid', 'Sevilla')
Resultado:
Madrid 1500 05/01/2010
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Función de Rango de Valores
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna"
BETWEEN 'valor1' AND 'valor2'
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Función de Rango de Valores
SELECT *
FROM Información_ventas
WHERE Fecha BETWEEN '2010/01/06' AND '2010/01/10'
Resultado:
Sevilla 250 07/01/2010
Cuenca 300 08/01/2010
Consulta de Datos
Selección Búsqueda de Patrones
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna"
LIKE {patrón*}
Consulta de Datos
Selección Función de Rango de Valores
Comando SELECT …WHERE….. LIKE (patrón)
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
Sevilla 250 2010/01/07
Cuenca 300 2010/01/08
Barcelona 700 2010/01/08
SELECT *
FROM SELECT2.Información_ventas
WHERE Tienda LIKE '%e%'
Resultado:
Sevilla 250 07/01/2010
Cuenca 300 08/01/2010
Consulta de Datos
Selección Búsqueda de Patrones
Comando SELECT …WHERE….. LIKE (patrón)
Consulta de Datos
Selección Ordenación de Resultados
Comando SELECT …WHERE….. ORDER BY
Consulta de Datos
Selección Ordenación de Resultados
Comando SELECT …WHERE….. ORDER BY
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Ordenación de Resultados
Comando SELECT …WHERE….. ORDER BY
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 2010/01/05
Sevilla 250 2010/01/07
Cuenca 300 2010/01/08
Barcelona 700 2010/01/08
Consulta de Datos
Selección Ordenación de Resultados
Comando SELECT …WHERE….. ORDER BY
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 05/01/2010
Consulta de Datos
Selección Funciones Aritméticas
Comando SELECT …….. AVG, COUNT, MAX,MIN,SUM
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Funciones Aritméticas
Comando SELECT …….. AVG, COUNT, MAX,MIN,SUM
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 05/01/2010
SELECT SUM(Ventas)
FROM Información_ventas
Resultado:
SUM(Ventas):
2750
2 750 representa la suma de todas las entradas de Ventas:
1500 € + 250 € + 300 € + 700 €.
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Funciones Aritméticas
Comando SELECT …….. AVG, COUNT, MAX,MIN,SUM
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Funciones Aritméticas
Comando SELECT …….. AVG, COUNT, MAX,MIN,SUM
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 05/01/2010
Resultado: Resultado:
Consulta de Datos
Selección Funciones Aritméticas
Comando SELECT ….. AVG, COUNT, MAX,MIN,SUM… GROUP BY…
SELECT "nombre1_columna",
SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna"
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Funciones Aritméticas
Resultado:
Tienda, SUM(Ventas)
Madrid 1800
Sevilla 250
Barcelona 700 © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección y limitar Funciones
SELECT "nombre1_columna",
SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condición de función)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección y limitar Funciones
Tienda SUM(Ventas)
Madrid 1800 €
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección con Alias
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección con Alias
Comando SELECT ….. “alias_tabla…………….”alias_columna”
Tabla: Información_Ventas
Tienda Ventas Fecha
Madrid 1500 05/01/2010
Resultado:
Tiendas, Total_Ventas
Madrid 1800
Sevilla 250
© Luis Mengual
Barcelona 700
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección 2 tablas (join natural)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección 2 tablas (join natural)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección 2 tablas (join natural)
Tabla: Zonas_Ventas Tabla: Información_Ventas
Región Tienda Tienda Ventas Fecha
Centro-Sur Madrid Madrid 1500 05/01/2010
Consulta de Datos
Selección 2 tablas (Join Natural)
Comando SELECT .. From Tabla1, Tabla2 WHERE Tabla1.atr=Tabla2.atr
Resultado:
REGIÓN VENTAS
Centro-Sur 2050
Noreste 700 © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Concatenación Resultados
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Concatenación Resultados
Tabla: Zonas_Ventas
Región Tienda
Centro-Sur Madrid
Centro-Sur Sevilla
Noreste Zaragoza
Noreste Barcelona
Resultado :
‘Centro-SurMadrid’
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Subcadenas Resultados
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
Consulta de Datos
Selección Subcadenas Resultados
Comando SELECT .. SUBSTR
Tabla: Zonas_Ventas
Región Tienda
Centro-Sur Madrid
Centro-Sur Sevilla
Noreste Zaragoza
Noreste Barcelona
Resultado :
‘drid’
Resultado :
‘arce’
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
CONSULTAS ANIDADAS
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE "nombre2_columna" [Operador ]
(SELECT "nombre3_columna"
FROM "nombre2_tabla"
WHERE [Condición] )
SQL AVANZADO
CONSULTAS ANIDADAS
Tabla: Zonas_Ventas Tabla: Información_Ventas
Región Tienda Tienda Ventas Fecha
Centro-Sur Madrid Zaragoza 1500 05/01/2010
Centro-Sur Sevilla Barcelona 250 07/01/2010
Noreste Zaragoza Zaragoza 300 08/01/2010
La cláusula IN se puede usar para enlazar la consulta interna y la consulta externa en una
consulta anidada (Se pueden utilizar muchos operadores tales como >, <, o =)
SUM(Ventas)
2050 © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
CONSULTAS ANIDADAS
SUM(Sales)
2750
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Operador EXISTS
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE EXISTS
(SELECT *
FROM "nombre2_tabla"
WHERE [Condición])
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Operador EXISTS
SUM(Sales)
2750
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
EJEMPLO
Estudio(nombre, dirección)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas que devuelven un valor escalar
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas que devuelven un valor escalar
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas que devuelven tablas
* NOT EXISTS devuelve true si la tabla es vacía y false si la tabla contiene elementos
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas que devuelven tablas
SELECT titulo
FROM pelicula
WHERE numero IN (SELECT numero
FROM productora
WHERE valor > 10000000);
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas en la cláusula FROM (I)
SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column2) AS t2;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Subconsultas en la cláusula FROM (I)
Tabla: Zonas_Ventas Tabla: Información_Ventas
Región Tienda Tienda Ventas Fecha
Centro-Sur Madrid Zaragoza 1500 05/01/2010
Centro-Sur Sevilla Barcelona 250 08/01/2010
Noreste Zaragoza Zaragoza 300 08/01/2010
SELECT max(sum_colum1)
FROM (SELECT SUM(ventas) AS sum_colum1
FROM anidadofrom1.Información_Ventas GROUP BY tienda) AS t2;
max(sum_colum1) 1800
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
UNION
La sintaxis es la siguiente:
[Instrucción SQL 1]
UNION
[Instrucción SQL 2]
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
UNION
Resultado:
Fecha -> Todas las Fechas donde se hizo una
05-Jan-2010 operación de ventas
07-Jan-2010
08-Jan-2010
10-Jan-2010
11-Jan-2010
12-Jan-2010 © Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
UNION ALL
[Instrucción SQL 1]
UNION ALL
[Instrucción SQL 2]
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
UNION ALL
Tabla: Ventas_Internet Tabla: Ventas_Tiendas
Fecha Ventas Tienda Ventas Fecha
07/01/2010 250 Madrid 1500 05/01/2010
10/01/2010 535 Sevilla 250 07/01/2010
11/01/2010 320 Madrid 300 08/01/2010
Resultado:
Fecha -> Fechas donde se hicieron ventas bien sea en
05/01/2010 las tiendas o en Internet
07/01/2010
08/01/2010
08/01/2010
07/01/2010
10/01/2010
11/01/2010
© Luis Mengual
12/01/2010
BASES DE DATOS - Elementos Básicos de SQL
SQL AVANZADO
Intersección en Columnas
Tabla: Ventas_Internet Tabla: Ventas_Tiendas
Fecha Ventas Tienda Ventas Fecha
07/01/2010 250 Madrid 1500 05/01/2010
SELECT VT.Fecha
FROM Ventas_Tienda VT, Ventas_internet VI
WHERE VT.fecha = VI.fecha
SQL AVANZADO
Diferencia en Columnas
Tabla: Ventas_Internet Tabla: Ventas_Tiendas
Fecha Ventas Tienda Ventas Fecha
07/01/2010 250 Madrid 1500 05/01/2010
Resultado:
Date
05/01/2010
08/01/2010
Operadores de Asignación
SELECT @nombre;
SELECT @npedido
set @newdni='7211546v';
SELECT @newdni;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SET AUTOCOMMIT=0;
START TRANSACTION;
COMMIT;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SET AUTOCOMMIT=0;
START TRANSACTION;
SET @cantidad=100;
COMMIT;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
SET AUTOCOMMIT=0;
START TRANSACTION;
ROLLBACK;
SET AUTOCOMMIT=0;
START TRANSACTION;
COMMIT;
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
FUNCIONES TIEMPO
MYSQL (I)
© Luis Mengual
BASES DE DATOS - Elementos Básicos de SQL
FUNCIONES TIEMPO
MYSQL (Ii)
© Luis Mengual