SQL-Bsico
Fuente Database System Concepts,Silberschatz, Korth, Sudarshan
Forma bsica consulta
Forma de una consulta tpica SQL select A1, A2, ..., An from r1, r2, ..., rm where P
Ai denota un atributo Ri denota una relacin P es un predicado
A1 , A2 ,K, An ( P (r1 r2 K rm ))
Estrutura bsica de Consulta
Consulta equivalente a la expresin algebrica
SELECT
A1,A2 ,K,An ( P (r1 r2 K rm ))
WHERE
FROM
Resultado de una consulta SQL es una relacin
Estrutura bsica de Consulta
SELECT [ DISTINCT | ALL]{*| column_expression [AS new_name]] []} FROM table_name [alias] [.] [WHERE condition] [GROUP BY column_list] [HAVING condition] [ORDER BY column_list]
{ }:elementos requeridos, | opciones entre alternativas, [ ] elemento opcional, maysculas:palabra reservadas, minsculas:palabras definidas por el usuario
Clusula SELECT
Especifica las columnas o atributos que se desean como resultado de la consulta
Operador de Proyeccin del Algebra relacional
Encontrar la cdula y el nombre de los profesores en la relacin Profesores select cod_p, nombre from profesor Expresin algebrica cod-p, nombre (profesor)
Clusula SELECT
Observacin En SQL se puede usar indistintamente letras maysculas o minsculas para un nombre. SQL no tiene en cuenta esta diferencia
COD_P Cod_p cod_p
Clusula SELECT
SQL permite duplicados en relaciones y en los resultados de las consultas Para eliminar duplicados, insertar la palabra clave distinct despues de SELECT Encontrar los nombres de todos los profesores en relacin profesor y remover duplicados select distinct nombre from profesor
Clusula SELECT
La palabra clave all especifica no eliminacin de duplicados select all nombre from profesor
Clusula SELECT
Un asterisco * en la clusula select significa Todos los atributos select * from profesor La clusula select puede contener expresiones aritmticas (operaciones +, , , /) y operaciones sobre constantes o atributos de tuplas
Clusula SELECT
ASIGNATURAS Id_Asignatura 750033M 750087M 750083M 750076 Nombre BD TALLER BD MDI FBD Tipo Pregrado Pregrado Pregrado Postgrado creditos 4 2 4 5
select id_asignatura, nombre, creditos 16 from asignaturas devuelve una relacin igual a ASIGNATURAS excepto que el valor del atributo creditos est multiplicado por 16
Clusula WHERE
La clusula where condiciones o filtros para las filas que se deben satisfacer Equivale al predicado de la seleccin del lgebra relacional Resultados de expresiones aritmticas se pueden comparar Se pueden tambin combinar con conectivos lgicos and, or, not
Clusula WHERE
Encontrar todas las asignaturas de pregrado con ms de dos crditos select id_asignatura, nombre from asignaturas where tipo =pregrado and creditos > 2
Clusula WHERE
SQL ofrece un operador de comparacin between Encontrar las asignaturas con creditos entre 3 y 5 ( 3 y 5) select id_asignatura, nombre from asignaturas where creditos between 3 and 5
Clusula FROM
La clusula from especifica las tablas o relaciones a usar en la consulta
Equivale a la operacin producto Cartesiano del lgebra relacional Calcule producto Cartesiano profesor X categoria select from profesor, categoria
Ejemplos Ejemplo
CATEGORIAS
PROFESOR
FACULTADES
Clusula FROM
Encontrar cdigo y nombre de todos los profesores de la facultad de Ingeniera
select cod_p, [Link] from profesor, facultades where [Link]=facultades.cod_fac and nombre = 'Ingenieria'
Renombramiento
SQL permite renombrar relaciones y atributos usando la clusula as nombre-anterior as nombre-nuevo Encontrar el nombre y facultad de todos los profesores(renombrar la columna nombre como nombre_profesor )
select [Link] as nombre_profesor, [Link] from profesor, facultades where [Link] = facultades.cod_fac
Variables de tupla
Las variables de tupla se definen en la clusula from usando la clusula as
Operaciones con strings
SQL incluye un operador para compara cadenas de caracteres. El operador like usa patrones que se describen mediante dos caracteres especiales:
porcentaje (%): % iguala cualquier substring Guin bajo (_): iguala cualquier caracter
Operaciones con strings
Encontrar los nombres de todos los profesores cuyo nombre incluya el apellido Perez.
select nombre from profesor where nombre like '% Perez%'
SQL ofrece operaciones sobre cadenas
concatenacin (||) convertir maysculas en minsculas (y viceversa) encontrar longitud de cadenas, extraer subcadena
Ordenando visualizacin de tuplas
Listar en orden alfabtico los nombres de todos los profesores de la facultad de Ciencias select distinct [Link] from profesor, facultades where [Link] = facultades.cod_fac and [Link] = 'Ingenieria' order by [Link]
Ordenando visualizacin de tuplas
Se puede especificar desc para orden descendente o asc para orden ascendente para cada atributo Por omisin se asume asc
Ejemplo: order by [Link] desc