Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SQL= Structure Query Language, no es un lenguaje de programación, todo lo que se aprenda a partir de
este curso será un estándar, es decir nos servirá a cualquier base de datos estándar
Existen muchos perfiles de usuarios que necesitan acceder a base de datos relacionales.
INSTRUCCIONES DEL LENGUAJE SQL, mencionamos las esenciales instrucciones que se clasifican por
categorías
1
Select (DLR).- es la que se utiliza para solicitar información a una base de datos, y las 3 anteriores
para modificar una base de datos
DDL=Data Definition Language,sirven para crear modificar los objetos de una bd, los objetos son las
tablas, índices las consultas, etc.
Alter
Drop
DCL = Data Control Language.- son las que gestión los permisos en una bd.
Grant
Revoke
Deny
Commit
Rollback
2
Finalmente los valores absolutos
Se hace necesario describir la estructura de la base de datos, las tablas, además de la distribución de los
datos en las tablas.
3
- Not Null.- Llamada también restricción de campo obligatorio, podemos definir para una
columna que no admita valores nulos, esto hara que si un usuario ingresa una nueva fila
para una tabla sino llena el campo con los valores correspondiente, el sistema despliega
un mensaje de error.
- Unique.- Esta restricción, sirve para especificar que dentro de una columna no se puede
repetir el mismo valor entre las diferentes filas.
- De clave primaria (Primary Key).- Es el resumen de las dos anteriores, es decir las
restricciones: Not Null y Unique, donde no se pueden introducir valores nulos ni se
pueden repetir los valores entre las diferentes filas. El objetivo de este tipo de
restricciones, básicamente dentro de la tabla se pueden declarar una clave primaria,
pudiendo ser claves primarias simples o compuestas: Es decir que solo pueda ser un
campo o dos campos respectivamente, lo que no se puede repetir son los valores dentro
de estos campos, ¿para qué sirven las claves primarias?, sirven para identificar
inequívocamente al registro dentro de la tabla, si no existe claves primarias nos
podemos encontrar con registros repetidos, es decir completamente iguales.
- Check.- Son las restricciones más flexibles a la hora de definir normas, por ejemplo en un
campo obligar a nunca introducir un valor cero, en el caso de sueldos y salarios se tiene
un número que jamás se almacenaría un valor negativo, o el campo FechaEntrega, no
puede tener datos con una fecha posterior a la fecha actual.
- Foreign Key.- Está restricción se utilizan cuando se emplean dos tablas, se utiliza para
formalizar las relaciones entre tablas, el objetivo es que en ciertas tablas se puede
poner una norma que obligue para que un valor que se coloca en una tabla este valor
tiene que existir en la otra tabla, y es de lo que se hablara a continuación.
4
REALIZAR CONSULTAS A LA BASE DE DATOS (MODULO 3)
Lo primero que se establecerá es definir lo que es una consulta a la bd. De finiendo los siguientes puntos
- La cláusula SELECT y la cláusula FROM.- La clausula SELECT es la que usaremos para especificar
que campos aparezcan en la consulta, en cambio la clausula FROM para especificar la tabla de la
cual se va a obtener los campos.
6
La clausula select en el ejemplo define dos campos los cuales se hallan separados por una coma y de
debe notar que cuando aparece la clausula from significa que ya se acabaron los campos y de define la
tabla.
Con el asterisco es para desplegar todas las columnas de la tabla seleccionada, no es de uso común sino
para ver toda la información de la tabla.
- Operaciones con los campos seleccionados.- Para una comprensión, emplearemos la tabla
Producto. Del siguiente modo
Además determinamos que no se tiene un nombre de columna, para la operación de multiplicación ante
esta circunstancia empleamos el alias, consiste en establecer un nombre para las columnas que se
obtienen a través de otras columnas o simplemente tenemos la necesidad de renombrar alguna de las
columnas, para tal cometido empleamos la clausula AS, veamos los siguientes ejemplos.
- El alias de campo
7
- Las funciones de fila única
Se llaman funciones de fila única por que se aplica a una única fila por ejemplo se aplico a la fila
nombrecompañia
8
En el anterior ejemplo vimos que las operaciones en fila única, se tienen el manejo de parámetros desde
una posición determinada y cuantos caracteres quiere que se devuelvan
MODULO 4
Filtrar datos
- La cláusula WHERE
Siempre se ubicara la cláusula Where después de la cláusula From, no se puede filtrar sin antes
especificar los campos y la tabla, la sintaxis es la siguiente
Where condición
Como se ve en el ejemplo anterior siempre la cláusula Where va acompañada por una condición.
From Productos
Where IdCategoría = 1
La consulta solo devuelve del campo IdCategoria todos los que tengan el valor uno (1), exactamente
devuelve 12 columnas. El valor 1 es un valor que nosotros lo determinamos.
A continuación vemos otro ejemplo, manejando cadenas de texto mediante el uso de comillas simples
9
Cuando se ejecuta solo vemos que 4 cumplen la condición
Para conocer qué tipo de condiciones se puede utilizar con Where, veremos los operadores de
desigualdad, es decir:
No solo se aplica a campos numéricos sino también a cadenas de texto, donde devuelven en el orden
alfabético, donde A=1, B=2,….,Z= 29.
- El operador LIKE
Se emplea los comodines % ya sea adelante o posteriormente de la siguiente manera, dadas las
circunstancias se puede dar que no se conozca por completo la cadena a buscar entonces se recurre al
operador LIKE
10
El símbolo de % significa que puede haber cualquier valor posible a la izquierda como a la derecha, es
similar a un comodín.
- El operador IS NULL
Es importante el conocer al operador IS NULL
11
Lo que nos devuelve esta consulta es en el campo Región muchos datos que tienen el valor NULL,
entonces ¿cómo lo solucionamos?
Ejemplo:
12
No nos devolvió nada, por lo tanto lo cambiamos a la siguiente instrucción:
From Clientes
Pero si solo quiero ver los que no tienen valores nulos entonces que hacer, veamos el siguiente ejemplo
13
Y a partir de esta consulta se despliega los datos con valores diferentes a NULL
- El operador IN
Este operador es útil en los siguientes escenarios.
Como leeríamos esta instrucción: Que nos muestre todos los registros cuyo campo Región es el
enumerado en la lista. Del ejemplo (BC, SP Y RJ)
14
Y si busco lo contrario es decir aquellos que no sean los campos mencionados, entonces la consulta
seria de la forma
15
Nótese que los valores null no se toman en cuenta.
16
Y con el operador Or se llevaría a cabo del siguiente modo.
17
18
Modulo 5
Select preciounidad
From productos
Nos devuelve
Pero si en cambio aplicamos a las funciones de grupo se aplicara a todas las filas del siguiente modo:
19
MUESTRA 91 REGISTROS AHORA AL EMPLEAR LA FUNCION DE GRUPO COUNT DEL SIGUIENTE MODO
AVG, SUM, MAX (HALLA EL ELEMENTO MAYOR), MIN Y COUNT (NO CUENTA LOS VALORES NULOS)
EN RESUMEN
ESTAS SON LAS CINCO ESENCIALES DE FUNCIONES DE GRUPO QUE NOS DEVUELVEN UNA UNICA FILA
DE GRUPO.
20
Y LUEGO CUENTA DEVOLVIENDO EL VALOR 5
COMO DESPLEGARIAMOS, PARA SATISFACER AMBAS CONSULTAS? DA ERROR LO QUE TIENE QUE HACER
SERIA
La cláusula GROUP BY
21
TAMBIÉN SE DEBE SEGUIR LA SIGUIENTE REGLA PARA LA CLÁUSULA GROUP BY.
22
Y PARA QUE USTEDES ANALICEN
23
Filtrar después de agrupar. La cláusula HAVING
/* Devolver el código de categoría y la media del precio de sus productos, pero sólo en aquellos casos en
que dicha media sea superior a */
From productos
Where
Group by idcategoria
24
Lo que se debería es realizar es el filtrado empleando la condicional WHERE, pero debemos tomar en
cuenta que aún no se agrupo por tanto no sería posible tal situación.
Entonces utilizaremos la cláusula HAVING cuya estructura es similar al de la cláusula WHERE con la
salvedad de que se aplica después de la cláusula de agrupación es decir de gruop by de la siguiente
manera:
From productos
Group by idcategoria
Y nos devuelve todos los campos donde la media es mayor a 30 tomando en cuenta que este filtro no se
puede realizar con la cláusula Where.
Pero también se puede filtrar con anterioridad es decir filtrar, agrupar y volver a filtrar, veamos el
siguiente ejemplo:
From productos
Where suspendido = 0
Group by idcategoria
Bien hasta aquí lo relacionado a los filtrados y las agrupación de datos en las siguientes sesiones veremos
la consulta a varias tablas:
25
MODULO 6
Vamos a dedicar los siguientes módulos, el primero a la teorización de las necesidades de acceder a
información de más de una tabla.
La necesidad de acceder a información de más de una tabla.- la tabla de productos tiene toda la
información referente a los productos pero también almacena el idcategoria, donde ese campo
pertenece a la tabla Categorías y por lo tanto se me hace difícil el poder visulalizar mediante una
consulta los campos de la tabla Categorías es decir los campos NombreCategoría, Descripción,
etc.
From productos
Veamos otro ejemplo en la tabla Pedidos se tiene entre sus campos el IdCliente y como el caso
anterior cuando se realiza una consulta me brinda como resultado solo el IdCliente por que se
halla en tabla de Pedidos y no así los demás campos de la tabla Clientes por ejemplo
NombreCompañia, NombreContacto, CargoContacto, Dirección, etc. que son propios estos
campos de la tabla Clientes.
26
Lo que se deberá de conocer son las restricciones forenkey
27
Entonces nos hallamos ante la relación UNO A INFINITO o denominado (MAESTRO – DETALLE
Donde las tablas actúan del siguiente modo: Maestro es Clientes y la tabla de Detalles esta dado por la
tabla Pedidos.
Existen otros escenarios dadas del siguiente modo: Con la relación UNO a UNO donde la clave primaria
se establece en ambas tablas.
Veamos la siguiente relaciÓn denominada INDIRECTA, donde interviene una tabla de enlace donde en
esta última se añade las claves primarias de las dos tablas se establecen en esta tabla de enlace. En todo
caos intervienen tres tablas.
Es una relación de INFINITO A INFINITO volvemos a mencionar que se denomina una relación infinito a
infinito.
28
El criterio de la relación.
EL Criterio de la relación: Simple. Que en el campo IDCliente de la tabla Clientes tiene que existir en la
tabla Pedidos, con el criterio de clave foránea
Tomando en cuenta que los datos necesariamente se tiene que repetir en ambas tablas.
La Relación Compuesta. El criterio similar a lo anterior solamente que tiene que coincidir mas de dos
campos, el campo IdPedido sea igual al Idpedido de la otra tabla y que el IdProducto se halle en una y
otra tabla como se muestra en la figura.
La Relación Compleja.
Se establece en función a relaciones de rango es decir que de la figura el campo FechaPedido de la tabla
Pedidos se llenara en función a los campos DesdeFecha y HastaFecha de la tabla Periodos. Entonces el
29
criterio se establece en función al rango que presenta la tabla periodos con los campos desdeFecha
hastaFecha y en la tabla pedidos FechaPedido
30
MODULO 7 CONSULTAS A MÁS DE UNA TABLA
En la cláusula from se detalla todas las tablas separadas por comas. Pero al realizar la consulta anterior
obtenemos el producto cartesiano, que es todas las combinaciones posibles de los campos de ambas
tablas, es decir es la multiplicación de los campos de las tablas.
Nos devuelve que hay 75530 registros y eso no es lo que se quiere por lo tanto lo que sucedió fue que
se realizo el producto cartesiano de ambas tablas.
Veamos la siguiente consulta a las dos tablas pedidos y clientes donde en ambas tablas se halla el
campo IdCliente. Ejecutemos la siguiente consulta.
Al ejecutarlo nos devuelve un mensaje de ambigüedad por el hecho que en ambas tablas se halla el
campo IdCliente.
31
Ahora si especificamos el nombre de la tabla, del siguiente modo
No despliega error alguno, pero se establece el producto cartesiano entre las dos tablas.
PEDIDOS.IDCLIENTE, IdPedido
PEDIDOS.IDCLIENTE, IdPedido
Lo que se hizo fue comparar los campos que son comunes a ambas tablas IDcliente de la tabla pedidos
como de la tabla clientes. Que nos devuelve los 830 registros.
Ahora lo podemos hacer mucho mas concreto nuestra consulta del siguiente modo:
Luego de la ejecución, devuelve del mismo modo que la anterior el resultado de la consulta. Es decir que
se combino que registro le pertenece al otro registro de la otra tabla.
Nombrecategoría
And suspendido = 0
Lo que se tiene que tomar en cuenta es al filtro Where donde se tiene dos condiciones uno referido
específicamente a los campos idcategoría y al campo suspendido excluyéndoles mediante el operador
lógico and.
And suspendido = 0
Si al ejecutar la consulta nos devuelve con los mismos nombres de campo, pero lo que sucedió es que
me permite USAR LOS ALIAS DE TABLA EN EL FILTRADO MEDIANTE las letras que P y C respectivamente
pertenecientes a ambas tablas. Y luego se las puede emplear en el filtrado además en la selección de los
campos del siguiente modo:
And suspendido = 0
*/
trabajaremos con las tablas PROVEEDORES (IdProveedor), se relaciona con la tabla productos que entre
sus campos se halla el campo IdProveedor, tenga el mismo valor en ambas tablas. Lo realizamos del
siguiente modo
33
c.nombrecategoría, pr.nombrecompañía
NOTA.- siempre se tiene cuando son tres tablas a ser consultadas dos combinaciones, no se tiene que
olvidar alguna sino se obtiene el producto cartesiano.
/*
obtener el código de pedido, el nombre del cliente, y el nombre y apellidos del empleado, pero sólo de
aquellos pedidos que se realizaron durante el año 1996
*/
Se utilizo dos de las clausulas where para combinar las dos tabla y el resto para hacer cumplir lo que se
nos dio como consulta.
34
MODULO 8 CONSULTA A MÁS DE UNA TABLA Parte 3
/*
*/
La norma ISO establece que solo se debe utilizar la cláusula Where solo para filtrar datos y NO PARA
COMBINAR DATOS, por lo tanto empleatemos la cláusula JOIN, que es una sub cláusula de FROM,
además por cada nueva tabla emplearemos el operador ON para establecer el criterio de combinación,
veamos el mismo ejemplo anterior pero empleando la subcláusula JOIN.
Para realizar la combinación empleamos la cláusula ON, Ahora la cláusula FROM abarca las dos líneas
últimas. Y cuando terminen todo lo referente a la cláusula Join empezara la cláusula Where solo para
filtrar y no para combinar, además join reemplaza a la coma para separar las tablas.
35
¿Por qué la sintaxis estándar se inclino por el estándar join, para combinar las tablas?
Trataremos se definirlos. Join como eje para definir la tabla de la izquierda o tabla de la derecha, veamos
el siguiente ejemplo.
36
Inner Join, veamos el siguiente ejemplo: Comenzamos verificando lo que se halla en la base de datos, del
siguiente modo
Notese que se tiene 78 registros donde el ultimo no tiene valores en algunos campos (NULL)
37
Entonces de la tabla categorías el registro 9 del mismo modo no tiene valores
Al realizar la consulta determinamos que existen 77 columnas donde no apareció el de las patatas fritas
Esto sucede porque aparece el que se halla en la derecha relacionado con el de la izquierda, pero se
debe tener cuidado, ya que la condición del ejercicio mencionaba.
38
Nos aparece todos los productos Incluso el de las patatas fritas, y solo el que tienen un correspondiente
en la tabla categorías.
En este caso no será el más apropiado, además existen la full join, veamos el siguiente ejemplo
39
Aparecen los 79 registros, full join no es de uso común pero ahí esta cuando se lo precise.
Si lo ejecutamos de esta forma no estamos cumpliendo con lo que establece el enunciado y por lo tanto
se halla mal planteada la consulta, veamos la modificación que la realizamos:
40
Ahora si al ejecutar la consulta nos devuelve lo que se pidió en el ejercicio, devolviéndonos todos los
registros incluso el de papas fritas. Por ultimo no se puede olvidar que podemos aplicar filtros, veamos el
siguiente ejemplo
Son combinaciones que ocurren en la misma tabla, veamos la tabla empleados de la base de datos
Neptuno:
41
Supongamos el siguiente enunciado
Nos muestra 8 filas cuando son 9 filas entonces lo que debería de hacerse es
42
43