Descarga la aplicación para disfrutar aún más
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
Compartir