Logo Studenta

SQL DDL DML Consultas Simples y Multitablas

¡Este material tiene más páginas!

Vista previa del material en texto

Clase 4: SQL – DDL – DML –
Consultas Simples y 
Multitablas
BASE DE DATOS
FAC.DE INGENIERIA – UNJu
2.019
SQL (Structured query language) 
Es 1leng.de consulta estructurado, surgido de un proyecto de investig.de IBM 
p/el acceso a BD relac.. Actualmente se ha convertido en un estándar de 
leng.de BD, y la mayoría de los sist.de BD lo soportan, desde sist.p/comput. 
personales, hasta grandes comput. 
Clasificación
Data Description Language: 
incluye órdenes p/definir, 
modificar o borrar las tablas 
en las q se almacenan los 
datos y de las relac.entre
estas. CREATE, DROP. 
DDL
DCL
Data Control Language: contiene elementos 
útiles p/trabajar en un entorno multiusuario, 
en el q es importante la protección de los 
datos, la seguridad de las tablas y el 
establecimiento de restricciones en el 
acceso (us.concurrentes). GRANT, REVOKE 
DML
Data Manipulation Language: permite 
recuperar datos almacenados en la BD 
e incluye órdenes p/permitir al us. 
actualizar la BD añadiendo nuevos 
datos, suprimiendo datos antiguos o 
modificando datos previamente 
almacenados. SELECT, INSERT, UPDATE, 
DELETE 
TCL
Leng.de Control de Transacciones, q 
es considerado como 1leng.de 
programac.y 1subconj.de SQL q se 
utiliza p/controlar el procesamiento 
de transacciones en 1BD. Una 
transacción es 1unidad lógica de 
trabajo que comprende 1o+ 
sent.SQL, x lo general un grupo de 
DML. COMMIT, SAVEPOINT, 
ROLLBACK, SET TRANSACTION 
CREATE 
DATABASE 
Ej.en PostgreSQL
CREATE 
DATABASE name
[ [ WITH ] [ OWNER [=] 
user_name ]
[ TEMPLATE [=] 
template ]
[ ENCODING [=] 
encoding ]
[ LC_COLLATE [=] 
lc_collate ]
[ LC_CTYPE [=] 
lc_ctype ]
[ TABLESPACE [=] 
tablespace ]
[ CONNECTION 
LIMIT [=] connlimit ] ]
DDL
CREATE TABLE 
Crea la estructura de 1tabla, 
definiendo las columnas y las restricc. 
q deben cumplir esas columnas
La restricción es 1característica adicional q 
tiene1columna o1combinación de columnas
X ej.: CREATE TABLE tab1 ( col1 INTEGER 
CONSTRAINT pk PRIMARY KEY, col2 CHAR(25) NOT 
NULL, col3 CHAR(10) CONSTRAINT uni1 UNIQUE, 
col4 INTEGER, col5 INT CONSTRAINT fk5 
REFERENCES tab2 ); 
DROP TABLE
DROP INDEX
CREATE INDEX
Permite crear 1índice sobre 
1óvarias columnas de1tabla.
ALTER TABLE
Modifica la estruct.d 1tabla q ya existe. S 
puede añadir columnas nuevas, eliminar 
columnas. Hay q tener en cuenta q 
cuando s elimina1columna s pierden 
todos los datos almacenados en ella. 
También permite crear nuevas 
restricciones o borrar algunas existentes. 
DML
INSERT INTO
Permite la inserción de nuevos datos en 1tabla se realiza añadiendo 
filas enteras a la tabla
Sintaxis:
INSERT INTO nombre_tabla [(nombreatributo1, nombreatributo2, …)] 
VALUES (valoratributo1, valoratributo2, …)
Por ejemplo:
a ) INSERT INTO empleados VALUES (200, ‘Juan López’, 30, NULL, ‘rep
ventas’, CTOD(‘06/23/01’), NULL, 350000, 0) 
b) INSERT INTO empleados (numemp, oficina, nombre, titulo, cuota, 
contrato, ventas) VALUES (200, ‘Juan López’, 30, NULL, ‘rep ventas’, 
CTOD(‘06/23/01’), NULL, 350000, 0) 
DML
UPDATE
Modifica los valores de 1 o + columnas en las filas seleccionadas d 1 o varias 
tablas. Sintaxis:
El origen puede ser 1nombre d tabla, 1nombre d consulta o 1composición d tablas, 
también puede incluir la cláusula IN si la tabla a modificar se encuentra en una BD 
externa. 
SET especifica q columnas van a modificarse y q valores asignar a esas columnas. 
nbcolumna indica el nombre d la columna a la cual queremos asignar1nuevo valor
Where establece la condición q s debe cumplir p/realizar la actualización
Por ejemplo:
a ) UPDATE oficinas SET cuota=ventas*0.90; 
b) UPDATE empleados SET ventas = 0 WHERE oficina = 12
DML
DELETE
Elimina los valores de una tabla o de un conjunto de filas 
seleccionadas d 1 tabla (según lo definido por la clausula WHERE).
Sintaxis
DELETE FROM nombre_tabla [WHERE condición]
Por ejemplo:
a ) DELETE * FROM pedidos; 
b) DELETE * FROM pedidos WHERE clie=101; 
DMLSELECT
Muestra o recupera informac.sobre los datos almacenados en la BD.
Dicha informac.puede pertenecer a 1o varias tablas x lo q las 
consultas pueden ser SIMPLES o MULTITABLAS.
El result.d 1consulta SELECT nos devuelve 1tabla lógica. Es decir, los 
resultados son 1relación de datos, q tiene filas/registros, con 1serie d 
campos/columnas. Igual q cualquier tabla d la BD. Sin embargo esta 
tabla está en memoria mientras la utilicemos, y luego se descarta. 
C/vez que ejecutamos la consulta se vuelve a calcular el resultado. 
Sintaxis
SELECT [ ALL / DISTINCT ] [ * ] / [ListaAtributos_Expresiones] AS [Expresion]
FROM OrigenDatos
[WHERE Condiciones]
[GROUP BY ColumnasAgrupamiento]
[HAVING Condiciones]
[ORDER BY ListaColumnas [ ASC / DESC ]]
DML
SELECT (Continuación)
ALL es el valor predeterminado, especifica q el conj. de resultados 
puede incluir filas duplicadas. Nunca s utiliza.
DISTINCT especifica q el conj.d resultados sólo puede incluir filas únicas. 
Es decir, si al realizar1consulta hay registros exactamente iguales q 
aparecen + d 1vez, éstos se eliminan.
ListaAtributos especifica 1lista de nombres d campos d la tabla q 
interesan y q por tanto s quieren devolver. S separan mediante comas.
Se puede anteponer el nombre d la tabla al nombre d las columnas, 
utilizando el formato Tabla.Columna. Además d nombres de columnas, 
en esta lista se pueden poner constantes, expresiones aritméticas, y 
funciones, p/obtener campos calculados de manera dinámica.
Si queremos q nos devuelva todos los campos d la tabla se usa el 
comodín “*” (asterisco).
DML
SELECT (Continuación)
Los nombres indicados deben coincidir exactamente con los nombres d 
los campos de la tabla, pero si s quiere q en la tabla lógica d resultados 
tengan 1nombre diferente s puede utilizar un alias, x ej. AS q permite 
renombrar columnas si s usa en la cláusula SELECT, o renombrar tablas si 
lo utilizamos en la cláusula FROM. El alias es opcional.
FROM permite indicar las tablas o vistas de las cuales vamos a obtener la 
información.
WHERE especifica la condición de filtro de las filas devueltas. Se utiliza 
cuando no se desea que se devuelvan todas las filas de una tabla, sino 
sólo las que cumplen ciertas condiciones.
Las CONDICIONES son expresiones lógicas p/la condición d filtro, q tras 
su resolución devuelven p/c/fila TRUE o FALSE, en fción d q s cumplan o 
no. S puede utilizar cualquier expresión lógica y en ella usar diversos 
operadores como: 
DMLSELECT (Continuación) 
> (Mayor), >= (Mayor o igual), < (Menor), <= (Menor o igual), = 
(Igual), <> o != (Distinto) o IS [NOT] NULL. Se dice q 1columna d 1fila es 
NULL si está completamente vacía. Hay q tener en cuenta q si se ha 
introducido cualquier dato, incluso en 1campo alfanumérico si se 
introduce una cadena en blanco o un cero en un campo numérico, deja 
de ser NULL.
LIKE: p/la comparación de un modelo. P/ello usa los caracteres comodín 
especiales: “%” y “_”. Con el 1ro.s indica q en su lugar puede ir cualquier 
cadena de caracteres, y con el 2do.q puede ir cualquier carácter 
individual (1solo carácter). Con la combinación d estos caracteres s 
pueden múltiples patrones de búsqueda. X ej.: el nombre empieza con 
A: Nombre LIKE ‘A%’, el nombre acaba con A: Nombre LIKE ‘%A’, el 
nombre contiene la letra A: Nombre LIKE ‘%A%’, el nombre empieza con 
A y después contiene 1solo carácter cualquiera: Nombre LIKE ‘A_’, el 
nombre empieza con 1 A, después cualquier carácter, luego una E y al 
final cualquier cadena de caracteres: Nombre LIKE ‘A_E%’
DML
SELECT (Continuación) 
BETWEEN: para un intervalo de valores. X ej.Clientes entre 30 y 100; CodCliente
BETWEEN 30 AND 100; Clientes nacidos entre 1970 y 1979: FechaNac BETWEEN 
‘19700101’ AND ‘19791231’
IN() p/especificar 1 conj. o 1 relación d valores concretos. X ej.: Ventas d los 
Clientes 10, 15, 30 y 75: CodCliente IN(10, 15, 30, 75). Es posible combinar varias 
condiciones simples d los operadores anterioresusando los operadores lógicos 
OR, AND y NOT, así como el uso de paréntesis p/controlar la prioridad d los 
operadores X ej.: … (Cliente = 100 AND Provincia = 30) OR Ventas > 1000 … q 
sería p/los clientes d las prov.100 y 30 o cualquier cliente cuyas ventas superen 
1000.).
ORDER BY define el orden de las filas del conjunto de resultados. Se especifica el 
campo o campos (separados por comas) por los cuales queremos ordenar los 
resultados. ASC / DESC: ASC es el valor predeterminado, especifica q la columna 
indicada en la cláusula ORDER BY se ordena de forma ascendente, o sea, de 
menor a mayor. Si x el contrario se especifica DESC se ordenará de forma 
descendente (de mayor a menor).
DML
SELECT: Consultas Simples 
Analice los siguientes ejemplos
SELECT * FROM Alumnos
SELECT CodFab, Codprod, descrip, (cantidad * precio) AS valoracion FROM productos WHERE 
codfab=154 
SELECT nombre, oficina, contrato FROM empleados ORDER BY oficina ASC 
SELECT * FROM Customers WHERE Region IS NULL
SELECT DISTINCT Region FROM Customers WHERE Region IS NOT NULL
SELECT E.LastName AS Apellido, City AS Ciudad, Region FROM Employees AS E WHERE Country = 
‘USA’
SELECT numemp, nombre, oficina FROM empleados WHERE oficina IN (12,14,16) 
SELECT numemp, nombre FROM empleados WHERE nombre LIKE '*Pérez Juan*' 
SELECT * FROM Customers WHERE Region IN(‘CA’, ‘MT’, ‘WA’) ORDER BY Region, CompanyName
DESC
SELECT * FROM Customers WHERE CompanyName LIKE ‘W%’
SELECT * FROM Employees WHERE EmployeeID BETWEEN 2 AND 9
DML-SELECT: 
Consultas Multitablas
Son consultas q están basadas en +de 1tabla de la BD al mismo tiempo. 
Existen varias formas de hacerlo:
Producto Cartesiano
Crea combinaciones q permiten mostrar columnas de diferentes tablas 
como si fuese una sola tabla, no se hace coincidir los valores d las 
columnas relacionadas (claves primarias y foráneas) x lo q s obtiene 
duplicidad d filas al relacionar todas las filas de las diferentes tablas 
seleccionadas. 
X ej si s tienen 2 tablas, Alumnos con 3 registros 
y Sanción con 4 registros, si se ejecuta la siguiente 
sentencia:
SELECT * FROM Alumnos, Sancion
Se obtendrá como resultado 1 tabla con 12 registros 
DML-SELECT: 
Consultas Multitablas
(Continuación) 
Composición de Tablas
La 2da.forma es uniendo las filas de las tablas a través d las columnas 
“de conexión” q s han definido entre las mismas y q deben contener 
los mismos tipos de datos, es decir, mediante la unión de la clave 
foránea y primaria respectiva.
X ej.p/el caso anterior d las tablas Alumnos y Sanción el atrib.q
relaciona dichas tablas es “lu”, x lo tanto la sent.a realizar es:
SELECT * FROM Alumnos, Sancion WHERE Alumnos.lu = Sancion.lu
Pregunta: si en lugar de tener 2 tablas tuviera 2 tablas 
relacionadas con 1 TEA cual sería la sentencia?
Alum
nos
San
ción
DML-SELECT: 
Consultas Multitablas (cont.) 
JOIN: La 3er.forma es a través del operador JOIN o combinación q 
permite mostrar columnas d varias tablas como si se fuese 1sola tabla, 
combinando entre sí los registros relacionados usando p/ello claves 
foráneas. Las tablas relacionadas se especifican en la cláusula FROM, y 
deben coincidir los valores q relacionan las columnas de las tablas. 
Su sintaxis es la siguiente:
SELECT [ ALL / DISTINCT ] [ * ] / [ListaAtributos_Expresiones] AS [Expresion]
FROM NombreTabla1 JOIN NombreTabla2 ON Condiciones_Vinculos_Tablas
X ej.si s quiere relacionar Empleado y Sueldo x legajo
SELECT E.legajo FROM Empleados E JOIN Sueldos S ON E.Legajo = S.Legajo
Otro ej.: SELECT OrdenID, C.ClienteID, NombreEmpresa, FechaOrden FROM 
Clientes C JOIN Ordenes O ON C.ClienteID=O.ClienteID JOIN Empleados E ON 
O.EmpleadosID=E.EmpleadosID WHERE C.Pais=‘España' OR E.EmpleadoID=5
IMPORTANTE: existen variantes de JOIN con LEFT, OUTER, INNER Y CROSS q 
resultan+eficientes con grandes cantidades d registros pero también tienen 
1complejidad mayor

Continuar navegando

Materiales relacionados