0% encontró este documento útil (0 votos)
33 vistas18 páginas

MySQL Basico

El documento describe diferentes tipos de datos básicos que se pueden utilizar para campos en una tabla de base de datos, incluyendo cadenas de caracteres (varchar, char), enteros (integer), decimales (float), y explica cómo seleccionar el tipo de datos apropiado para cada campo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • join,
  • esquemas,
  • alta disponibilidad,
  • diagramas ER,
  • desnormalización,
  • versionado,
  • fechas y horas,
  • rendimiento,
  • integer,
  • restauración
0% encontró este documento útil (0 votos)
33 vistas18 páginas

MySQL Basico

El documento describe diferentes tipos de datos básicos que se pueden utilizar para campos en una tabla de base de datos, incluyendo cadenas de caracteres (varchar, char), enteros (integer), decimales (float), y explica cómo seleccionar el tipo de datos apropiado para cada campo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • join,
  • esquemas,
  • alta disponibilidad,
  • diagramas ER,
  • desnormalización,
  • versionado,
  • fechas y horas,
  • rendimiento,
  • integer,
  • restauración

Tipos de datos bsicos de un campo de una tabla

Ya explicamos que al crear una tabla debemos resolver qu campos


(columnas) tendr y que tipo de datos almacenar cada uno de ellos, es
decir, su estructura. Estos son algunos tipos de datos bsicos:
- varchar: se usa para almacenar cadenas de caracteres. Una cadena es una
secuencia de caracteres. Se coloca entre comillas (simples): 'Hola'. El tipo
"varchar" define una cadena de longitud variable en la cual determinamos el
mximo de caracteres. Puede guardar hasta 255 caracteres. Para almacenar
cadenas de hasta 30 caracteres, definimos un campo de tipo varchar(30). Si
asignamos una cadena de caracteres de mayor longitud que la definida, la
cadena se corta. Por ejemplo, si definimos un campo de tipo varchar(10) y le
asignamos la cadena 'Buenas tardes', se almacenar 'Buenas tar'
ajustndose a la longitud de 10 caracteres.
- char: si almacenamos un dato de tipo cadena con char(10) por ejemplo y si
guardamos un dato que ocupe 4 caracteres, los 6 restantes ocuparan
espacio innecesario.
- integer: se usa para guardar valores numricos enteros, de -2000000000 a
2000000000 aprox. Definimos campos de este tipo cuando queremos
representar, por ejemplo, cantidades.
- float: se usa para almacenar valores numricos decimales. Se utiliza como
separador el punto (.). Definimos campos de este tipo para precios, por
ejemplo.
Antes de crear una tabla debemos pensar en sus campos y optar por el tipo
de dato adecuado para cada uno de ellos. Por ejemplo, si en un campo
almacenaremos nmeros enteros, el tipo "float" sera una mala eleccin; si
vamos a guardar precios, el tipo "float" es correcto, no as "integer" que no
tiene decimales.
Ya explicamos que al crear una tabla debemos elegir la estructura
adecuada, esto es, definir los campos y sus tipos ms precisos, segn el
caso. Por ejemplo, si un campo numrico almacenar solamente valores
enteros positivos el tipo "integer" con el atributo "unsigned" es ms
adecuado que, por ejemplo un "float".
Hasta ahora hemos visto 3 tipos de datos: varchar, integer (con y sin signo)
y float (con y sin signo). Hay ms tipos, incluso, subtipos.
Los valores que podemos guardar son:
A) TEXTO: Para almacenar texto usamos cadenas de caracteres. Las
cadenas se colocan entre comillas simples. Podemos almacenar dgitos con
los que no se realizan operaciones matemticas, por ejemplo, cdigos de
identificacin, nmeros de documentos, nmeros telefnicos. Tenemos los
siguientes tipos: varchar, char y text.
B) NUMEROS: Existe variedad de tipos numricos para representar enteros,
negativos, decimales. Para almacenar valores enteros, por ejemplo, en

campos que hacen referencia a cantidades, precios, etc., usamos el tipo


integer. Para almacenar valores con decimales utilizamos: float o decimal.
C) FECHAS Y HORAS: para guardar fechas y horas dispone de varios tipos:
date (fecha), datetime (fecha y hora), time (hora), year (ao) y timestamp.
D) OTROS TIPOS: enum y set representan una enumeracin y un conjunto
respectivamente. Lo veremos ms adelante.
E) Otro valor que podemos almacenar es el valor "null". El valor 'null'
significa valor desconocido o "dato inexistente", ya lo estudiamos. No es lo
mismo que 0 o una cadena vaca.
Problema:
Para almacenar informacin de los libros de una librera necesitamos los
siguientes campos:
-titulo, cadena de caracteres de 40 de longitud,
-autor, cadena de caracteres de 30 de longitud,
-editorial, caracteres de 15 de longitud,
-precio, valor numrico con decimales y
-cantidad, valor numrico entero.
Al crear la tabla, entonces, elegimos el tipo de dato ms adecuado para
cada campo:
create table libros(
titulo varchar(40),
autor varchar(20),
editorial varchar(15),
precio float,
cantidad integer
);
Vemos la estructura de la tabla:
describe libros;
Ingresamos algunos registros:
insert into libros (titulo,autor,editorial,precio,cantidad)
values ('El aleph','Borges','Emece',45.50,100);
insert into libros (titulo,autor,editorial,precio,cantidad)
values ('Alicia en el pais de las maravillas','Lewis Carroll',
'Planeta',25,200);
insert into libros (titulo,autor,editorial,precio,cantidad)
values ('Matematica estas ahi','Paenza','Planeta',15.8,200);
Veamos los registros cargados:
select * from libros;
Tengamos en cuenta que es lo mismo escribir:
select * from libros;
que escribir
select codigo,titulo,autor,precio from libros;

Hemos aprendido cmo ver todos los registros de una tabla:


select nombre, clave from usuarios;
El comando "select" recupera los registros de una tabla. Detallando los
nombres de los campos separados por comas, indicamos que seleccione
todos los campos de la tabla que nombramos.
Existe una clusula, "where" que es opcional, con ella podemos especificar
condiciones para la consulta "select". Es decir, podemos recuperar algunos
registros, slo los que cumplan con ciertas condiciones indicadas con la
clusula "where". Por ejemplo, queremos ver el usuario cuyo nombre es
"MarioPerez", para ello utilizamos "where" y luego de ella, la condicin:
select nombre, clave from usuarios where nombre='MarioPerez';
Para las condiciones se utilizan operadores relacionales (tema que
trataremos ms adelante en detalle). El signo igual(=) es un operador
relacional. Para la siguiente seleccin de registros especificamos una
condicin que solicita los usuarios cuya clave es igual a 'bocajunior':
select nombre, clave from usuarios where clave='bocajunior';
Si ningn registro cumple la condicin establecida con el "where", no
aparecer ningn registro.

Operadores Relacionales = <> < <= > >=


Hemos aprendido a especificar condiciones de igualdad para seleccionar registros de una
tabla; por ejemplo:
select titulo,autor,editorial from libros where autor='Borges';
Utilizamos el operador relacional de igualdad.
Los operadores relacionales vinculan un campo con un valor para que MySQL compare cada
registro (el campo especificado) con el valor dado.
Los operadores relacionales son los siguientes:
=
<>
>
<
>=
<=

igual
distinto
mayor
menor
mayor o igual
menor o igual

Podemos seleccionar los registros cuyo autor sea diferente de 'Borges', para ello usamos la
condicin:
select titulo,autor,editorial from libros where autor <> 'Borges';
Podemos comparar valores numricos. Por ejemplo, queremos mostrar los libros cuyos precios
sean mayores a 20 pesos:
select titulo,autor,editorial,precio from libros where precio > 20;
Tambin, los libros cuyo precio sea menor o igual a 30:

select titulo,autor,editorial,precio from libros where precio <= 30;

CLAVES PRIMARIAS
Una clave primaria es un campo (o varios) que identifica 1 solo registro (fila)
en una tabla.
Para un valor del campo clave existe solamente 1 registro. Los valores no se
repiten ni pueden ser nulos.
Veamos un ejemplo, si tenemos una tabla con datos de personas, el nmero
de documento puede establecerse como clave primaria, es un valor que no
se repite; puede haber personas con igual apellido y nombre, incluso el
mismo domicilio (padre e hijo por ejemplo), pero su documento ser
siempre distinto.
Si tenemos la tabla "usuarios", el nombre de cada usuario puede
establecerse como clave primaria, es un valor que no se repite; puede haber
usuarios con igual clave, pero su nombre de usuario ser siempre distinto.

Valores null.
Analizaremos la estructura de una tabla que vemos al utilizar el comando
"describe". Tomamos como ejemplo la tabla "libros":
Field

Type

Null

Key

Default Extra

______________________________________________________________________
codigo

int(11)

7 b..

NO

titulo
autor

varchar(20)

11 b..

YES

(NULL)

varchar(30)

11 b..

YES

(NULL)

editorialvarchar(15)
precio

float

11 b..

YES
5 b..

PRI

auto_increment

(NULL)
YES

(NULL)

La primera columna indica el tipo de dato de cada campo.


La segunda columna "Null" especifica si el campo permite valores nulos;
vemos que en el campo "codigo", aparece "NO" y en las dems "YES", esto
significa que el primer campo no acepta valores nulos (porque es clave
primaria) y los otros si los permiten.
La tercera columna "Key", muestra los campos que son clave primaria; en el
campo "codigo" aparece "PRI" (es clave primaria) y los otros estn vacos,
porque no son clave primaria.
La cuarta columna "Default", muestra los valores por defecto, esto es, los
valores que MySQL ingresa cuando omitimos un dato o colocamos un valor
invlido; para todos los campos, excepto para el que es clave primaria, el
valor por defecto es "null".
La quinta columna "Extra", muestra algunos atributos extra de los campos;
el campo "codigo" es "auto_increment".

Vamos a explicar los valores nulos.


"null' significa "dato desconocido" o "valor inexistente". No es lo mismo que
un valor 0, una cadena vaca o una cadena literal "null".
A veces, puede desconocerse o no existir el dato correspondiente a algn
campo de un registro. En estos casos decimos que el campo puede contener
valores nulos. Por ejemplo, en nuestra tabla de libros, podemos tener
valores nulos en el campo "precio" porque es posible que para algunos
libros no le hayamos establecido el precio para la venta.
En contraposicin, tenemos campos que no pueden estar vacos jams, por
ejemplo, los campos que identifican cada registro, como los cdigos de
identificacin, que son clave primaria.
Por defecto, es decir, si no lo aclaramos en la creacin de la tabla, los
campos permiten valores nulos.
Imaginemos que ingresamos los datos de un libro, para el cual an no
hemos definido el precio:
insert into libros (titulo,autor,editorial,precio)
values ('El aleph','Borges','Planeta',null);
Note que el valor "null" no es una cadena de caracteres, no se coloca entre
comillas.
Si un campo acepta valores nulos, podemos ingresar "null" cuando no
conocemos el valor.
Los campos establecidos como clave primaria no aceptan valores nulos.
Nuestro campo clave primaria, est definido "auto_increment"; si
intentamos ingresar el valor "null" para este campo, no lo tomar y seguir
la secuencia de incremento.
El campo "titulo", no debera aceptar valores nulos, para establecer este
atributo debemos crear la tabla con la siguiente sentencia:
create table libros(
codigo int auto_increment,
titulo varchar(20) not null
autor varchar(30),
editorial varchar(15),
precio float,
primary key (codigo)
);
Entonces, para que un campo no permita valores nulos debemos
especificarlo luego de definir el campo, agregando "not null". Por defecto,
los campos permiten valores nulos, pero podemos especificarlo igualmente
agregando "null".
Explicamos que "null" no es lo mismo que una cadena vaca o un valor 0
(cero).
Para recuperar los registros que contengan el valor "null" en el campo
"precio" no podemos utilizar los operadores relacionales vistos

anteriormente: = (igual) y <> (distinto); debemos utilizar los operadores "is


null" (es igual a null) y "is not null" (no es null):
select * from libros
where precio is null;
La sentencia anterior tendr una salida diferente a la siguiente:
select * from libros
where precio=0;
Con la primera sentencia veremos los libros cuyo precio es igual a "null"
(desconocido); con la segunda, los libros cuyo precio es 0.
Igualmente para campos de tipo cadena, las siguientes sentencias "select"
no retornan los mismos registros:
select * from libros where editorial is null;
select * from libros where editorial='';
Con la primera sentencia veremos los libros cuya editorial es igual a "null",
con la segunda, los libros cuya editorial guarda una cadena vaca.

Columnas calculadas.
Es posible obtener salidas en las cuales una columna sea el resultado
de un clculo y no un campo de una tabla.
Si queremos ver los ttulos, precio y cantidad de cada libro escribimos
la siguiente sentencia:
select titulo,precio,cantidad
from libros;
Si queremos saber el monto total en dinero de un ttulo podemos
multiplicar el precio por la cantidad por cada ttulo, pero tambin
podemos hacer que MySQL realice el clculo y lo incluya en una
columna extra en la salida:
select titulo, precio,cantidad,precio*cantidad
from libros;
Si queremos saber el precio de cada libro con un 10% de descuento
podemos incluir en la sentencia los siguientes clculos:
select titulo, precio,precio*0.1,precio-(precio*0.1)
from libros;

Funciones para el manejo de cadenas.


RECUERDE que NO debe haber espacios entre un nombre de funcin
y los parntesis porque MySQL puede confundir una llamada a una
funcin con una referencia a una tabla o campo que tenga el mismo
nombre de una funcin.
MySQL tiene algunas funciones para trabajar con cadenas de
caracteres. Estas son algunas:

-ord(caracter): Retorna el cdigo ASCII para el caracter enviado como


argumento. Ejemplo:
select ord('A');
retorna 65.
-char(x,..): retorna una cadena con los caracteres en cdigo ASCII de
los enteros enviados como argumentos. Ejemplo:
select char(65,66,67);
retorna "ABC".
-concat(cadena1,cadena2,...): devuelve la cadena resultado de
concatenar los argumentos. Ejemplo:
select concat('Hola,',' ','como esta?');
retorna "Hola, como esta?".
-concat_ws(separador,cadena1,cadena2,...): "ws" son las iniciales de
"with separator". El primer argumento especifica el separador que
utiliza para los dems argumentos; el separador se agrega entre las
cadenas a concatenar. Ejemplo:
select concat_ws('-','Juan','Pedro','Luis');
retorna "Juan-Pedro-Luis".
-find_in_set(cadena,lista de cadenas): devuelve un valor entre de 0 a
n (correspondiente a la posicin), si la cadena envidada como primer
argumento est presente en la lista de cadenas enviadas como
segundo argumento. La lista de cadenas enviada como segundo
argumento es una cadena formada por subcadenas separadas por
comas. Devuelve 0 si no encuentra "cadena" en la "lista de cadenas".
Ejemplo:
select find_in_set('hola','como esta,hola,buen dia');
retorna 2, porque la cadena "hola" se encuentra en la lista de
cadenas, en la posicin 2.
-length(cadena): retorna la longitud de la cadena enviada como
argumento. Ejemplo:
select length('Hola');
devuelve 4.
- locate(subcadena,cadena): retorna la posicin de la primera
ocurrencia de la subcadena en la cadena enviadas como argumentos.
Devuelve "0" si la subcadena no se encuentra en la cadena. Ejemplo:
select locale('o','como le va');
retorna 2.
- position(subcadena in cadena): funciona como "locate()". Devuelve
"0" si la subcadena no se encuentra en la cadena. Ejemplo:
select position('o' in 'como le va');
retorna 2.
- locate(subcadena,cadena,posicioninicial): retorna la posicin de la
primera ocurrencia de la subcadena enviada como primer argumentos
en la cadena enviada como segundo argumento, empezando en la

posicin enviada como tercer argumento. Devuelve "0" si la


subcadena no se encuentra en la cadena. Ejemplos:
select locate('ar','Margarita',1);
retorna 1.
select locate('ar','Margarita',3);
retorna 5.
- instr(cadena,subcadena): retorna la posicin de la primera
ocurrencia de la subcadena enviada como segundo argumento en la
cadena enviada como primer argumento. Ejemplo:
select instr('como le va','om');
devuelve 2.
- lpad(cadena,longitud,cadenarelleno): retorna la cadena enviada
como primer argumento, rellenada por la izquierda con la cadena
enviada como tercer argumento hasta que la cadena retornada tenga
la longitud especificada como segundo argumento. Si la cadena es
ms larga, la corta. Ejemplo:
select lpad('hola',10,'0');
retorna "000000hola".
- rpad(cadena,longitud,cadenarelleno): igual que "lpad" excepto que
rellena por la derecha.
- left(cadena,longitud): retorna la cantidad (longitud) de caracteres de
la cadena comenzando desde la inquierda, primer caracter. Ejemplo:
select left('buenos dias',8);
retorna "buenos d".
- right(cadena,longitud): retorna la cantidad (longitud) de caracteres
de la cadena comenzando desde la derecha, ltimo caracter. Ejemplo:
select right('buenos dias',8);
retorna "nos dias".
- substring(cadena,posicion,longitud): retorna una subcadena de
tantos caracteres de longitud como especifica en tercer argumento,
de la cadena enviada como primer argumento, empezando desde la
posicin especificada en el segundo argumento. Ejemplo:
select substring('Buenas tardes',3,5);
retorna "enas".
- substring(cadena from posicion for longitud): variante de
"substring(cadena,posicion,longitud)". Ejemplo:
select substring('Buenas tardes' from 3 for 5);
mid(cadena,posicion,longitud):
igual
que
"substring(cadena,posicion,longitud)". Ejemplo:
select mid('Buenas tardes' from 3 for 5);
retorna "enas".
- substring(cadena,posicion): retorna la subcadena de la cadena
enviada como argumento, empezando desde la posicin indicada por
el segundo argumento. Ejemplo:

select substring('Margarita',4);
retorna "garita".
-substring(cadena
from
posicion):
variante
de
"substring(cadena,posicion)". Ejemplo:
select substring('Margarita' from 4);
retorna "garita".
-substring_index(cadena,delimitador,ocurrencia):
retorna
la
subcadena de la cadena enviada como argumento antes o despus
de la "ocurrencia" de la cadena enviada como delimitador. Si
"ocurrencia" es positiva, retorna la subcadena anterior al delimitador
(comienza desde la izquierda); si "ocurrencia" es negativa, retorna la
subcadena posterior al delimitador (comienza desde la derecha).
Ejemplo:
select substring_index( 'margarita','ar',2);
retorna "marg", todo lo anterior a la segunda ocurrencia de "ar".
select substring_index( 'margarita','ar',-2);
retorna "garita", todo lo posterior a la segunda ocurrencia de "ar".
-ltrim(cadena): retorna la cadena con los espacios de la izquierda
eliminados. Ejemplo:
select ltrim('
retorna

Hola

');

"Hola
"
- rtrim(cadena): retorna la cadena con los espacios de la derecha
eliminados. Ejemplo:
select rtrim(' Hola ');
retorna
" Hola"
-trim([[both|leading|trailing] [subcadena] from] cadena): retorna una
cadena igual a la enviada pero eliminando la subcadena prefijo y/o
sufijo. Si no se indica ningn especificador (both, leading o trailing) se
asume "both" (ambos). Si no se especifica prefijos o sufijos elimina los
espacios. Ejemplos:
select trim(' Hola ');
retorna 'Hola'.
select trim (leading '0' from '00hola00');
retorna "hola00".
select trim (trailing '0' from '00hola00');
retorna "00hola".
select trim (both '0' from '00hola00');
retorna "hola".
select trim ('0' from '00hola00');
retorna "hola".

select trim (' hola ');


retorna "hola".
-replace(cadena,cadenareemplazo,cadenareemplazar):
retorna
la
cadena con todas las ocurrencias de la subcadena reemplazo por la
subcadena a reemplazar. Ejemplo:
select replace('xxx.mysql.com','x','w');
retorna "www.mysql.com'.
-repeat(cadena,cantidad): devuelve una cadena consistente en la
cadena repetida la cantidad de veces especificada. Si "cantidad" es
menor o igual a cero, retorna una cadena vaca. Ejemplo:
select repeat('hola',3);
retorna "holaholahola".
-reverse(cadena): devuelve la cadena invirtiendo el order de los
caracteres. Ejemplo:
select reverse('Hola');
retorna "aloH".
-insert(cadena,posicion,longitud,nuevacadena): retorna la cadena con
la nueva cadena colocndola en la posicin indicada por "posicion" y
elimina la cantidad de caracteres indicados por "longitud". Ejemplo:
select insert('buenas tardes',2,6,'xx');
retorna ""bxxtardes".
-lcase(cadena) y lower(cadena): retornan la cadena con todos los
caracteres en minsculas. Ejemplo:
select lower('HOLA ESTUDIAnte');
retorna "hola estudiante".
select lcase('HOLA ESTUDIAnte');
retorna "hola estudiante".
-ucase(cadena) y upper(cadena): retornan la cadena con todos los
caracteres en maysculas. Ejemplo:
select upper('HOLA ESTUDIAnte');
retorna "HOLA ESTUDIANTE".
select ucase('HOLA ESTUDIAnte');
retorna "HOLA ESTUDIANTE".
-strcmp(cadena1,cadena2): retorna 0 si las cadenas son iguales, -1 si
la primera es menor que la segunda y 1 si la primera es mayor que la
segunda. Ejemplo:
select strcmp('Hola','Chau');
retorna 1

Funciones para el uso de fecha y hora.


MySQL tiene algunas funciones para trabajar con fechas y horas.
Estas son algunas:

-adddate(fecha, interval expresion): retorna la fecha agregndole el


intervalo especificado. Ejemplos: adddate('2006-10-10',interval 25
day) retorna "2006-11-04". adddate('2006-10-10',interval 5 month)
retorna "2007-03-10".
-adddate(fecha, dias): retorna la fecha agregndole a fecha "dias".
Ejemplo: adddate('2006-10-10',25), retorna "2006-11-04".
-addtime(expresion1,expresion2): agrega expresion2 a expresion1 y
retorna el resultado.
-current_date: retorna la fecha de hoy con formato "YYYY-MM-DD" o
"YYYYMMDD".
-current_time: retorna la hora actual con formato "HH:MM:SS" o
"HHMMSS".
-date_add(fecha,interval expresion tipo) y date_sub(fecha,interval
expresion tipo): el argumento "fecha" es un valor "date" o "datetime",
"expresion" especifica el valor de intervalo a ser aadido o substrado
de la fecha indicada (puede empezar con "-", para intervalos
negativos), "tipo" indica la medida de adicin o substraccin. Ejemplo:
date_add('2006-08-10', interval 1 month) retorna "2006-09-10";
date_add('2006-08-10', interval -1 day) retorna "2006-09-09";
date_sub('2006-08-10 18:55:44', interval 2 minute) retorna "2006-0810 18:53:44"; date_sub('2006-08-10 18:55:44', interval '2:3'
minute_second) retorna "2006-08-10 18:52:41". Los valores para
"tipo" pueden ser: second, minute, hour, day, month, year,
minute_second (minutos y segundos), hour_minute (horas y minutos),
day_hour (das y horas), year_month (ao y mes), hour_second (hora,
minuto y segundo), day_minute (dias, horas y minutos),
day_second(dias a segundos).
-datediff(fecha1,fecha2): retorna la cantidad de das entre fecha1 y
fecha2.
-dayname(fecha): retorna el nombre del da de la semana de la fecha.
Ejemplo: dayname('2006-08-10') retorna "thursday".
-dayofmonth(fecha): retorna el da del mes para la fecha dada, dentro
del rango 1 a 31. Ejemplo: dayofmonth('2006-08-10') retorna 10.
-dayofweek(fecha): retorna el ndice del da de semana para la fecha
pasada como argumento. Los valores de los ndices son: 1=domingo,
2=lunes,... 7=sbado). Ejemplo: dayofweek('2006-08-10') retorna 5, o
sea jueves.

-dayofyear(fecha): retorna el da del ao para la fecha dada, dentro


del rango 1 a 366. Ejemplo: dayofmonth('2006-08-10') retorna 222.
-extract(tipo from fecha): extrae partes de una fecha.
Ejemplos:
extract(year from '2006-10-10'), retorna "2006".
extract(year_month from '2006-10-10 10:15:25') retorna "200610".
extract(day_minute from '2006-10-10 10:15:25') retorna "101015";
Los valores para tipo pueden ser: second, minute, hour, day, month,
year,
minute_second,
hour_minute,
day_hour,
year_month,
hour_second (horas, minutos y segundos), day_minute (das, horas y
minutos), day_second (das a segundos).
-hour(hora): retorna la hora para el dato dado, en el rango de 0 a 23.
Ejemplo: hour('18:25:09') retorna "18";
-minute(hora): retorna los minutos de la hora dada, en el rango de 0 a
59.
-monthname(fecha): retorna el nombre del mes de la fecha dada.
Ejemplo: monthname('2006-08-10') retorna "August".
-month(fecha): retorna el mes de la fecha dada, en el rango de 1 a
12.
-now() y sysdate(): retornan la fecha y hora actuales.
-period_add(p,n): agrega "n" meses al periodo "p", en el formato
"YYMM" o "YYYYMM"; retorna un valor en el formato "YYYYMM". El
argumento "p" no es una fecha, sino un ao y un mes. Ejemplo:
period_add('200608',2) retorna "200610".
-period_diff(p1,p2): retorna el nmero de meses entre los perodos
"p1" y "p2", en el formato "YYMM" o "YYYYMM". Los argumentos de
perodo no son fechas sino un ao y un mes. Ejemplo:
period_diff('200608','200602') retorna 6.
-second(hora): retorna los segundos para la hora dada, en el rango de
0 a 59.

-sec_to_time(segundos): retorna el argumento "segundos" convertido


a horas, minutos y segundos. Ejemplo: sec_to_time(90) retorna
"1:30".
-timediff(hora1,hora2): retorna la cantidad de horas, minutos y
segundos entre hora1 y hora2.
-time_to_sec(hora): retorna el argumento "hora" convertido en
segundos.
-to_days(fecha): retorna el nmero de da (el nmero de da desde el
ao 0).
-weekday(fecha): retorna el ndice del da de la semana para la fecha
pasada como argumento. Los ndices son: 0=lunes, 1=martes,...
6=domingo). Ejemplo: weekday('2006-08-10') retorna 3, o sea jueves.
-year(fecha): retorna el ao de la fecha dada, en el rango de 1000 a
9999. Ejemplo: year('06-08-10') retorna "2006"

Operadores Lgicos (and - or - not)


Hasta el momento, hemos aprendido a establer una condicin con
"where" utilizando operadores relacionales. Podemos establecer ms
de una condicin con la clusula "where", para ello aprenderemos los
operadores lgicos.
Son los siguientes:
- and, significa "y",
- or, significa "y/o",
- xor, significa "o",
- not, significa "no", invierte el resultado
- (), parntesis
Los operadores lgicos se usan para combinar condiciones.
Queremos recuperar todos los registros cuyo autor sea igual a
"Borges" y cuyo precio no supere los 20 pesos, para ello necesitamos
2 condiciones:
select * from libros
where (autor='Borges') and
(precio<=20);
Los registros recuperados en una sentencia que une 2 condiciones
con el operador "and", cumplen con las 2 condiciones.

Queremos ver los libros cuyo autor sea "Borges" y/o cuya editorial sea
"Planeta":
select * from libros
where autor='Borges' or
editorial='Planeta';
En la sentencia anterior usamos el operador "or", indicamos que
recupere los libros en los cuales el valor del campo "autor" sea
"Borges" y/o el valor del campo "editorial" sea "Planeta", es decir,
seleccionar los registros que cumplan con la primera condicin, con
la segunda condicin o con ambas condiciones.
Los registros recuperados con una sentencia que une 2 condiciones
con el operador "or", cumplen 1 de las condiciones o ambas.
Queremos ver los libros cuyo autor sea "Borges" o cuya editorial sea
"Planeta":
select * from libros
where (autor='Borges') xor
(editorial='Planeta');
En la sentencia anterior usamos el operador "xor", indicamos que
recupere los libros en los cuales el valor del campo "autor" sea
"Borges" o el valor del campo "editorial" sea "Planeta", es decir,
seleccionar los registros que cumplan con la primera condicin o con
la segunda condicin pero no los que cumplan con ambas
condiciones. Los registros recuperados con una sentencia que une 2
condiciones con el operador "xor", cumplen 1 de las condiciones, no
ambas.
Queremos recuperar los libros que no cumplan la condicin dada, por
ejemplo, aquellos cuya editorial NO sea "Planeta":
select * from libros
where not (editorial='Planeta');
El operador "not" invierte el resultado de la condicin a la cual
antecede.
Los registros recuperados en una sentencia en la cual aparece el
operador "not", no cumplen con la condicin a la cual afecta el "NO".
Los parntesis se usan para encerrar condiciones, para que se
evalen como una sola expresin.

Cuando explicitamos varias condiciones con diferentes operadores


lgicos (combinamos "and", "or") permite establecer el orden de
prioridad de la evaluacin; adems permite diferenciar las
expresiones ms claramente.
Por ejemplo, las siguientes expresiones devuelven un resultado
diferente:
select * from libros
where (autor='Borges') or
(editorial='Paidos' and precio<20);
select*from libros
where (autor='Borges' or editorial='Paidos') and
(precio<20);
Si bien los parntesis no son obligatorios en todos los casos, se
recomienda utilizarlos para evitar confusiones.
El orden de prioridad de los operadores lgicos es el siguiente: "not"
se aplica antes que "and" y "and" antes que "or", si no se especifica
un orden de evaluacin mediante el uso de parntesis.
El orden en el que se evalan los operadores con igual nivel de
precedencia es indefinido, por ello se recomienda usar los parntesis.

Funciones de agrupamiento (count - max - min - sum


- avg)
Existen en MySQL funciones que nos permiten contar registros,
calcular sumas, promedios, obtener valores mximos y mnimos. Ya
hemos aprendido "count()", veamos otras.
La funcin "sum()" retorna la suma de los valores que contiene el
campo especificado. Por ejemplo, queremos saber la cantidad de
libros que tenemos disponibles para la venta:
select sum(cantidad) from libros;
Tambin podemos combinarla con "where". Por ejemplo, queremos
saber cuntos libros tenemos de la editorial "Planeta":
select sum(cantidad) from libros
where editorial ='Planeta';
Para averiguar el valor mximo o mnimo de un campo usamos las
funciones "max()" y "min()" respectivamente. Ejemplo, queremos
saber cul es el mayor precio de todos los libros:

select max(precio) from libros;


Queremos saber cul es el valor mnimo de los libros de "Rowling":
select min(precio) from libros
where autor like '%Rowling%';
La funcin avg() retorna el valor promedio de los valores del campo
especificado. Por ejemplo, queremos saber el promedio del precio de
los libros referentes a "PHP":
select avg(precio) from libros
where titulo like '%PHP%';
Estas funciones se denominan "funciones de agrupamiento" porque
operan sobre conjuntos de registros, no con datos individuales.
Tenga en cuenta que no debe haber espacio entre el nombre de la
funcin y el parntesis, porque puede confundirse con una referencia
a una tabla o campo. Las siguientes sentencias son distintas:
select count(*) from libros;
select count (*) from libros;
La primera es correcta, la segunda incorrecta.

Agrupar registros (group by)


Hemos aprendido que las funciones de agrupamiento permiten contar
registros, calcular sumas y promedios, obtener valores mximos y
mnimos. Tambin dijimos que dichas funciones operan sobre
conjuntos de registros, no con datos individuales.
Generalmente esta funciones se combinan con la sentencia "group
by", que agrupa registros para consultas detalladas.
Queremos saber la cantidad de visitantes de cada ciudad, podemos
tipear la siguiente sentencia:
select count(*) from visitantes
where ciudad='Cordoba';
y repetirla con cada valor de "ciudad":
select count(*) from visitantes
where ciudad='Alta Gracia';
select count(*) from visitantes
where ciudad='Villa Dolores';

...
Pero hay otra manera, utilizando la clusula "group by":
select ciudad, count(*)
from visitantes
group by ciudad;
Entonces, para saber la cantidad de visitantes que tenemos en cada
ciudad utilizamos la funcin "count()", agregamos "group by" y el
campo por el que deseamos que se realice el agrupamiento, tambin
colocamos el nombre del campo a recuperar.
La instruccin anterior solicita que muestre el nombre de la ciudad y
cuente la cantidad agrupando los registros por el campo "ciudad".
Como resultado aparecen los nombres de las ciudades y la cantidad
de registros para cada valor del campo.
Para obtener la cantidad visitantes con telfono no nulo, de cada
ciudad utilizamos la funcin "count()" envindole como argumento el
campo "telefono", agregamos "group by" y el campo por el que
deseamos que se realice el agrupamiento (ciudad):
select ciudad, count(telefono)
from visitantes
group by ciudad;
Como resultado aparecen los nombres de las ciudades y la cantidad
de registros de cada una, sin contar los que tienen telfono nulo.
Recuerde la diferencia de los valores que retorna la funcin "count()"
cuando enviamos como argumento un asterisco o el nombre de un
campo: en el primer caso cuenta todos los registros incluyendo los
que tienen valor nulo, en el segundo, los registros en los cuales el
campo especificado es no nulo.
Para conocer el total de las compras agrupadas por sexo:
select sexo, sum(montocompra)
from visitantes
group by sexo;
Para saber el mximo y mnimo valor de compra agrupados por sexo:
select sexo, max(montocompra) from visitantes
group by sexo;
select sexo, min(montocompra) from visitantes
group by sexo;
Se pueden simplificar las 2 sentencias anteriores en una sola
sentencia, ya que usan el mismo "group by":

select sexo, max(montocompra),


min(montocompra)
from visitantes
group by sexo;
Para calcular el promedio del valor de compra agrupados por ciudad:
select ciudad, avg(montocompra) from visitantes
group by ciudad;
Podemos agrupar por ms de un campo, por ejemplo, vamos a
hacerlo por "ciudad" y "sexo":
select ciudad, sexo, count(*) from visitantes
group by ciudad,sexo;
Tambin es posible limitar la consulta con "where".
Vamos a contar y agrupar por ciudad sin tener en cuenta "Cordoba":
select ciudad, count(*) from visitantes
where ciudad<>'Cordoba'
group by ciudad;
Podemos usar las palabras claves "asc" y "desc" para una salida
ordenada:
select ciudad, count(*) from visitantes
group by ciudad desc;

También podría gustarte