sábado, 12 de noviembre de 2016

Buscar por contenido

Normalmente no querremos ver todos los datos que hemos introducido, sino sólo aquellos que cumplan cierta condición. Esta condición se indica añadiendo un apartado WHERE a la orden "SELECT". Por ejemplo, se podrían ver los datos de una persona a partir de su nombre de la siguiente forma:
SELECT nombre, direccion FROM personas WHERE nombre = 'juan';

Es muy importante a la hora de hacer consultas MySQL conocer bien cuándo se usa la cláusula WHERE y cuándo HAVING. Cuando uno empieza puede resulta dificultoso el aprendizaje en este punto, ya que algunas personas piensan que se debe utilizar una u otra cláusula, pero eso no es cierto, se pueden usar las dos en la misma sentencia. Espero que con los siguientes ejemplos podáis entender mejor cuando se usa cada una de ellas.
Antes de poner un ejemplo, me gustaría explicar brevemente cuándo se usa cada una de ellas.
WHERE. La cláusula where se utiliza para realizar comparaciones fila por fila.
HAVING. La cláusula having se utiliza, en caso de requerirlo, después de usar GROUP BY que sirve para agrupar por diferentes campos, por tanto having sirve para comparaciones con conjuntos de filas, es decir, cuando los datos mostrados por pantalla son datos calculados y no se encuentran propiamente escritos en la tabla, pudiendo usar funciones como SUM(), AVG(), etc...

Buscar por contenido

Normalmente no querremos ver todos los datos que hemos introducido, sino sólo aquellos que cumplan cierta condición. Esta condición se indica añadiendo un apartado WHERE a la orden "SELECT". Por ejemplo, se podrían ver los datos de una persona a partir de su nombre de la siguiente forma:
SELECT nombre, direccion FROM personas WHERE nombre = 'juan';

Mostrar datos ordenados

Cuando una consulta devuelva muchos resultados, resultará poco legible si éstos se encuentran desordenados. Por eso, será frecuente añadir "ORDER BY" seguido del nombre del campo que se quiere usar para ordenar (por ejemplo "ORDER BY nombre").
Es posible indicar varios campos de ordenación, de modo que se mire más de un criterio en caso de que un campo coincida (por ejemplo "ORDER BY apellidos, nombre").
Si se quiere que alguno de los criterios de ordenación se aplique en orden contrario (por ejemplo, textos de la Z a la A o números del valor más grande al más pequeño), se puede añadir la palabra "DESC" (de "descending", "descendiendo") al criterio correspondiente, como en "ORDER BY precio DESC". Si no se indica esa palabra, se sobreentiende que se quiere obtener los resultados en orden ascendente (lo que indicaría la palabra "ASC", que es opcional).
SELECT nombre, direccion 
FROM personas 
WHERE direccion LIKE '%calle%'

ORDER BY nombre, direccion DESC;

Creación de una tabla

Una base de datos, en general, estará formada por varios bloques de información llamados "tablas". En nuestro caso, nuestra única tabla almacenará los datos de nuestros amigos. Por tanto, el siguiente paso será decidir qué datos concretos (lo llamaremos "campos") guardaremos de cada amigo. Deberemos pensar también qué tamaño necesitaremos para cada uno de esos datos, porque al gestor de bases de datos habrá que dárselo bastante cuadriculado. Por ejemplo, podríamos decidir lo siguiente:
nombre - texto, hasta 20 letras
dirección - texto, hasta 40 letras
edad - números, de hasta 3 cifras
Cada gestor de bases de datos tendrá una forma de llamar a esos tipos de datos. Por ejemplo, en MySQL podemos usar "VARCHAR" para referirnos a texto hasta una cierta longitud variable, y "NUMERIC" para números de una determinada cantidad de cifras. Además, en la mayoría de gestores de base de datos, será recomendable (a veces incluso obligatorio) que los nombres de los campos no contengan acentos ni caracteres internacionales, y los nombres de tablas y campos se suelen indicar en minúsculas, de modo que la orden necesaria para crear esta tabla sería:
CREATE TABLE personas (
  nombre varchar(20),
  direccion varchar(40),
  edad numeric(3)

Creación de una tabla

Una base de datos, en general, estará formada por varios bloques de información llamados "tablas". En nuestro caso, nuestra única tabla almacenará los datos de nuestros amigos. Por tanto, el siguiente paso será decidir qué datos concretos (lo llamaremos "campos") guardaremos de cada amigo. Deberemos pensar también qué tamaño necesitaremos para cada uno de esos datos, porque al gestor de bases de datos habrá que dárselo bastante cuadriculado. Por ejemplo, podríamos decidir lo siguiente:
nombre - texto, hasta 20 letras
dirección - texto, hasta 40 letras
edad - números, de hasta 3 cifras
Cada gestor de bases de datos tendrá una forma de llamar a esos tipos de datos. Por ejemplo, en MySQL podemos usar "VARCHAR" para referirnos a texto hasta una cierta longitud variable, y "NUMERIC" para números de una determinada cantidad de cifras. Además, en la mayoría de gestores de base de datos, será recomendable (a veces incluso obligatorio) que los nombres de los campos no contengan acentos ni caracteres internacionales, y los nombres de tablas y campos se suelen indicar en minúsculas, de modo que la orden necesaria para crear esta tabla sería:
CREATE TABLE personas (
  nombre varchar(20),
  direccion varchar(40),
  edad numeric(3)

Introducción de datos

Para introducir datos usaremos la orden "INSERT INTO", e indicaremos tras la palabra "VALUES" los valores de los campos, en el mismo orden en el que se habían definido los campos. Los valores de los campos de texto se deberán indicar entre comillas, y los valores para campos numéricos ni necesitarán comillas, así:
INSERT INTO personas VALUES ('juan', 'su casa', 25);

Creación de una tabla

Una base de datos, en general, estará formada por varios bloques de información llamados "tablas". En nuestro caso, nuestra única tabla almacenará los datos de nuestros amigos. Por tanto, el siguiente paso será decidir qué datos concretos (lo llamaremos "campos") guardaremos de cada amigo. Deberemos pensar también qué tamaño necesitaremos para cada uno de esos datos, porque al gestor de bases de datos habrá que dárselo bastante cuadriculado. Por ejemplo, podríamos decidir lo siguiente:
nombre - texto, hasta 20 letras
dirección - texto, hasta 40 letras
edad - números, de hasta 3 cifras
Cada gestor de bases de datos tendrá una forma de llamar a esos tipos de datos. Por ejemplo, en MySQL podemos usar "VARCHAR" para referirnos a texto hasta una cierta longitud variable, y "NUMERIC" para números de una determinada cantidad de cifras. Además, en la mayoría de gestores de base de datos, será recomendable (a veces incluso obligatorio) que los nombres de los campos no contengan acentos ni caracteres internacionales, y los nombres de tablas y campos se suelen indicar en minúsculas, de modo que la orden necesaria para crear esta tabla sería:
CREATE TABLE personas (
  nombre varchar(20),
  direccion varchar(40),
  edad numeric(3)
Si no queremos indicar todos los datos, deberemos detallar qué campos vamos a introducir y en qué orden, así:
INSERT INTO personas (nombre, direccion) VALUES ('Héctor', 'calle 1');
(Como se ve en este ejemplo, los datos sí podrán contener acentos y respetar las mayúsculas y minúsculas donde sea necesario).
De igual modo, también será necesario indicar los campos si se desea introducir los datos en un orden distinto al de definición:
INSERT INTO personas (direccion, edad, nombre) VALUES ("Calle 2", 30, "Daniel");
(Y como puedes apreciar en este ejemplo, los campos de texto se pueden indicar también entre comillas dobles, si te resulta más cómodo).