M2 - Bases de dades / Continguts UF2: Ampliacio SQL
Contingut
Subconsultes amb més d'una columna
Si es necessita comprovar dues columnes en una consulta IN:
SELECT nombre FROM empleados WHERE (cod1,cod2) IN (SELECT cod1,cod2 FROM directivos);
Consultes avançades
Consultes amb ROWNUM
La función ROWNUM devuelve el número de la fila de una consulta. Por ejemplo en:
SELECT ROWNUM, edad, nombre FROM clientes;
Aparece el número de cada fila en la posición de la tabla. Esa función actualiza sus valores usando subconsultas de modo que la consulta:
SELECT ROWNUM AS ranking, edad, nombre FROM (SELECT edad, nombre FROM clientes ORDER BY edad DESC);
Puesto que la consulta SELECT edad, nombre FROM clientes ORDER BY edad DESC, obtiene una lista de los clientes ordenada por edad, el SELECT superior obtendrá esa lista pero mostrando el orden de las filas en esa consulta. Eso permite hacer consultas el tipo top-n, (los n más....).
Por ejemplo para sacar el top-10 de la edad de los clientes (los 10 clientes más mayores):
SELECT ROWNUM AS ranking, edad, nombre FROM (SELECT edad, nombre FROM clientes ORDER BY edad DESC) WHERE ROWNUM<=10;
Consultes Jeràrquiques
Consultes d'agrupació avançada
Apunts sgbd.pdf
Alter table
Sirve para cambiar la definición de una tabla. Podemos cambiar tanto columnas como restricciones (ver CONSTRAINTS).
La sintaxis es:
ALTER TABLE [esquema.]tabla {ADD|MODIFY|DROP}...
Añadir una columna a una tabla:
ALTER TABLE T_PEDIDOS ADD TEXTOPEDIDO Varchar2(35);
Cambiar el tamaño de una columna en una tabla:
ALTER TABLE T_PEDIDOS MODIFY TEXTOPEDIDO Varchar2(135);
Hacer NOT NULL una columna en una tabla:
ALTER TABLE T_PEDIDOS MODIFY (TEXTOPEDIDO NOT NULL);
Eliminar una columna a una tabla:
ALTER TABLE T_PEDIDOS DROP COLUMN TEXTOPEDIDO;
Valor por defecto de una columna:
ALTER TABLE T_PEDIDOS MODIFY TEXTOPEDIDO Varchar2(135) DEFAULT 'ABC...';
Añade dos columnas:
ALTER TABLE T_PEDIDOS ADD (SO_PEDIDOS_ID INT, TEXTOPEDIDO Varchar2(135));