Sei sulla pagina 1di 5

ORDENES SQL

DDL : lenguaje de definici�n de datos


CREATE
ALTER
DROP
RENAME
DML: Lenguaje de manipulaci�n de datos
SELECT
INSERT
UPDATE
DELETE
DCL: lenguaje de control de datos
GRAND
REVOKE
TCL: Control de transacciones
COMMIT
ROLLBACK

CARACTER�STICAS DE SQL

lenguaje de alto nivel


lenguaje declarativo
lenguaje orientado a manejar conjuntos de registros
esquemas relacionales
consultas
restricciones de integridad
transacciones
integraci�n (con otros lenguajes)
seguridad

root: root

passwd: root
ENTORNO DE TRABAJO

CONEXI�N CON LA BASE DE DATOS


ACCESO A ESA BASE DE DATOS
ENTORNOS (MYSQL, TERMINALES...)
PROGRAMADORES
UTILES DE ADMINISTRACI�N DEL SISTEMA

SENTENCIA CONSULTA:

SELECT nombre_de_columnas FROM tabla_origen [WHERE condici�n]


[GROUP BY nombre_de_columna_agrupaci�n][HAVING condici�n_group_by]
[ORDER BY nombre_columna]

SELECT*BANCO : ejemplo
AS: renombrar columna, permite la creaci�n de Alias. No afecta a la tabla origen
FROM: es obligatoria, consulta la tabla.

DISTINC: permite obtener registros sin repeticiones


SELECT DISTINCT nombre_columna [[AS] col_renombrada]
[,nombre_columna [AS] col_renombrada]...]
FROM tabla_a_consultar [[AS] tabla_renombrada];
SELECT DISTINCT: misma sintaxis que SELECT lo �nico que no repite registros con el
mismo valor de columna

como seleccionamos columnas:


SELECT DNI AS Identificaci�n, Nombre, Apellidos FROM Clientes;
como seleccionamos fila:
SELECT nombre columna [nombre_columna,...] FROM tabla_a_consultar WHERE condicion;
WHERE: funciona de forma similar a las sentencias de gesti�n de registros. Debemos
poner nua expresi�n l�gica que permita filtrar los registros requeridos.
ejemplo
SELECT DNI AS Identificaci�n, Nombre, Apellidos
FROM Clientes
WHERE FECHA_DE_ALTA>'01/01/2015';

ORDER BY:

SELECT nombre_columna
[,nombre_columna,...]
FROM tabla a consultar
[WHERE condicion]
ORDER BY nombre_columna [ASC] [DESC,
[,... [,nombre_columnaN [ASC] [DESC]
]];

ejemplo:

SELECT DNI AS identificaci�n, Nombre, Apellidos, fecha_de_alta


FROM Clientes
ORDER BY fecha_de_alta DESC, Apellidos;

TIPOS DE OPERADORES

OPERADORES ARITM�TICOS, LOGICOS, COMPARTATIVOS Y...


********************************************************
CONSULTAS MULTITABLA

CONSULTAS AVANZADAS EJEMPLOS:

SELECT descripcion, precio


FROM articulos
WHERE precio < (SELECT AVG (precio)
FROM articulos);

SELECT nombre, apellidos


FROM clientes
WHERE nif NOT IN (SELECT nif
FROM factura
WHERE clientes.nif = facturas.nif);

SELECT nombre, apellidos FROM lcientes


WHERE nombre IN (SELECT nombre FROM directores);

a�adir una fila:


INSERT INTO clientes
SELECT*
FROM clientes_sevilla
WHERE credito > 1000;

CONSULTAS MULTITABLAS

SELECT NSUCURSAL, NOMBRE, DIRECTOR, APELLIDOS


FROM SUCURSALES, DIRECTORES
WHERE SUCURSALES.DIRECTOR = DIRECTORES.ID
AND SUCURSALES.ID = 1001;

Sintaxis habitual:
SELECT columna1, columna2, ... de las tablas indicadas en el FROM
FROM tabla1, tabla2,...
WHERE tabla 1.columna = tabla2.columna;

SELECT NSUCURSAL, NOMBRE, DIRECTOR, APELLIDOS


FROM SUCURSALES JOIN DIRECTORES
ON SUCURSALES.DIRECTOR = DIRECTORES.ID
WHERE SUCURSALES.ID = 1001;
(Esto es de sql 1999 el formate el mejor para usar)

*************************************************************************
TIPOS DE JOIN

Sirven para realizar consultas. Une tablas o las relaciona.

INNER JOIN: devuelve todas las filas de varias tablas donde se cumple la condicion
de uni�n que hallamos indicado.

SELECT columns
FROM table 1
INNER JOIN table 2
On table1.column = table2.column

ejemplo
SELECT directores.nombre, directores.apellidos,
sucursales.nombre as NOMBRE_SUCURSAL
FROM directores INNER JOIN sucursales
ON directores.id = sucursales.director;

sintaxis sql 1992: SELECT directores.nombre, directores.apellidos,


sucursales.nombre as NOMBRE_sucursal FROM directores, sucursales
WHERE directores.id = sucursales.director;

relacionar m�s de dos datos (indicar todas las relaciones existentes y lso campos
que las relacionan)

/*Indicar el nombre y apellidos del director de la sucursal del cliente


con DNI = 78458784b. Tambi�n se pide mostrar el nombre de la sucursal
y el nombre y apellidos del cliente*/

SELECT directores.nombre, directores.apellidos, sucursales.nombre,


clientes.apellidos FROM directores
JOIN sucursales
ON directores.id = sucursales.director
JOIN clientes
ON sucursales.nsucursal=clientes.nsucursal
WHERE clientes.dni ='87458784B'

LEFT outer JOIN: Devuelve todas las filas de la tabla izquierda especificada
en la condicion On y solo aquellas filas de la otra tabla en que los campos
especificados son iguales

sintaxis

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column

SELECT directores.nombre, directores.apellidos


sucursales.nombre as NOMBRE_SUCURSAL
FROM directores LEFT JOIN sucursales
ON directores.id=sucursales.director;

RIGHT [OUTER] JOIN: lo mimso que LEFT pero a la derecha

SELECT columns
FROM table1
RIGHT[OUTER] JOIN table2
ON table1.column = table2.column

SELECT directores.nombre, directores.apellidos


sucursales.nombre as NOMBRE_SUCURSAL
FROM directores RIHT JOIN sucursales
ON directores.id=sucursales.director;

FULL OUTER JOIN: devuelve todas las filas tanto de la tabla izquierda y derecha
con registros nulos donde no se cumple la sintaxis de union

SELECT columns
FROM table1
FULL[OUTER] JOIN table2
ON table1.column = table2.column

SELECT sucursales.nombre as NOMBRE_SUCURSAL,


directores.nombre, directores.apellidos
FROM sucursales FULL OUTER JOIN directores
ON sucursales.director=directores.id;

en mysql NO EXISTE el FULL OUTER JOIN as� que debes usar y unir el RIGHT Y
EL LEFT OUTER JOIN as� que har�amos esto:

1. HACEMOS DOS CONSULTAS INDEPENDIENTES MEDIANTE SELECCION Y EJECUCION


DE LO QUE QUEREMOS (SELECCIONANDO CON EL RATON) UNA Y LUEGO LA OTRA
LUEGO CORREMOS EL PROGRAMA CON UNION. LA SINTAXIS COMPLETA ES AS�

SELECT
SELECT directores.nombre, directores.apellidos
sucursales.nombre as NOMBRE_SUCURSAL
FROM directores RIGHT JOIN sucursales
ON directores.id=sucursales.director;
UNION
SELECT directores.nombre, directores.apellidos
sucursales.nombre as NOMBRE_SUCURSAL
FROM directores LEFT JOIN sucursales
ON directores.id=sucursales.director;

Potrebbero piacerti anche