SQL
Álgebra relacional
Buscar..
Visión general
El álgebra relacional no es un lenguaje SQL completo, sino una forma de obtener una comprensión teórica del procesamiento relacional. Como tal, no debería hacer referencias a entidades físicas como tablas, registros y campos; debe hacer referencias a construcciones abstractas tales como relaciones, tuplas y atributos. Dicho esto, no usaré los términos académicos en este documento y me atendré a los términos legos más conocidos: tablas, registros y campos.
Un par de reglas de álgebra relacional antes de comenzar:
- Los operadores utilizados en el álgebra relacional trabajan en tablas enteras en lugar de registros individuales.
- El resultado de una expresión relacional siempre será una tabla (esto se denomina propiedad de cierre )
A lo largo de este documento me referiré a las siguientes dos tablas:
SELECCIONAR
El operador de selección devuelve un subconjunto de la tabla principal.
seleccione <tabla> donde <condición>
Por ejemplo, examine la expresión:
seleccione People donde DepartmentID = 2
Esto resultará en una tabla cuyos registros comprenden todos los registros en la tabla de Personas donde el valor de ID de Departamento es igual a 2:
Las condiciones también se pueden unir para restringir aún más la expresión:
seleccione People donde StartYear> 2005 y DepartmentID = 2
resultará en la siguiente tabla:
PROYECTO
El operador del proyecto devolverá valores de campo distintos de una tabla.
proyecto <tabla> sobre <lista de campos>
Por ejemplo, examine la siguiente expresión:
proyecto People over StartYear
Esto dará como resultado una tabla que comprende los valores distintos mantenidos dentro del campo Inicio de año de la tabla Personas .
Los valores duplicados se eliminan de la tabla resultante debido a la propiedad de cierre que crea una tabla relacional: todos los registros en una tabla relacional deben ser distintos.
Si la lista de campos comprende más de un solo campo, la tabla resultante es una versión distinta de estos campos.
proyecto People over StartYear, DepartmentID devolverá:
Se eliminó un registro debido a la duplicación de 2006 StartYear y 1 DepartmentID .
DAR
Las expresiones relacionales se pueden encadenar al nombrar las expresiones individuales usando la palabra clave dar o mediante la incorporación de una expresión dentro de otra.
<expresión de álgebra relacional> dando <nombre de alias>
Por ejemplo, considera las siguientes expresiones:
seleccione Personas donde DepartmentID = 2 dando A
proyecto A sobre PersonName dando B
Esto dará como resultado la tabla B a continuación, siendo la tabla A el resultado de la primera expresión.
La primera expresión se evalúa y la tabla resultante recibe el alias A. Esta tabla se usa dentro de la segunda expresión para obtener la tabla final con un alias de B.
Otra forma de escribir esta expresión es reemplazar el nombre de alias de la tabla en la segunda expresión con el texto completo de la primera expresión entre paréntesis:
proyecto ( seleccione People donde DepartmentID = 2) sobre PersonName dando B
Esto se llama una expresión anidada .
Unirse natural
Una combinación natural une dos tablas usando un campo común compartido entre las tablas.
unirse a <tabla 1> y <tabla 2> donde <campo 1> = <campo 2>
suponiendo que <field 1> está en <table 1> y <field 2> está en <table 2>.
Por ejemplo, la siguiente expresión de unión se unirá a personas y departamentos según las columnas ID de departamento e ID en las tablas respectivas:
unirse a las personas y departamentos donde DepartmentID = ID
Tenga en cuenta que solo se muestra DepartmentID de la tabla Personas y no ID de la tabla Departamento . Solo se debe mostrar uno de los campos que se comparan, que generalmente es el nombre del campo de la primera tabla en la operación de unión.
Aunque no se muestra en este ejemplo, es posible que unir tablas puede dar como resultado que dos campos tengan el mismo encabezado. Por ejemplo, si hubiera utilizado el encabezamiento de nombre para identificar los campos a PERSONNAME y Dept (es decir, para identificar el nombre de la persona y el nombre del departamento). Cuando surge esta situación, usamos el nombre de la tabla para calificar los nombres de los campos usando la notación de puntos: People.Name y Departments.Name
la combinación combinada con la selección y el proyecto se pueden usar juntas para obtener información:
únete a las personas y departamentos donde DepartmentID = ID da A
seleccione A donde StartYear = 2005 y Dept = 'Producción' dando B
proyecto B sobre PersonName dando C
o como una expresión combinada:
proyecto ( seleccione ( unirse a Personas y Departamentos donde DepartmentID = ID) donde StartYear = 2005 y Dept = 'Producción') sobre PersonName dando C