Sei sulla pagina 1di 31

SQL

Structure Query language


Lenguaje de consulta
Estructurada
 Se utiliza en diferentes gestores de base de datos.
 Para bases de datos relacionales.
 Desde leguajes de programación.
 Desde otras aplicaciones .
N U M E R I C O S
TIPO FECHA
TIPO CADENA
2.- Lenguaje de
1.- Lenguaje de Manipulación de Datos 3.- Lenguaje de control
definición de datos (DML) de datos (DCL).
(DDL).
sentencias • Compuesto • Compuesto
creación por sentencias que sentencias
por SQL para
modificación
(CREATE), (ALTER) y sirven para : controlar las funciones
borrado (DROP) de los • consultar (SELECT) de administración :
componentes • insertar (INSERT) • Confirmar la operación
principales de base de (COMMIT)
datos: • modificar (UPDATE)
• Retroceder la
(DATABASE) • borrar (DELETE)
operación (ROLLBACK)
• tablas (TABLE) • Dar permisos (GRANT)
• vistas (VIEW – tablas • Quitar
virtuales resultados de permisos (REVOKE)
consultas)
• índices (INDEX) -
BUSQUEDAS
• procedimientos
almacenados – Consultas
con parámetros
(PROCEDURE)
• disparadores (TRIGGER)
- insercciones
Un sistema de base de datos suele contener varias bases
de datos.

Cada base de datos suele contener varias tablas.

Las tablas almacenan los datos organizados por filas.

Cada fila contiene varios campos.

Cada campo tiene propiedades: El nombre del campo,


su longitud, tipo de dato que se va a almacenar, etc.
CREATE DATATABASE
mibasedeatos;
Algunos sistemas de bases de datos
necesitan un punto y coma después de
cada sentencia SQL para ejecutarse
correctamente

Este punto y coma también puede servir


para separar una sentencia SQL de otra
sentencia SQL en la misma línea.

Las sentencias SQL no son sensibles a


mayúsculas y minúsculas, es decir, 'SELECT'
y 'select' son dos palabras iguales para SQL.
Se pueden agrupar por funcionalidades
Es una de las sentencias SQL más importantes, ya que
permite realizar consultas sobre los datos almacenados
en la base de datos.
SELECT * FROM nombretabla

SELECT columna1, columna2 FROM nombretabla


DATOS ALMACENADOS EN LA TABLA “PERSONAS”
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Consultar todos los nombres


Consultar todos los datos y primer apellido de todas
las personas

SELECT nombre, apellido1 FROM


SELECT * FROM personas
personas

Resultado Resultado

nombre apellido1 apellido2 nombre apellido1


ANTONIO PEREZ GOMEZ ANTONIO PEREZ
ANTONIO GARCIA BENITO ANTONIO GARCIA
LUIS LOPEZ PEREZ LUIS LOPEZ
En una consulta pueden
existir valores repetidos
para algunas columnas. SELECT DISTINCT nombre
Por ejemplo: FROM personas
SELECT nombre FROM
personas Si no quiere que se
repitan, entonces
utilizar
nombre DISTINCT. nombre
ANTONIO LUIS
LUIS ANTONIO
ANTONIO
La cláusula WHERE se utiliza para hacer filtros en las
consultas, es decir, seleccionar solamente algunas
filas de la tabla que cumplan una determinada
condición.

Por ejemplo:
Seleccionar las personas cuyo nombre sea ANTONIO

SELECT * FROM personas


WHERE nombre = 'ANTONIO'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.

AND OR
Mostrará los Mostrará
los resultados cuando se resultados cuando se
cumplan las 2 cumpla alguna
condiciones. de las 2
condiciones.

Condición1 AND Condicion1 OR


condición2 condicion2
TABLA PERSONAS
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

AND OR
SELECT * FROM personas WHERE nombre SELECT * FROM personas WHERE nombre
= 'ANTONIO' AND apellido1 = 'GARCIA' = 'ANTONIO' OR apellido1 = 'GARCIA'
nombre apellido1 apellido2 nombre apellido1 apellido2
ANTONIO GARCIA BENITO ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO

También se pueden combinar AND y OR, como el siguiente ejemplo:


SELECT * FROM personas WHERE nombre = 'ANTONIO‘ AND (apellido1 =
'GARCIA' OR apellido2 = 'LOPEZ)

nombre apellido1 apellido2


ANTONIO GARCIA BENITO
Se utiliza para ordenar los resultados de una consulta, según el valor
de la columna especificada.

Por defecto, se ordena de forma ascendente (ASC) según los valores de


la columna.

Si se quiere ordenar por orden descendente se utiliza la palabra DES.


SELECT nombre_columna(s) FROM nombre_tabla ORDER BY
nombre_columna(s) ASC|DESC
TABLA PERSONAS
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

ASCENDENTE DESCENDENTE

SELECT nombre, apellido1FROM SELECT nombre, apellido1 FROM


personas ORDER BY apellido1 ASC personas ORDER BY apellido1 DESC

nombre apellido1 nombre apellido1


LUIS LOPEZ ANTONIO PEREZ
ANTONIO GARCIA ANTONIO GARCIA
ANTONIO PEREZ LUIS LOPEZ
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.
Es posible insertar una nueva fila en una tabla de dos formas distintas:

1. INSERT INTO nombre_tabla VALUES (valor1, valor2, valor3, .)


2. INSERT INTO nombre_tabla (columna1, columna2, columna3,.)
VALUES (valor1, valor2, valor3, .)
Para insertar una nueva fila en la tabla personas:
INSERT INTO personas VALUES ('PEDRO', 'RUIZ', 'GONZALEZ') ó utilizando,
INSERT INTO personas (nombre, apellido1, apellido2) VALUES ('PEDRO',
'RUIZ', 'GONZALEZ')
Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en
la tabla personas, quedando así dicha tabla:
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ
Se utiliza para modificar valores en una tabla.

La sintaxis de SQL UPDATE es:UPDATE nombre_tabla SET


columna1 = valor1, columna2 = valor2 WHERE columna3
= valor3

La cláusula SET establece los nuevos valores para las columnas


indicadas.

La cláusula WHERE sirve para seleccionar las filas que queremos


modificar. ¡IMPORTANTE! Si omitimos la cláusula WHERE, por
defecto, modificará los valores en todas las filas de la tabla.
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:


UPDATE personas SET apellido2 = 'RODRIGUEZ‘ WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA‘ AND apellido2 = 'BENITO'

Y así obtendremos

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Sirve para borrar filas de una tabla.

La sintaxis de SQL DELETE es: DELETE FROM


nombre_tabla WHERE nombre_columna = valor

Si queremos borrar todos los registros o filas de


una tabla, se utiliza la sentencia: DELETE *
FROM nombre_tabla;
Si queremos borrar a la persona LUIS LOPEZ PEREZ de la tabla inicial

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

Podemos ejecutar el comando:


DELETE FROM personas
WHERE nombre = 'LUIS‘ AND apellido1 = 'LOPEZ‘ AND apellido2 = 'PEREZ'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
EJEMPLOS DE QUERY
Devolver un subconjunto de los registros de una tabla (WHERE)

SELECT numero, calle


FROM DIRECCION
WHERE ciudad = ‘Sevilla’

Esta consulta devolvería el número y la dirección de todas las


direcciones pertenecientes a la ciudad de Sevilla. Como vemos,
con WHERE indicamos la condición que deben cumplir los registros
de la tabla para ser devueltos en la consulta. En este caso tenemos
una condición simple dada por la comparación de igualdad (=)
entre al campo (ciudad) y un literal de tipo cadena, entre comillas
simples (‘Sevilla’).
EJEMPLOS DE QUERY
UTILIZANDO OPERADORES RELACIONALES

SELECT nombre FROM CLIENTES WHERE edad <= 32

UTILIZANDO OPERADORES DE PREDICADO

BETWEEN: para indicar un intervalo de valores.

SELECT nombre
FROM CLIENTES
WHERE edad BETWEEN 20 AND 35

LIKE: empleado para comparar patrones de texto pudiendo incluir


comodines como los siguientes:
EJEMPLOS DE QUERY
SELECT num, calle, cp
FROM DIRECCION
WHERE ciudad LIKE ‘Val%’

Esta consulta devolvería los datos de las direcciones de toda


ciudad que comience por Val y siga por cualquier número de
caracteres, incluyendo cero caracteres. Por ejemplo, Valladolid o
Valencia.

COMBINANDO OPERADORES

SELECT * FROM DIRECCION


WHERE ciudad = ‘Sevilla’ AND cp = 41009 OR ciudad = ‘Córdoba’
AND NOT cp = 14010

Devuelve los registros pertenecientes a direcciones que tengan el


código postal 41009 de Sevilla o bien que no tengan el 14010 de
Córdoba. La mayor precedencia la adopta el operador NOT sobre la
condición cp = 14010
EJEMPLOS DE QUERY
Ordenar según criterios (ORDER BY)

SELECT * FROM CIUDAD


ORDER BY provincia ASC, numhabitantes DESC

Consultas agrupadas (GROUP BY)

SELECT idPedido, COUNT(*) /* CONTAR REGISTROS */


FROM LINEAPEDIDO
GROUP BY idPedido

SELECT idPedido, AVG(precioLinea) /* CALCULO MEDIA */


FROM LINEAPEDIDO
GROUP BY idPedido

SELECT idPedido, ROUND(AVG(precioLinea),4) /* REDONDEO A 4


DECIMALES*/
FROM LINEAPEDIDO
GROUP BY idPedido

Potrebbero piacerti anche