Indice
2. Estructura
básica
3. Predicados y
conectores
4. Tuplas duplicadas
5. Pruebas para relaciones
vacías
6. Ordenación de la
presentación de tuplas
7. Modificación de la
base de datos
8. Valores
nulos
9. Definición de
datos
SQL (Standar Query Lenguaje) es
un lenguaje
estandarizado de base de datos, el
cual nos permite realizar tablas y obtener datos de ella de
manera muy sencilla. Para exponer mas claramente los conceptos se
realizaran ejemplo sobre relaciones que se crearan aquí
para entender mejor como funciona SQL.
Cuando aquí nos refiramos a relación estamos
hablando mas concretamente a la tabla de datos en si, y
sus atributos serán los campos de la tabla. Como ejemplo
la siguiente relación ( tabla ) la llamaremos persona y sus
atributos ( campos ) son nombre, apellido Y DNI
|
PERSONA |
NOMBRE |
APELLIDO |
DNI |
|
1 |
MARTIN |
MARQUESI |
26125988 |
|
2 |
PABLO |
MARQUESI |
25485699 |
|
3 |
ROBERTO |
SANCHEZ |
20566401 |
|
4 |
ESTEFANIA |
GUISSINI |
27128064 |
|
5 |
RUBEN |
ALEGRATO |
24238975 |
|
6 |
SANDRA |
BRITTE |
25483669 |
|
7 |
MELISA |
ARDUL |
27456224 |
|
8 |
SOLEDAD |
MICHELLI |
29889656 |
|
9 |
BETANIA |
MUSACHEGUI |
27128765 |
|
10 |
JUAN |
SERRAT |
28978845 |
SQL es un lenguaje que consta de varias partes
2. Estructura básica
La estructura básica de una expresión para consulta SQL consta de tres cláusulas:
La cláusula SELECT se usa para listar los
atributos que se desean en el resultado de una consulta.
La cláusula FROM lista las relaciones que se van a
examinar en la evaluación
de la expresión
La cláusula WHERE costa de un predicado que implica
atributos de las relaciones que aparecen en la cláusula
FROM.
Una consulta básica en SQL tiene la forma:
SELECT A1,A2,...,An
FROM r1,r2,...,rn
WHERE P
Donde Ai = atributo ( Campo de la tabla )
ri = relación ( Tabla )
P = predicado ( condición )
Ejemplo 2.1 : Seleccionar todos los nombres de las
personas que tengan el apellido MARQUESI de la tabla persona
SELECT nombre
FROM persona
WHERE apellido = " MARQUESI"
|
ANSWER |
NOMBRE |
|
1 |
MARTIN |
|
2 |
PABLO |
El resultado de una consulta es por supuesto otra relación. Si se omite la cláusula WHERE, el predicado P es verdadero. La lista A1, A2,..., An puede sustituirse por un asterisco (*) para seleccionar todos los atributos de todas las relaciones que aparecen en la cláusula FROM, aunque no es conveniente elegir esta ultima opción salvo que sea necesario pues desperdiciamos mucho tiempo en obtenerlo
Alias
Es posible renombrar los atributos y las relaciones, a veces por
conveniencia y otras veces por ser necesario, para esto usamos la
clausula AS como en el siguiente ejemplo.
Ejemplo 2.2
SELECT P.nombre AS [PRIMER NOMBRE]
FROM persona P
WHERE apellido = "MARQUESI"
|
ANSWER |
PRIMER NOMBRE |
|
1 |
MARTIN |
|
2 |
PABLO |
En este ejemplo cabe destacar un par de cosas. Cuando
nos referimos a un atributo como es el caso de nombre, podemos
referirnos a este usando la relación ( o el alias en este
ejemplo ) a la que pertenece el atributo seguido de un punto
seguido del atributo <P.nombre>, a veces esta
notación será necesaria para eliminar
ambigüedades. Los corchetes los usamos cuando usamos
espacios en blancos o el caratér (–) en el nombre de
atributo o alias.
Usar alias en los atributos nos permite cambiar el nombre de los
atributos de la respuesta a la consulta.
Cuando asociamos un alias con una relación decimos que
creamos una variable de tupla. Estas variables de
tuplas se definen en la cláusula FROM después del
nombre de la relación.
En las consultas que contienen subconsultas, se aplica una regla
de ámbito a las variables de
tupla. En una subconsulta esta permitido usar solo variables de
tupla definidas en la misma subconsulta o en cualquier consulta
que tenga la subconsulta.
Los conectores lógicos en SQL son:
La lógica
de estos conectores es igual que en cualquier lenguaje de
programación y sirven para unir predicados.
Las operaciones
aritméticas en SQL son:
También incluye el operador de comparación
BETWEEN, que se utiliza para valores
comprendidos
Ejemplo 3.1 : Encontrar todos los nombres y dni de las personas
cuyos dni sea mayor que 26 millones y menor a 28 millones
SELECT nombre, dni
FROM persona
WHERE dni BETWEEN 26000000 and 28000000
|
ANSWER |
NOMBRE |
DNI |
|
1 |
MARTIN |
26125988 |
|
2 |
ESTEFANIA |
27128064 |
|
3 |
MELISA |
27456224 |
|
4 |
BETANIA |
27128765 |
Análogamente podemos usar el operador de
comparación NOT BETWEEN.
SQL también incluye un operador de selección
para comparaciones de cadena de caracteres. Los modelos se
describen usando los caracteres especiales:
Estos modelos se
expresan usando el operador de comparación LIKE. Un error
muy frecuente es tratar de utilizar los modelos mediante el
operador de igualdad ( = )
lo cual es un error de sintaxis.
Ejemplo 3.2 : encontrar los nombres que comiencen con la letra p
o el nombre tenga exactamente 6 caracteres de la relación
persona
SELECT nombre
FROM persona
WHERE (nombre LIKE "P%") OR (nombre LIKE "_ _ _ _ _
_")
|
ANSWER |
NOMBRE |
|
1 |
MARTIN |
|
2 |
PABLO |
|
3 |
MELISA |
|
4 |
SANDRA |
Análogamente podemos buscar desigualdades usando el operador de comparación NOT LIKE.
Los lenguajes de consulta formales se basan en la
noción matemática
de relación como un conjunto. Por ello nunca aparecen
tuplas duplicadas en las relaciones. En la practica la
eliminación de duplicados lleva bastante tiempo. Por lo
tanto SQL permite duplicados en las relaciones. Así pues
en las consultas se listaran todas las tuplas inclusive las
repetidas.
En aquellos casos en los que queremos forzar la
eliminación de duplicados insertamos la palabra clave
DISTINCT después de la cláusula SELECT
Ejemplo 4.1: Listar todos los apellidos no repetidos de la
relación persona
SELECT DISTINCT apellido
FROM persona
|
ASWER |
APELLIDO |
|
1 |
MARQUESI |
|
2 |
SANCHEZ |
|
3 |
GUISSINI |
|
4 |
ALEGRATO |
|
5 |
BRITTE |
|
6 |
ARDUL |
|
7 |
MICHELLI |
|
8 |
MUSACHEGUI |
|
9 |
SERRAT |
Si observamos la tabla original de la relación persona veremos que el apellido marquesi aparecía dos veces, pero debido al uso de DISTINCT en la consulta la relación respuesta solo lista un solo marquesi.
Operaciones de conjunto.
SQL incluye las operaciones de
conjuntos
UNION, INTERSECT, MINUS, que operan sobre relaciones y
corresponden a las operaciones del álgebra
unión, intersección y resta de conjuntos
respectivamente. Para realizar esta operación de conjuntos
debemos tener sumo cuidado que las relaciones tengan las mismas
estructuras.
Incorporemos ahora una nueva relación, llamada jugadores
que representa las personas que juegan al fútbol, sus
atributos serán DNI, puesto y nro_camiseta. Supongamos que
esta nueva tabla esta conformada de la siguiente
manera
|
JUGADORES |
DNI |
PUESTO |
NRO_CAMISETA |
|
1 |
26125988 |
DELANTERO |
9 |
|
2 |
25485699 |
MEDIO |
5 |
|
3 |
28978845 |
ARQUERO |
1 |
|
4 |
29789854 |
DEFENSOR |
3 |
Ejemplo 4.2 : Obtener todos los nombres de la
relación persona cuyos apellidos sean Marquesi o
Serrat
SELECT nombre
FROM PERSONA
WHERE apellido = "MARQUESI"
UNION
SELECT nombre
FROM PERSONA
WHERE apellido = "SERRAT"
|
ANSWER |
PRIMER NOMBRE |
|
1 |
MARTIN |
|
2 |
PABLO |
|
3 |
JUAN |
Ejemplo 4.3 : Obtener todos los DNI de
los que juegan al fútbol y, además, están en
la lista de la relación persona
SELECT dni
FROM persona
INTERSECT
SELECT dni
FROM jugadores
|
ANSWER |
DNI |
|
1 |
26125988 |
|
2 |
25485699 |
|
3 |
28978845 |
Por omisión, la operación de union elimina las tuplas duplicadas. Para retener duplicados se debe escribir UNION ALL en lugar de UNION.
Pertenencia a un conjunto
El conector IN prueba si se es miembro de un conjunto, donde el
conjunto es una colección de valores
producidos en lo general por una cláusula SELECT.
Análogamente el conector NOT IN prueba la no pertenencia
al conjunto
Ejemplo 4.4 : Encontrar los nombres de las personas que juegan al
fútbol y, además, se encuentran en la
relación persona
SELECT nombre, apellido
FROM persona
WHERE dni IN
(SELECT dni
FROM jugadores)
|
ANSWER |
NOMBRE |
APELLIDO |
|
s
1 |
MARTIN |
MARQUESI |
|
2 |
PABLO |
MARQUESI |
|
3 |
JUAN |
SERRAT |
Es posible probar la pertenencia de una relación arbitraria SQL usa la notación de elementos <v1,v2,...,vn> para representar una tupla de elementos de n que contiene los valores v1,v2,...,vn.
Comparación de conjuntos
En conjuntos la frase << mayor que algún >> se
representa en SQL por ( >SOME ), también podría
entenderse esto como << mayor que el menor de >>, su
sintaxis es igual que la del conector IN. SQL también
permite las comparaciones ( >SOME ),( =SOME ) ( >=SOME ), (
<=SOME ) y ( <>SOME ).
También existe la construcción ( >ALL ), que corresponde a
la frase << mayor que todos >>. Al igual que el
operador SOME, puede escribirse ( >ALL ),( =ALL ) ( >=ALL
), ( <=ALL ) y ( <>ALL ).
En ocasiones podríamos querer comparar conjuntos para
determinar si un conjunto contiene los miembros de algún
otro
conjunto. Tales comparaciones se hacen usando las construcciones
CONTAINS y NOT CONTAINS
Página siguiente ![]() |
Trabajos relacionados
Ver mas trabajos de Programacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.
Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.
Ingrese el e-mail y contraseña con el que está registrado en Monografias.com
|
|