|
Consultas en tablas |
Sintaxis MySQL de selección de registros
MySQL puede utilizar en sus sentencias de selección de registros -entre otras- las palabras clave que enumeramos a continuación.Manejo de fechas en las consultas
MySQL dispone de algunas cláusulas de gestión de fechas que pueden tener una gran utilidad a la hora de gestionar consultas. Son las siguientes:
Manejando consultas
La consulta más simple
| SELECT * FROM tabla | |||||
| Ver código fuente | Ejecutar la consulta |
Consultando solo algunos campos
| SELECT campo1,campo2, ... FROM tabla | |||||
| Ver código fuente | Ejecutar la consulta |
Consultando registros con algunos algunos campos distintos
| SELECT DISTINCT campo1,campo2, ... FROM tabla | |||||
| Ver código fuente | Ejecutar la consulta |
Consultando solo algunos campos y limitando la salida a n registros
| SELECT campo1,campo2, ... FROM tabla LIMIT (n, m) | |||||
| Ver código fuente | Ejecutar la consulta |
Consultando solo algunos campos y limitando la salida a los n primeros registros
| SELECT TOP N campo1,campo2, ... FROM tabla | |||||
| Ver código fuente | Ejecutar la consulta |
Consultando solo algunos campos y ordenando la salida
| SELECT campo1,campo2, ... FROM tabla ORDER BY campo_n [ASC|DESC], campo_m [ASC|DESC] | |||||
| Ver código fuente | Ejecutar la consulta |
Consulta seleccionando registros
| SELECT campo1, ... FROM tabla WHERE condicion | |||||
| Ver código fuente | Ejecutar la consulta |
| Operador | Tipo de campo |
Sintaxis | Descripción | Código fuente |
Ver ejemplo |
| = | Numérico | WHERE campo=num | Seleciona los registros que contienen en el campo un valor igual a num | Ver | Probar |
| = | Cadena | WHERE campo="cadena" | Seleciona los registros que contienen en el campo un cadena idéntica a cadena (*) | Ver | Probar |
| < | Numérico | WHERE campo<num | Seleciona los registros que contienen en el campo un valor menor a num | Ver | Probar |
| < | Cadena | WHERE campo<"cadena" | Seleciona los registros que contienen en el campo un cadena cuyos n primeros caracters son menores que los de la cadena, siendo n el número de caracteres que contiene cadena. (**) | Ver | Probar |
| <= | Numérico | WHERE campo<=num | Seleciona los registros que contienen en el campo un valor menor O igual a num | Ver | Probar |
| <= | Cadena | WHERE campo<="cadena" | Seleciona los registros que contienen en el campo un cadena cuyos n primeros caracters son menores que los de la cadena, siendo n el número de caracteres que contiene cadena y añade respecto al caso anterior la opción de que en caso de que ambos valores fueran iguales también los presentaría (**) | Ver | Probar |
| > | Numérico | WHERE campo>num | Seleciona los registros que contienen en el campo un valor mayor a num | Ver | Probar |
| > | Cadena | WHERE campo>"cadena" | Seleciona los registros que contienen en el campo un cadena cuyos n primeros caracters son mayores que los de la cadena, siendo n el número de caracteres que contiene cadena. (**) | Ver | Probar |
| >= | Numérico | WHERE campo>=num | Seleciona los registros que contienen en el campo un valor mayor O igual a num | Ver | Probar |
| >= | Cadena | WHERE campo>="cadena" | Seleciona los registros que contienen en el campo un cadena cuyos n primeros caracters son mayores que los de la cadena, siendo n el número de caracteres que contiene cadena y añade respecto al caso anterior la opción de que en caso de que ambos valores fueran iguales también los presentaría (**) | Ver | Probar |
| IN | Numérico o Cadena |
WHERE campoIN (valor1,valor2..) | Seleciona los registros que contienen en el campo valores que coinciden con alguno de los especificados dentro del paréntesis. Cuando se trata de valores no numéricoz han de ir entre comillas | Ver | Probar |
| BETWEEN | Numérico o Cadena |
WHERE campo BETWEEN valor1 AND valor2 | Seleciona los registros en los que los valores contenidos en el campo seleccionado están comprendidos en el intervalo valor1 (mínimo) – valor2 (máximo) incluyendo en la selección ambos extremos. Cuando los contenidos de los campos son cadenas sigue los mismos criterios que se indican para los demás operadores de comparación |
Ver | Probar |
| IS NULL | Cadena | WHERE campo IS NULL | Seleciona los registros en los que los valores contenidos en el campo seleccionado son NULOS | Ver | Probar |
| IS NOT NULL | Cadena | WHERE campo IS NOT NULL | Seleciona los registros en los que los valores contenidos en el campo seleccionado son NO NULOS | Ver | Probar |
| (*) Cuando se trata de cadenas de carácteres, el concepto menor que significa anterior en la ordenación de los caracteres según su código ASCII y mayor que significa posterior en esa misma ordenación. (**) La discriminación de Mayúsculas/Minúsculas dependerá del tipo de campo. Recuerda que los tipo BLOB si hacen esa discriminación, mientras que los de tipo TEXT son insensibles a Mayúsculas/Minúsculas. |
|||||
| Sintaxis | Descripción | Código fuente |
Ver ejemplo |
| WHERE campo LIKE '%cadena%' | Selecciona todos los registros que contengan la cadena en el campo indicado sea cual fuere su posición | Ver | Probar |
| WHERE campo LIKE 'cadena%' | Selecciona todos los registros en los que el campo indicado que contengan la cadena exactamente al principio del campo | Ver | Probar |
| WHERE campo LIKE '%cadena' | Selecciona todos los registros en los que el campo indicado que contengan la cadena exactamente al final del campo | Ver | Probar |
| WHERE campo LIKE '_cadena%' | Selecciona todos los registros en los que el primer caracter del campo puede ser cualquiera pero los siguientes han de ser exactamente los indicados en cadena pudiendo ir seguidos de cualesquiera otros caracteres | Ver | Probar |
Utilizando funciones sobre campos
| SELECT MAX(campo1), MIN (campo2), ... FROM tabla | ||||
| Ver código fuente | Ejecutar la consulta |
Aplicando la opción GROUP BY
Tal como señalamos al margen las funciones anteriores pueden aplicarse a grupos de registros seleccionados mediante un criterio GROUP BY (nombre del campo)| Ver código fuente | Ejecutar la consulta |
Creación de tablas a partir de la consulta de otra tabla
No es un infrecuente -yo diría yo que es lo habitual- relacionar tablas mediante campos con idéntico contenido.| Ver código fuente |
Una consulta conjunta de varias tablas
MySQL permite realizar consultas simúltaneas en registros situados en varias tablas.| SELECT tabla1.campo1, tabla2.campo2, ... FROM tabla1, tabla2 | ||||
| Ver código fuente | Ejecutar la consulta |
Formatos de fechas en consultas MySQL
Los formatos soportados por la función DATE_FORMAT format son los siguientes:| Formato | Descripción | Sintaxis | Ver código | Ver ejemplo |
| %d | Día del mes en formato de dos dígitos | DATE_FORMAT(Nacimiento,'%d') | Ver | Probar |
| %e | Día del mes en formato de uno ó dos dígitos | DATE_FORMAT(Nacimiento,'%e') | Ver | Probar |
| %D | Número de día seguido del sufijo en inglés | DATE_FORMAT(Nacimiento,'%D') | Ver | Probar |
| %m | Número del mes en formato de dos dígitos | DATE_FORMAT(Nacimiento,'%m') | Ver | Probar |
| %c | Número del mes en formato de uno o dos dígitos | DATE_FORMAT(Nacimiento,'%c') | Ver | Probar |
| %M | Nombre del mes (en inglés) | DATE_FORMAT(Nacimiento,'%M') | Ver | Probar |
| %b | Nombre del mes abreviado (en inglés) | DATE_FORMAT(Nacimiento,'%b') | Ver | Probar |
| %y | Número del año en formato de dos dígitos | DATE_FORMAT(Nacimiento,'%y') | Ver | Probar |
| %Y | Número del año en formato de cuatro dígitos | DATE_FORMAT(Nacimiento,'%Y') | Ver | Probar |
| %w | Número de día de la semana 0=Domingo ... 6=Sábado | DATE_FORMAT(Nacimiento,'%w') | Ver | Probar |
| %W | Nombre del día de la semana (en inglés) | DATE_FORMAT(Nacimiento,'%W') | Ver | Probar |
| %W | Nombre abreviado del día de la semana (en inglés) | DATE_FORMAT(Nacimiento,'%W') | Ver | Probar |
| %j | Número de día del año en formato de 3 dígitos | DATE_FORMAT(Nacimiento,'%j') | Ver | Probar |
| %U | Número de semana del año considerando el DOMINGO como primer día de la semana (en formato de dos dígitos) | DATE_FORMAT(Nacimiento,'%U') | Ver | Probar |
| %u | Número de semana del año considerando el LUNES como primer día de la semana (en formato de dos dígitos) | DATE_FORMAT(Nacimiento,'%u') | Ver | Probar |
| La fecha para los ejemplos siguientes la extraemos de una variable del tipo: $fecha="2005-10-12 14:23:42" ya que la tabla no contiene campos de fecha que incluyan horas, minutos y segundos |
||||
| %H | Hora con dos dígitos (formato 0 a 24 horas) | DATE_FORMAT($fecha,'%H') | Ver | Probar |
| %k | Hora con uno ó dos dígitos (formato 0 a 24 horas) | DATE_FORMAT($fecha,'%k') | ||
| %h | Hora con dos dígitos (formato 0 a 12 horas) | DATE_FORMAT($fecha,'%h') | ||
| %I | Hora con uno ó dos dígitos (formato 0 a 12 horas) | DATE_FORMAT($fecha,'%I') | ||
| %i | Minutos con dos dígitos | DATE_FORMAT($fecha,'%i') | ||
| %s | Segundos con dos dígitos | DATE_FORMAT($fecha,'%s') | ||
| %r | Hora completa (HH:mm:ss) en formato de 12 horas indicando AM ó PM | DATE_FORMAT($fecha,'%r') | ||
| %T | Hora completa (HH:mm:ss) en formato de 24 horas | DATE_FORMAT($fecha,'%T') | ||
| % texto | Incluye el texto que se indica detrás del % | DATE_FORMAT($fecha,'% texto') | ||
| %p | Añade AM ó PM dependiendo de la Hora | DATE_FORMAT($fecha,'%p') | ||
|
Se pueden combinar a voluntad varias opciones utilizando una sintaxis de este tipo: '% Hoy es: %d - %m - %Y % es %W % estamos en el mes de %M % <br>y van transcurridos %j % dias de este año.<br>Son las %r' |
||||