Mostrando entradas con la etiqueta conceptos. Mostrar todas las entradas
Mostrando entradas con la etiqueta conceptos. Mostrar todas las entradas

sábado, 3 de agosto de 2024

Otros conceptos de SQL

 Renombrar las columnas, utilizando AS

Podemos cambiar el nombre a las columnas. Así, la llamada a un id se muestra siempre como id en el resultado. Podemos cambiarle el nombre:

SELECT  empleado.id AS id_persona,  departamento.id AS id_departamento FROM empleado JOIN departamento  ON empleado.id = departamento.id_pertenece;

Después del nombre de la columna, por ejemplo, empleado.id, utilizamos la nueva palabra clave AS y ponemos el nuevo nombre después de ella (id_persona). Podemos repetir este proceso con todas las columnas.

Otros conceptos de SQL


El nuevo nombre solo es un alias, lo que significa que es temporal y no cambia el nombre real de la columna en la base de datos. Solo influye en cómo la columna se muestra en el resultado de dicha consulta. Esta técnica se suele utilizar cuando hay varias columnas con el mismo nombre que proceden de diferentes tablas. Normalmente, cuando SQL muestra las columnas en el resultado, no hay información sobre las tablas de las que forman parte cada una de ellas.

En nuestro ejemplo, teníamos dos columnas id, así que, las renombramos como id_persona e id_departamento, respectivamente. Si ahora vemos las columnas en el resultado, sabremos a qué tabla pertenece cada columna.

Filtrar tablas combinadas

Vamos a ver cómo filtrar aún más los resultados:

SELECT  empleado.id,  departamento.nombre FROM empleado JOIN departamento   ON empleado.id =  departamento.id_pertenece WHERE empleado.edad < 25;

La cláusula WHERE sirve para filtrar las filas en las que el propietario sea menor de 25 años. Es necesario asegurarse de que se incluye el nombre de la tabla en la condición (empleado.edad).

Ordenar filas con ORDER BY

La secuencia en la que aparecen las filas es arbitraria, y cada base de datos puede comportarse de forma diferente. Incluso se puede ejecutar la misma instrucción de SQL varias veces y obtener un orden diferente cada vez, salvo que se pida a la base de datos que ordene las filas, obviamente.

SELECT * FROM pedidos ORDER BY id_cliente;

SELECT * FROM pedidos WHERE id_cliente = 100 ORDER BY importe_total;

SELECT * FROM empleados WHERE fecha = 2011 ORDER BY salario;

SELECT * FROM pedidos ORDER BY importe_total ASC;

También podemos invertir el orden y hacer que los valores más altos aparezcan primero.

SELECT * FROM pedidos ORDER BY importe_total DESC;

SELECT * FROM empleados ORDER BY apellido DESC;

Ordenar en base a varias columnas

Los resultados se pueden ordenar en base a más de una columna y, cada una de ellas, puede estar ordenada de forma diferente:

SELECT * FROM pedidos ORDER BY id_cliente ASC, importe_total DESC;

Como se puede ver, los resultados se ordenarán, primero, en orden ascendente (los valores más bajos primero) según la columna id_cliente y, luego, para cada id_cliente, los pedidos se ordenarán en orden descendente (los valores más grandes primero) según la columna importe_total.

Resultados duplicados

De forma predeterminada, la base de datos devuelve todas las filas que coinciden con los criterios especificados. Esto es lo que normalmente queremos, pero hay casos en los que podemos querer cambiar este comportamiento.

Imagina la siguiente situación: queremos obtener los números de cliente de todos los clientes que alguna vez hayan hecho un pedido. Podríamos utilizar la siguiente query:

SELECT id_cliente FROM pedidos;

¿Cuál es el problema del código en este caso?

Hay muchas filas con el mismo id_cliente, por lo que cada cliente aparece muchas veces en los resultados.

En nuestro ejemplo de pedidos, si un cliente hubiera hecho muchos pedidos, el ID de ese cliente se mostraría muchas veces en los resultados. Para ello hacemos:

SELECT DISTINCT id_cliente FROM pedidos;

Antes del nombre de la columna, hemos añadido la palabra DISTINCT. Ahora, la base de datos eliminará los duplicados y solo mostrará los valores únicos. Cada id_cliente aparecerá solo una vez.

Seleccionar valores únicos de varias columnas

También se puede utilizar DISTINCT en un grupo de columnas. Observa el siguiente código:

SELECT DISTINCT  id_cliente,   fecha_de_pedido FROM pedidos;

Un cliente puede hacer muchos pedidos cada día, pero si solo queremos saber en qué días cada cliente hizo al menos un pedido, la consulta anterior nos dará el resultado que deseamos.

COUNT Contar las filas

Es posible calcular las estadísticas de varias filas. Esta operación se llama agregación.

SELECT COUNT(*) FROM empleados;

En lugar del asterisco (*), que significa "todo", ponemos la expresión COUNT(*).

COUNT(*) es una función. Las funciones de SQL siempre tienen un nombre seguido de un paréntesis. En los paréntesis, se puede poner la información que la función necesita para funcionar. Por ejemplo, COUNT() calcula el número de filas especificado en el paréntesis.

En este caso, utilizamos COUNT(*), que significa "contar todas las filas". Como resultado, solo obtendremos la cantidad total de filas que tiene la tabla empleados, en vez de su contenido.

Contar las filas e ignorar los valores NULL

Podemos pedir a la base de datos que cuente los valores de una columna específica, por ejemplo, de la siguiente manera:

SELECT COUNT(id_empleado) FROM empleados;

¿Cuál es la diferencia entre COUNT(*) y COUNT(id_empleado)? Pues, la primera opción cuenta todas las filas de la tabla y, la segunda, cuenta todas las filas en las que la columna id_cliente tiene un valor que no sea nulo. En otras palabras, si hay un NULL en la columna id_cliente, esa fila no se contará.

Contar los valores únicos de una columna

También podemos añadir la palabra clave DISTINCT a nuestra función COUNT() de la siguiente manera:

SELECT COUNT(DISTINCT id_cliente) AS clientes_unicos FROM pedidos;

Esta vez, contamos todas las filas que tienen valores distintos en la columna id_cliente. En otras palabras, esta instrucción nos dice cuántos clientes diferentes hicieron un pedido hasta el momento. Si un cliente realizó 5 pedidos, solo se contará una vez.

Otros conceptos de SQL


Obtener los valores mínimo y máximo

SELECT MIN(importe_total) FROM pedidos;

La función MIN(importe_total) devuelve el valor más pequeño de la columna importe_total. Así, podemos saber el pedido más barato de nuestra tabla.

También, se puede utilizar una función similar llamada MAX(), que devuelve el valor más alto de la columna especificada.

Obtener el promedio

SELECT AVG(importe_total) FROM pedidos WHERE id_cliente = 100;

La función AVG() devuelve el promedio de la columna especificada.

En el ejemplo de arriba se obtiene el promedio del pedido del cliente con id 100.

Obtener la suma

SELECT SUM(importe_total) FROM pedidos WHERE id_cliente = 100;

La instrucción anterior devolverá la suma total de los importes todos los pedidos realizados por el cliente con id 100.

 

 

sábado, 2 de diciembre de 2017

Programación orientada a objetos: conceptos teóricos

Clases


Una clase es un molde que permite definir las características que tomara cada objeto de la clase. Consideremos la clase “coche” como molde de la que luego cada objeto adquiere las características de un coche concreto, por ejemplo micoche. Un coche tiene una serie de atributos que lo convierten en un coche. Cuatro ruedas, un motor, volante, etcétera. También tiene una serie de atributos como el color, el modelo, la marca, etc. Y luego unas funciones como acelerar, frenar, girar. 

En programación orientada a objetos tendríamos sólo la clase coche, y luego cada instancia de la clase (cada objeto) es un coche concreto. Un coche azul modelo A es una instancia concreta de la clase coche.

Una clase tiene variables y métodos. Las variables son las que definen los atributos del objeto en concreto, por ejemplo la variable color es la que define si luego una instancia concreta de coche será de color azul verde o rojo. Y los métodos son los que definen las funciones de la clase. En este caso tendríamos los métodos frenar, acelerar y girar.
Así pues la clase coche tendría las variables: color, cilindrada, marca y modelo. Y los métodos Frenear, acelerar y girar. La clase serían los planos y el código cliente la fábrica de coches de la que van saliendo las instancias  (coches).

Si lo implementamos como una clase real de software convendría que el código de cliente. El que crea las instancias no tuviera acceso directo a las variables de la clase, el color, la marca etc. Para ello se crean las propiedades que son similares a los métodos pero permiten leer y escribir las variables de la clase de una forma controlada por la propia clase y no por el código cliente. De este modo el código de la clase queda fuera de la vista del código cliente (encapsulación) esto permite que a medida que se crean las clases, estas se pueden almacenar en una librería y el programador se centra sólo en el código cliente que utiliza la clase. Una vez probada la clase no hay que volver a tocarla salvo haya que hacer alguna modificación de su funcionalidad. Esto mantiene controlados los cambios, sabemos que si tocamos las facturas no dejarán de funcionar otras partes del programa y podremos centrarnos sólo en probar de nuevo las facturas.




Programación orientada a objetos: conceptos teóricos

sábado, 31 de diciembre de 2016

Conceptos básicos de bases de datos relacionales

Una base de datos, contiene una o más tablas de información. Las filas de una tabla son llamadas registros, y las columnas de una tabla se denominan campos o atributos. Una base de datos que sólo contiene una tabla se llama una base de datos plana. Una base de datos que contiene dos o más tablas relacionadas entre sí, constituye una base de datos relacional. 
Imagina que eres el responsable de un hospital. Podrías utilizar una sola tabla (una base de datos plana) para realizar su seguimiento tal y como se muestra en la siguiente tabla.

Conceptos básicos de bases de datos relacionales