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

[MySQL] Consultadas agrupadas: GROUP BY (Vs) DISTINCT


La clasula GROUP BY nos permite 'agrupar' los resultados de una columna que sean iguales usando las funciones de agregación (COUNT, MAX, MIN, SUM, AVG)
La clausula 'DISTINCT' nos permite 'agrupar' los resultados de una columna que sean iguales


Por ejemplo, tomando una tabla 'inventario' que contiene una columna llamada 'idEstadoInventario'
La cual en varios registros lleva valores como 1, 2 ó 3, étc:

  • GROUP BY necesariamente funciona como un complemento de sumar, contar, obtener máximo ó mínimo, promediar, étc
    • Puedo sumar los valores que agrupo por el valor inicial
    • Puedo contar la cantidad de registros 1, 2 y 3
    • Puedo promediar, obtener el maximo y minimo aunque carece de sentido porque el promedio y el maximo o minimo son los mismo valores de 1, 2 y 3
  • DISTINCT buscará entre todos los registros y seleccioná la primera ocurrencia pero obviará las que sean iguales.


Por otra parte el uso de GROUP BY en si mismo:
  • Al usar una funcion de agregacion, se hará por el total de los resultados
  • Al 'agrupar' se realiza la misma implementación aunque diferenciando entre los registros de diferentes valores

[MySQL] Mas Funciones MySQL - FIRST - LAST - UCASE - LCASE - MID - LENGTH - ROUND - NOW

Otras funciones que resultaria interesante ir conociendo, para hallar un registro de una columna acorde al primer y ultimo caracter o número, pasarlo a mayúsculas o minúsculas, hacer una subcadena, medir su longitud, redondear números, obtener el tiempo o darle un formato son:

  • FIRST()
  • LAST()
  • UCASE()
  • LCASE()
  • MID()
  • LENGTH()
  • ROUND()
  • NOW()




FIRST() y LAST()


Las declaraciones FIRST y LAST nos permite encontrar el primer registro alfabético ó númerico y el ultimo respectivamente.
Su sintaxis tiene la forma:

SELECT FIRST(nombre_columna) FROM nombre_tabla;

El 'primero' o el 'último' se refiere simplemente a quien tenga el primer caracter del alfabeto o númerico.
Por ejemplo, podemos obtener el último 'ID' para conocer cúal sería el siguiente. Otro ejemplo

  SELECT FIRST (pais) AS 'Primer país' , LAST (pais) AS 'Último país' FROM dar10.usuarios ;

De tener una lista con todos los paises habidos y por haber el resultado podria ser el siguiente:

Primer país Último país
Abjasia Zimbabue





UCASE() y LCASE()


Las funciones UCASE y LCASE nos permite convertir las cadenas de caracteres a 'minúsculas' ó 'mayúsuclas' respectivamente independientemente de la forma en que haya sido guardadas.
Donde UCASE significa 'UPPER-CASE' (mayúsculas) y LCASE se refiere a 'Lower-Case' (minúsculas).

Su sintaxis tiene la forma:

SELECT UCASE(nombre_columna) FROM nombre_tabla;

El 'primero' o el 'último' se refiere simplemente a quien tenga el primer caracter del alfabeto o númerico.
Por ejemplo, podemos obtener el último 'ID' para conocer cúal sería el siguiente. Otro ejemplo

  SELECT UCASE (pais) AS 'En Mayúsculas' , LCASE (pais) AS 'En Minúsculas'
FROM dar10.usuarios WHERE id = 1;

Estas funciones nos convierten las cadenas de caracteres a mayúculas ó minúsculas independientemente de como estén escritas en la base.

En Mayúsculas En Minúsculas
ARGENTINA argentina

Como es natural, estas funciones solo funcion convirtiendo caracteres alfabeticos y no númericos, por lo cual no tendrá efecto sobre estos últimos caracteres.





MID()


La funcion MID funciona de la misma manera que como lo hace el método
public String substring(int beginIndex, int endIndex) de la clase String .

Su sintaxis tiene la forma:

SELECT MID(nombre_columna, indice_inicio, indice_fin) FROM nombre_tabla;

Del mismo que el método substring la funcion MID recibe 2 parametros adicionales al nombre de la columna a la cual quiero fraccionar la cadena de caracteres. Por ejemplo, una forma sencilla de obtener un sufijo o abreviatura de un pais en nuestra base de datos seria:

  SELECT MID (pais, 1, 3) AS 'abreviatura' , pais FROM dar10.usuarios;


abreviatura pais
arg argentina
bra brasil
bol bolivia
chi chile
col colombia
ecu ecuador
par paraguay
per perú
uru uruguay
ven venezuela

A diferencia de java, el indice NO comienza por cero sino por uno.
El segundo se puede obviar ya que por defecto es la longitud total de la cadena.





LENGTH()


La funcio LENGTH se utliza para medir la longitud total del campo de la columna ingresada.

Su sintaxis tiene la forma:

SELECT LENGTH(nombre_columna) FROM nombre_tabla;

  SELECT LENGTH (pais) AS 'Longitus' , pais FROM dar10.usuarios WHERE id = 1;


Longitud pais
9 argentina

Como es natural, estas funciones solo funcion convirtiendo caracteres alfabeticos y no númericos, por lo cual no tendrá efecto sobre estos últimos caracteres.





ROUND()


La funcion ROUND nos sirve para redondear las columnas que contengan principalmente los tipo DOUBLKE FLOAT DECIMAL, etc

Su sintaxis tiene la forma:

SELECT ROUND(nombre_columna) FROM nombre_tabla;

Por supuesto al no encontrar valores decimales o aplicarlos a cadena de caracteres, nos devolvera '0'. un pequeño ejemplo:

  SELECT ROUND (precio) AS 'Redondeado' , precio FROM dar10.venta ;

Estas funciones nos convierten las cadenas de caracteres a mayúculas ó minúsculas independientemente de como estén escritas en la base.

Redondeado precio
9.99 10
1.5 2
33.11 33






NOW()


La funcion NOW nos genera un registro adicional util para determinar en la tabla la fecha de la consulta. tiene el formato
yyyy-MM-dd HH:mm:ss
Su sintaxis tiene la forma:

NOW()

Esta funcion no recibi parametros, y puede llegar a ser util para agregar informacion a la consulta, No tiene mucho sentido ejecutarla sola ya que nos devolviria la misma informacion una y otra vez hasta alcanzar el número de registros totales

  SELECT NOW () AS 'Fecha de consulta' , pais FROM dar10.usuarios;

Fecha de consulta pais
2016-08-23 20:39:59 argentina

Como es natural, estas funciones solo funcion convirtiendo caracteres alfabeticos y no númericos, por lo cual no tendrá efecto sobre estos últimos caracteres.





[MySQL] Funciones de Agrupamiento COUNT - SUM - MAX - MIN - AVG

Funciones de agrupamiento

Los motores de base de datos nos ofrece funciones preestablecidas para agrupar los resultados de nuestras consultas para asi poder sumar numericamente, establecemer un maximo o un minimo, promediar, etc.
Estas funciones de agrupamiento son:
  • COUNT()
  • SUM()
  • MAX()
  • MIN()
  • AVG()
Todas estas funciones se usan junto con la declaración 'SELECT FROM', su sintaxis tiene la forma:

SELECT FUNCION(nombre_columna) FROM nombre_tabla;




COUNT()


La declaración COUNT nos permite contar literalmente la cantidad de registro que iremos encontrando para una columna que especificamos como parámetro de la función.
Su sintaxis tiene la forma:

SELECT COUNT(nombre_columna) FROM nombre_tabla;

La forma de usar esta funcion es con la declaración SELECT, nombrar a la funcion

  SELECT COUNT (pais) FROM dar10.usuarios ;

Esta consulta nos devolverá la cantidad total de registros que contenga la tabla, aunque sus registros sean nulos , los cuenta igual.
Lo interesante de esta funcion es aplicar algunas condiciones como contar la cantidad de registros que contenga tal valor en una columna, como por ejemplo:

  SELECT COUNT (pais) FROM dar10.usuarios WHERE pais = 'argentina' ;





SUM()


La declaración SUM nos permite sumar númericamente valores para una columna que especificamos como parámetro de la función.
Su sintaxis tiene la forma:

SELECT SUM(nombre_columna) FROM nombre_tabla;

SUMAR no implica explicitamente valores del tipo numericos, se puede hacer con columnas que contengan valores puramente letras, es decir del tipo alfanumericos.

  • Si lo hacemos con columnas que no contienen numeros, la suma dará el resultado de '0' (Cero)
  • Si lo aplicamos a campos que contienen valores alfanumericos, nos sumará solamente los números, aunque probablemente nos dará un resultado que no esperemos.
  • Lo mas normal, es usar la declaración SUM con columnas del tipo númerico.

  SELECT SUM (edad) AS 'Suma de edades' FROM dar10.usuarios WHERE edad => 15 ;





MAX() - MIN()


La declaraciones MAX y MIN nos dice a simple vista que que es lo que hacen.
Su sintaxis es igual a las anteriores:

SELECT MAX(nombre_columna) FROM nombre_tabla;

Al que SUMAR, para encontrar el maximo o minimo nos referimos a valores numericos, o alfanumericos pero solo tomara la parte numerica si la hay, de lo contrario el resultado será vacio. Ejemplo.


  SELECT MAX (edad) AS 'Maximo' , MIN (id) AS 'Minimo' FROM dar10.usuarios ;

NOTA: al tratarse de columnas, se separan mediantes comas ',' independientemente o no que se le apliquen funciones para su visualización.





AVG()


AVG es una abreviación de 'average' a lo que en español viene siendo 'promedio'.

Al igual que el resto de las funciones 'númericas' funciona mejor con columnas que sean de ese tipo, para columnas alfanumericas, solo tomará en cuenta esa parte y para los caracteres saldra un resultado de vacio. Ejemplo:

SELECT AVG(nombre_columna) FROM nombre_tabla;

Un pequeño ejemplo:

  SELECT AVG (edad) AS 'Promedio de Edades' FROM dar10.usuarios ;





[MySQL] INSERT - UPDATE - DELETE

Para llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Bases de Datos se utiliza el Lenguaje de Manipulación de datos, conocido por sus siglas en inglés DLM ('Data Language Manipulation'). Esas clausulas son, ademá de Select: INSERT; UPDATE y DELETE


Recordar que por otra parte para definir el contenido de la base de datos, se utiliza el Lenguaje de Definición de Dato, conocido por sus siglas en inglés DDL (' Data Definition Language'), las cuales era: CREATE, ALTER y DROP




INSERT


La declaración INSERT nos permite insertar registro en nuestra tabla de la base de datos.
Seguida de la declaracion INTO mas el nombre de la tabla, solo hay que tener en cuenta que hay el valor de campos en el orden en que fueron espeficados y que sólo NO podrán omitirse aquellos que fueron declarados NOT NULL
Su sintaxis tiene la forma:

INSERT INTO nombre_tabla
VALUES (valor1,valor2,valor3,...);

Otra variente es tambien especficar el nombre de las columnas se utilizan:

INSERT INTO nombre_tabla (nombre_columna1, nombre_columna2, nombre_columna3, ...)
VALUES (valor1,valor2,valor3,...);

NOTA: Hay que notar que el campo ID es utoincremental, por ende tomará el siguiente valor al ultimo que se haya ingresado o bien el ultimo según esté configurado.
Pequeño ejemplo:

  INSERT INTO `dar10`.`usuarios` (`nombre_usuario`, `mail`, `pais`)
VALUES ('dar10', 'dar10@comyr', 'argentina');

Valores NULL y NOT NULL

null significa "dato desconocido" o "valor inexistente".
No es lo mismo que un valor 0, una cadena vacía o una cadena literal "null" es decir que contenga las letras 'n' 'u' y 2 'l' como texto. A veces, puede desconocerse o no existir el dato correspondiente a algún campo de un registro. En estos casos decimos que el campo puede contener valores nulos.





UPDATE


Para editar un registro existente se usa la clausula UPDATE-SET-WHERE.

UPDATE nombre_tabla
SET nombre_columna = nuevo_valor, ...
WHERE nombre_columna = valor_existente;

Al hacer un UPDATE le indicamos el nombre de la tabla que vamos a modificar, le decimos que 'setee' en tal columna un nuevo valor, y para encontrar el registro que queremos modificar le damos una condicion con WHERE, generalmente suele ser el ID.

Pequeño ejemplo:

  UPDATE `dar10`.`usuarios`  
SET `mail`='dar10@comyr.com'  
WHERE `id`='52';





DELETE


Para borrar un registro se utiliza la declaración DELETE FROM-WHERE.
Su sintaxis es:

DELETE FROM nombre_tabla
WHERE nombre_columna = valor_existente;

Al igual que pasaba con UPDATE, para borrar necesitamos indicar desde donde vamos a eliminar un registro con DELETE FROM seguido del nombre de la table y una condicion con WHERE para que encuentre ese registro, generalmente también el ID.

Pequeño ejemplo:

 DELETE FROM `dar10`.`usuarios`
WHERE `id`='52';



[MySQL] Ordenamiento ORDER BY (ASC | DESC)

ORDER BY


La declaración 'ORDER BY' se utiliza en conjunto con 'SELECT columna FROM tabla' para ordenar los resultados de manera ascendente o descendente según queremos.

Sintaxis


 SELECT nombre_columna1, nombre_columna2
 FROM nombre_tabla
 ORDER BY nombre_columna ( ASC | DESC ), nombre_columna2 ( ASC | DESC )...


Ejemplo


Textualmente podría ser: "Quiero todos los campos de la tabla persona ORDENADOS por la edad de manera ascendente

En código MySQL: SELECT * FROM personas ORDER BY edad ASC;


En conjunto con la palabra ORDER BY se utiliza el modo en que van a ser ordenados, estos puden ser:
  • ASC, Ascendente.
  • DESC, Descendente.
No es estrictamente necesario especificar la forma de ordenamiento, ya que por defecto es ASC
Para utilizar mas de un criterio de ordenamiento los separamos por comas (,)


Demo Base Datos


Una pequeña demo de una base de datos para ir practicando.

DROP DATABASE IF EXISTS dar10;
CREATE DATABASE dar10;
USE dar10;
CREATE TABLE usuarios (
 id int(11) unsigned NOT NULL auto_increment,
 nombre_usuario varchar(40) NULL ,
 mail varchar(50) NOT NULL default 'email@noasignado' ,
 pais varchar(30) NOT NULL default 'Argentina',
 edad int NULL default '00',
  PRIMARY KEY  (`id`) 
  );
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('NES_1983', 'NES_1983@app.com', 'Japon', '33');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Schummy', 'schumacher@netmail.com', 'Alemania', '25');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('0123456789', '0123456789noreaply.com.ar', 'Argentina', '99');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Sandro_A', 'a_america@netmail.com', 'Brasil', '24');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('MargenCMV', 'margenCMV@imago.com', 'Perú', '29');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('perrocuco', 'perrocuco@D0T.com', 'Tucuman', '40');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('invitado1', '1invitado@app.com', 'Paraguay', '63');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('NoBad', 'NoBad@noreaply.com.ar', 'Brasil', '12');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('azul', 'azul@usuario.azul', 'México', '52');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('canal', 'canal@panama.pn', 'Panamá', '48');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('LionelM', 'LionelM@webmail.com', 'España', '29');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('pqCallas', 'porque@callas.vn', 'Venezuela', '25');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('elRey', 'elRey@app.com', 'España', '36');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('dialog', 'dialog@jquery.js', 'Alemania', '18');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('JulioRiver', 'JulioRiver@netmail.com', 'Perú', '35');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('controlStock', 'controlStock@imago.com', '', '19');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Jaimito', 'jaimito@noreaply.com.ar', 'Argentina', '5');
INSERT INTO `usuarios` ( nombre_usuario , pais , edad) VALUES ('FakePeople',  'Bolivia', '27');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('capitan_TSU', 'tsu@app.com', 'Japon', '22');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('PSP_2004', 'PSP_2004@mail.net', 'Estados Unidos', '12');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Maven', 'Maven@Apache.com', 'Estados Unidos', '15');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('ppp', 'pabloperes_pueblo@netmail.com', 'Alemania', '50');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('invisible', 'invisible@transparente.cc', '', '51');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Aaroon', 'Aaroon@webmail.com', 'Venezuela', '18');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('capuchino', 'capu@chino.cf', 'Paraguay', '63');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Jenniffer', 'Jenniffer@app.com', 'Uruguay', '25');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Arbolschwarzeneggy', 'schwarzenegger@app.com', 'Austia', '50');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('ayer', 'hoy@siempre.net', '', '34');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Ramon71', 'Ramon71@mail.net', 'México', '67');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('talvez', 'quizas@no.se', 'Perú', '56');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Legenda_celta', 'legenda_celta@mail.net', 'Escocia', '55');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('ventaHoraria', 'ventaHoraria@imago.com', '', '32');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('tunick', 'tunick@noreaply.com.ar', 'Argentina', '27');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('cortado', 'expresso@macchiato.cf', '', '31');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('LasPalmas', 'las_palmas@webmail.com', 'España', '100');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('JogoBonito', 'JogoBonito@webmail.com', 'Brasil', '28');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('ninjor', 'ninjor@net.com', '', '45');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('rocio', 'rocio@app.com', 'Tuquía', '54');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('JhonnyBoca', 'JhonnyBoca@mail,net', 'Chile', '20');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('skyNet', 'sky@net.net', 'Japon', '69');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('codigo', 'codigo@jjj.class', 'Escocia', '72');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Ant', 'Ant@Apache.com', 'Estados Unidos', '10');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('ArlisNes', 'ArlisNes@mail.net', 'Estados Unidos', '31');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('lungo', 'espresso@cafe.cf', 'Venezuela', '14');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Gi', 'giselap@varela.gov.ar', 'Argentina', '27');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('chococino', 'caramel@app.com', 'España', '38');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('morito', 'morito@net.com', 'Bolivia', '48');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('blacky', 'blacky@net.com', 'México', '27');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('datetimepicker', 'datetimepicker@jquery.js', 'Alemania', '26');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('CarlosCalvos', 'CC@webmail.com', 'Bolivia', '30');
INSERT INTO `usuarios` ( nombre_usuario , mail , pais , edad) VALUES ('Marrakesh', 'style@tea.com', 'Bolivia', '54');

SELECT * FROM usuarios ORDER BY edad ASC, pais DESC;

[MySQL] Sentencia WHERE, BETWEEN, LIKE y IN

WHERE


La sentencia WHERE se utiliza en conjunto con la declaración SELECT nombre_columna FROM nombre_tabla (en DML) para especificar que queremos los resultados que coincidan con una expresión lógica.

Sintaxis


 SELECT nombre_columna1, nombre_columna2
 FROM nombre_tabla
 WHERE nombre_columna [operador] valor


Ejemplo


Textualmente podría ser: "Quiero todos los campos de la tabla persona DONDE la edad sea igual a 27.

En código MySQL: SELECT * FROM personas WHERE edad = 27;

Operadores


Operador Descripción
 = Igual
 != Distinto
 < Menor
 > Mayor
 <= Menor Igual
 >= Mayor Igual
BETWEEN Entre (rango de valores)
LIKE Como

Mas Ejemplos


  • SELECT nombre, apellido, direccion FROM clientes WHERE pais = 'arg';
  • SELECT * FROM usuarios WHERE nickname != 'asdasd';
  • SELECT libro, autor WHERE anio > 2000;
  • SELECT * FROM auto WHERE modelo < 2010;
  • SELECT * FROM proveedores WHERE razon_social >= 'h';
    NOTA: en este caso buscará que la primer letra de cada resultado sea mayor o igual a H.


BETWEEN


La clausula BEWEEN se utiliza junto con la sentencia SELECT * FROM tabla WHERE columna para especificar un rango de valores. Estos valores pueden ser números, letras, o fechas.

Sintaxis


 SELECT nombre_columna1, nombre_columna2
 FROM nombre_tabla
 WHERE nombre_columna
 BETWEEN valor1 AND valor2


Ejemplo


Textualmente podría ser: "Quiero todos los campos de la tabla donde la edad SEA ENTRE 18 y 65 años.

En código MySQL: SELECT * FROM personas WHERE edad BETWEEN 18 AND 65;


Mas Ejemplos


  • SELECT nombre, apellido, direccion FROM clientes WHERE pais BETWEEN 'a' AND 'c';
  • SELECT * FROM usuarios WHERE nickname BETWEEN 'x' AND 'z';
  • SELECT libro, autor WHERE anio BETWEEN 2000 AND 2010;
  • SELECT * FROM auto WHERE modelo BETWEEN 2010 AND 2016;
  • SELECT * FROM proveedores WHERE razon_social BETWEEN 'h' AND 'k';

NOT BETWEEN


La clausula BETWEEN es igual a hacer:
  • SELECT * FROM autos WHERE modelo > 2000 && modelo < 2016;
Permitiendo filtrar resultados de un rango interno. La clausula NOT BETWEEN invierte los operadores mayor e igual respectivamente para filtrar un rango excluyente:




LIKE


La sentencia LIKE se utiliza en conjunto con la declaración SELECT * FROM tabla WHERE columna para filtrar por un patron, es decir resultados que contengan al menos una parte de lo que estoy buscando y no de manera textual.

Sintaxis


 SELECT nombre_columna1, nombre_columna2
 FROM nombre_tabla
 WHERE nombre_columna
 LIKE patron


Ejemplo


Textualmente podría ser: "Quiero todos los campos de la tabla persona donde el nombre sea COMO algo seguido 'ario'.

En código MySQL: SELECT * FROM personas WHERE nombre LIKE '%ario';
Si la tabla tuviese los registros DARIO y MARIO, traeria ambos como resultado, ya que el operador % actua como una o varias letras cualesquiera antes.


Operador Descripción
% Funciona como un comodin, coincidencia con cualquier numero de letras antes y después
_ Coincidencia con un único caracter.


Para poder incluir los caracteres '%' y '_' dentro de nuestra búsqueda de patrón, los deberemos escapear con '\' ej: '\%' y '\_'

NOT LIKE


Al igual que con BETWEEN , la declaración LIKE trae consigo su inversa con el prefijo NOT .
Si al ejecutar una consulta a la base de datos con LIKE me devuelve una pequeña porción (la marcada en verde), al anteponer el prefijo NOT me devolverá lo rojo.





IN


La declaración IN se utiliza en conjunto con WHERE para incluir múltiples valores al campo de la columna a filtrar.

Sintaxis


 SELECT nombre_columna1, nombre_columna2
 FROM nombre_tabla
 WHERE nombre_columna
 IN ('valor1', 'valor2', etc)


Ejemplo


Textualmente podría ser: "Quiero todos los campos de la tabla persona donde la edad SEA igual a 27, igual a 35, igual a 50.

En código MySQL: SELECT * FROM personas WHERE edad IN (27, 35, 50);


Funciona de la misma que forma poner muchos operadores logicos AND: && para declaración del tipo:
SELECT * FROM personas WHERE edad = 27 && edad = 35 && edad = 50;




Condiciones Lógicas

Una condición lógica es una función booleana, es decir 'verdadero o falso'. Suman, multiplican, niegan o afirman, incluyen o excluyen según sus propiedades lógicas.
A cada 'Entrada' se le aplica una condición lógica y ésta hace que el valor de 'salida' pueda cambiar.
Los operadores lógicos son:
  • Lógica Directa
    • AND: 'Y', es una inclusión de 2 o más condiciones lógicas.
      • a && b
    • OR: 'O', es un 'o' de inclusión de 2 o más condiciones lógicas.
      • a || b
    • XOR: 'O', es un 'o' de exclusión de 2 o más condiciones lógicas.
      • (a && b) || (!a && !b)
  • Lógica indirecta
    • NOT: 'NO', Es una negación
      • !a
    • NAND: 'No Y', es un AND negado.
      • !a && !b
    • NOR: 'NO O', es un OR negado.
      • !(a && b) || (!a && !b)
En Java se utilizan principalmente junto a estructuras de control, para afirmar o negar, reducir o aumentar las posibilidades de cambio según sea necesario, estas condiciones de 'a' y 'b' darán como resultado verdadero o falso, según las tablas de verdad.
En MySQL se utilizan junto a la clausula 'WHERE' para filtrar los resultados según sea necesario.


Tablas de Verdad

AND
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso
OR
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso
XOR
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Verdadero
NOT
Verdadero Falso
Falso Verdadero
NAND
Verdadero Verdadero Falso
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Verdadero
NOR
Verdadero Verdadero Falso
Verdadero Falso Verdadero
Falso Verdadero Falso
Falso Falso Verdadero




Por ejemplo:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
boolean verdadero = true;
boolean falso = false;
if(verdadero && falso){
 //La condicion 'a AND b' resulta falsa
 //Por ende no se entra en este if
}else if(verdadero || falso){
 System.out-println("Esta condicion 'a OR b' resulta verdadera y se ejecuta")
}else if((verdadero && falso) || (!verdadero && !falso)){
 //Llendo por partes:
 //'a AND b' es Falso
 //!verdadero(falso) OR !falso(verdadero) es verdadero
 // entonces: falso OR verdadero es verdadero y esto se ejecuta
}else if(!verdadero){
 //Condicion falsa no se ejecuta
}else if(!verdadero && !falso){
 //Condicion total falsa 
}else if(!(verdadero && falso) || (!verdadero && !falso)){
 //verdadero AND falso es falso, negada es verdadero
 //verdadero negada, AND falso negada es falso
 System.out.println("verdadero OR falso es verdadero");
}


Para el caso de MySQL, al utilizar las condiciones filtraremos los resultados de una u otra manera, por ejemplo:


1
2
3
4
5
6
SELECT * FROM dar10.miTabla WHERE id > 7 && pais = 'arg';
SELECT * FROM dar10.miTabla WHERE id > 7 || pais = 'arg';
SELECT * FROM dar10.miTabla WHERE (id > 7 && pais = 'arg') || (!(id > 7) && !(pais = 'arg'));
SELECT * FROM dar10.miTabla WHERE !(id > 7);
SELECT * FROM dar10.miTabla WHERE !(id > 7) || !(pais = 'arg');
SELECT * FROM dar10.miTabla WHERE !((id > 7) && (pais = 'arg')) || (!(id > 7) && !(pais = 'arg');


También podemos crear expresiones lógicas con el álgebra de boolw, disponiendo de varios operadores de comparación.
Estos operadores se aplican sobre los tipos de variables o columnas, fechas, textos, o numeros, y devuelven una expresión booleana (Verdadero o Falso).


Operador Descripción
<= Menor igual
< Menor
> Mayor
>= Mayor igual


[MYSQL] DDL y DML - Consultas Basicas

SQL: El lenguaje de consulta estructurado (Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales y permite especificar diferentes tipos de operaciones en estas.

  • Una de las caracteristicas es el uso del calculo y el algebra para realizar consultas y recuperar la informacion que nos interese
  • Existen 2 tipos de lenguajes en su manejo DDL y DML:
  1. DDL (Data Definition Language) Lenguaje de Definicion de Datos
  2. DML (Data Manipulation Language) Lenguaje de Manipulacion de Datos
QUE ES DDL?
Es el lenguaje que se usa para crear bases de datos y tablas, modificar sus estructuras y sus permisos y privilegios.

Los comando mas comunes son:

CREATE TABLE - ALTER TABLE - DROP TABLE - CREATE INDEX - DROP INDEX

QUE ES DML?
Es el lenguaje que se usa para modificar y obtener datos de una base de datos.

Los comando mas conocidos son:

SELECT - UPDATE - DELETE - INSERT INTO



Comandos DDL


CREATE TABLE
  1. CREATE TABLE gente{
  2. nombre VARCHAR(20),
  3. fecha DATE
  4. }

ALTER TABLE
  1. ALTER TABLE autos RENAME coches;

Se utiliza para modificar los atributos de la tabla, como su nombre, el tipo de variables de sus columnas, eliminar columnas, agregarlas, etc
Mas info en: http://dev.mysql.com/doc/refman/5.7/en/alter-table-examples.html


DROP TABLE
  1. DROP TABLE gente;
  2.  
  3. -- para eliminar el error en caso de no existir
  4.  
  5. DROP TABLE IF EXITS gente;



Comandos DLL


SELECT
  1. SELECT * FROM hibernate.personas;

"Select" nos permite seleccionar para ver las columnas y sus registros
El * es un comodin que indica que quiero ver todas las columnas de la tabla.
De lo contrario para ver una especifica lo escribo: "nombreDeLaTabla.nombreDeLaColumna"
Se separan con comas si quiero utilizar mas de una tabla a mostrar.
"hibernate.personas" es "laBasedeDatos.nombreDeLaTabla" de la cual quiero ver los resultados.
Del mismo modo, se separan con comas si quiero ver resultados de mas de una tabla.


INSERT INTO
  1. INSERT INTO nombre_de_la_tabla ( Columna1, columna 2, …. ) VALUES ( Valor1, valor2, ….) ;

UPDATE
  1. UPDATE nombre_de_la_tabla SET nombre_de_la_columna = 'nuevo_valor' ;

    Tiene mas sentido utilizar un UPDATE junto con la clausula WHERE indicandole que modifique el campo de una columna donde exista cirta condicion o el valor exacto.

    UPDATE auto SET precio = 990099 WHERE id = 5 ;

DELETE
  1. DELETE FROM nombre_de_la_tabla WHERE nombre_de_la_columna = > 1 ;

    idem anterior, tiene sentido junto con la clausula WHERE indicandole que elimine el campo de una columna donde se cumpla un valor exacto o una condicion, ej ,ayor a 1.

Java 25 de 2025