Académique Documents
Professionnel Documents
Culture Documents
INTRODUCCION AL SQL(2)
Consulta de datos.
Para consultar la informacin SQL pone a nuestra disposicin la sentencia
SELECT.
El formato de la sentencia select es:
SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
Veamos por partes que quiere decir cada una de las partes que conforman la sentencia.
SELECT
Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de
seleccin.
ALL
Indica que queremos seleccionar todos los valores.Es el valor por defecto y no
suele especificarse casi nunca.
DISTINCT
Indica que queremos seleccionar slo los valores distintos.
FROM
Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso
de que exista ms de una tabla se denomina a la consulta "consulta
combinada" o "join". En las consultas combinadas es necesario aplicar una
condicin de combinacin a travs de una clusula WHERE.
WHERE
Especifica una condicin que debe cumplirse para que los datos sean
devueltos por la consulta. Admite los operadores lgicos AND y OR.
GROUP BY Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin
con funciones agregadas.
HAVING
Especifica una condicin que debe cumplirse para los datosEspecifica una
condicin que debe cumplirse para que los datos sean devueltos por la
consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto
de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP
BY y la condicion debe estar referida a los campos contenidos en ella.
ORDER BY Presenta el resultado ordenado por las columnas indicadas. El orden puede
expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.
31/10/2014
La clusula WHERE
Es la instruccin que nos permite filtrar el resultado de una sentencia SELECT.
Habitualmente no deseamos obtener toda la informacin existente en la tabla, sino que
queremos obtener slo la informacin que nos resulte util es ese momento. La clusula
WHERE filtra los datos antes de ser devueltos por la consulta.
Por ejemplo, para que la consulta devuelva slo los datos del coche con maricula M1525-ZA debemos ejecutar la siguiente sentencia:
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA';
Cuando en una clusula where queremos incluir un tipo texto, debemos incluir
el valor entre comillas simples.
31/10/2014
Adems, podemos utilizar tantas condiciones como queramos, utilizando los operadores
lgicos AND y OR .
Ejemplo : Mostrar una consulta que devolver los coches cuyas matriculas sean M-1525ZA o bien M-2566-AA.
SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA' OR matricula = 'M-2566-AA' ;
Adems una condicin WHERE puede ser negada a travs del operador lgico NOT.
Ejemplo : La siguiente consulta devolver todos los datos de la tabla tCohes menos el
que tenga matricula M-1525-ZA.
SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas
FROM tCoches
WHERE NOT matricula = 'M-1525-ZA' ;
Podemos tambin obtener las diferentes marcas y modelos de coches (no duplicados) :
SELECT DISTINCT marca, modelo FROM tCoches;
CLAUSULA ORDER BY
Especifica el orden en el que sern devueltos los datos a travs de la clusula ORDER BY.
SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas
FROM tCoches
ORDER BY marca ASC,modelo DESC;
La ordenacin depende del tipo de datos que este definido en la columna, de forma que un
campo numrico ser ordenado como tal, y un alfanmerico se ordenar de la A a la Z,
aunque su contenido sea numrico. De esta forma el valor 100 se devuelve antes que el 11.
Tambin podemos especificar el en la clusula ORDER BY el ndice nmerico del campo
dentro del la sentencia SELECT para la ordenacin, el siguiente ejemplo ordenara los datos
por el campo marca, ya que aparece en segundo lugar dentro de la lista de campos que
componen la SELECT.
SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas
FROM tCoches
ORDER BY 2;
31/10/2014
Ejemplos:
INSERT INTO tCoches
(matricula, marca , modelo , color , numero_kilometros)
values
('M1111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE', 78000);
31/10/2014
Borrado de datos.
Para borrar datos de una tabla, debemos utilizar la sentencia DELETE.
La sintaxis de la sentencia DELETE es la siguiente:
DELETE FROM <nombre_tabla>
[ WHERE <condicion>];
Ejemplo :
DELETE
FROM tCoches
31/10/2014
La sentencia TRUNCATE
Para realizar un borrado completo de tabla debemos considerar la posibilidad de
utilizar la sentencia TRUNCATE, mucho ms rpida que DELETE.
La sintaxis de la sentencia TRUNCATE es la siguiente:
TRUNCATE TABLE <nombre_tabla>;
Ejemplo :
TRUNCATE TABLE tCoches;
Cuando trabajemos con la sentencia TRUNCATE debemos tener en cuenta las
siguientes consideraciones.
La sentencia TRUNCATE no es transaccional. No se puede deshacer.
La sentencia TRUNCATE no admite clausula WHERE. Borra toda la tabla.
Actualizacin de datos.
La sentencia UPDATE.
Para la actualizacin de datos SQL dispone de la sentencia UPDATE. La
sentencia UPDATE permite la actualizacin de uno o varios registros de una
nica tabla.
La sintaxis de la sentencia UPDATE es la siguiente :
UPDATE <nombre_tabla> SET <campo1> = <valor1>
{[,<campo2> = <valor2>,...,<campoN> = <valorN>]}
[ WHERE <condicion>];
Ejemplos
UPDATE tCoches SET marca = '1 WHERE marca = 'FORD';
UPDATE tCoches SET marca = '2 WHERE marca = 'RENAULT';
UPDATE tCoches SET marca = '3 WHERE marca = 'SEAT';
31/10/2014
31/10/2014
Consultas agregadas
La clusula GROUP BY
La clausula GROUP BY combina los registros con valores idnticos en un nico
registro.
Para cada registro se puede crear un valor agregado si se incluye una funcin SQL
agregada, como por ejemplo Sum o Count, en la instruccin SELECT.
Su sintaxis es:
SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
[{,<funcion_agregado>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
31/10/2014
La clusula HAVING
Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro
agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING.
Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la
clusula HAVING para filtrar los registros una vez agrupados.
HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los
registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se
van a mostrar. HAVING permite el uso de funciones agregadas.
AVG
Calcula la media aritmtica de un conjunto de valores contenidos en un
campo especificado de una consulta.
Su sintaxis es la siguiente :
AVG(<expr>)
En donde expr representa el campo que contiene los datos numricos para los que
se desea calcular la media o una expresin que realiza un clculo utilizando los
datos de dicho campo.
La media calculada por Avg es la media aritmtica (la suma de los valores dividido
por el nmero de valores).
La funcin Avg no incluye ningn campo Null en el clculo.
SELECT marca, modelo, AVG(numero_kilometros)
FROM tCoches
GROUP BY marca, modelo
31/10/2014
Count
Calcula el nmero de registros devueltos por una consulta.
Su sintaxis es la siguiente :
COUNT(<expr>)
En donde expr contiene el nombre del campo que desea contar. Los operandos de
expr pueden incluir el nombre de un campo de una tabla, una constante o una
funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las
funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto.
Aunque expr puede realizar un clculo sobre un campo, Count simplemente
cuenta el nmero de registros sin tener en cuenta qu valores se almacenan en los
registros.
La funcin Count no cuenta los registros que tienen campos null a menos que expr
sea el carcter comodn asterisco (*).
Si utiliza un asterisco, Count calcula el nmero total de registros, incluyendo
aquellos que contienen campos null. Count(*) es considerablemente ms rpida
que Count(Campo).
Ejemplo:
SELECT COUNT(*) FROM tCoches;SELECT marca, COUNT(modelo)
FROM tCoches
GROUP BY marca;SELECT marca, COUNT(DISTINCT modelo)
FROM tCoches
GROUP BY marca;
Max, Min
Devuelven el mnimo o el mximo de un conjunto de valores contenidos en un
campo especifico de una consulta. Su sintaxis es:
MIN(<expr>)
MAX(<expr>)
Donde expr es el campo sobre el que se desea realizar el clculo. Expr pueden incluir
el nombre de un campo de una tabla, una constante o una funcin.
SELECT marca, modelo, MIN(numero_kilometros) , MAX(numero_kilometros)
FROM tCoches
GROUP BY marca, modelo
10
31/10/2014
Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico
de una consulta. Su sintaxis es:
SUM(<expr>)
Donde expr respresenta el nombre del campo que contiene los datos que
desean sumarse o una expresin que realiza un clculo utilizando los datos de
dichos campos.
Los operandos de expr pueden incluir el nombre de un campo de una tabla, una
constante o una funcin
SELECT marca, modelo, SUM(numero_kilometros)
FROM tCoches
GROUP BY marca, modelo
11