Está en la página 1de 14

MySQL

Numericos
Hasta ahora hemos visto 2 tipos de datos para almacenar valores numricos: integer (con y sin signo) y float (con y sin signo). 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: 1) integer(x) o int(x): su rango es de -2000000000 a 2000000000 aprox. El tipo "int unsigned" va de 0 a 4000000000. El tipo "integer" tiene subtipos: - mediumint(x): va de 8000000 a 8000000 aprox. Sin signo va de 0 a 16000000 aprox. - smallint(x): va de 30000 a 30000 aprox., sin signo, de 0 a 60000 aprox. - tinyint(x): define un valor entero pequeo, cuyo rango es de -128 a 127. El tipo sin signo va de 0 a 255. - bool o boolean: sinnimos de tinyint(1). Un valor cero se considera falso, los valores distintos de cero, verdadero. - bigint(x): es un entero largo. Va de 9000000000000000000 a 9000000000000000000 aprox. Sin signo es de 0 a 10000000000000000000. Para almacenar valores con decimales utilizamos: 2) float (t,d): nmero de coma flotante. Su rango es de -3.4e+38 a 1.1e-38 (9 cifras). 3) decimal o numeric (t,d): el primer argumento indica el total de dgitos y el segundo, la cantidad de decimales. El rango depende de los argumentos, tambin los bytes que ocupa. Si queremos almacenar valores entre 0.00 y 99.99 debemos definir el campo como tipo "decimal (4,2)". Si no se indica el valor del segundo argumento, por defecto es 0. Para los tipos "float" y "decimal" se utiliza el punto como separador de decimales. Todos los tipos enteros pueden tener el atributo "unsigned", esto permite slo valores positivos y duplica el rango. Los tipos de coma flotante tambin aceptan el atributo "unsigned", pero el valor del lmite superior del rango no se modifica. Es importante elegir el tipo de dato adecuado segn el caso, el ms preciso. Por ejemplo, si un campo numrico almacenar valores positivos menores a 10000, el tipo "int" no es el ms adecuado, porque su rango va de -2000000000 a 2000000000 aprox., conviene el tipo "smallint unsigned", cuyo rango va de 0 a 60000 aprox. De esta manera usamos el menor espacio de almacenamiento posible.

Tipo Bytes de almacenamiento _______________________________________ tinyint 1 smallint 2 mediumint 3 int 4 bigint 8 float 4 decimal(t,d) t+2 si d>0, t+1 si d=0 y d+2 si t<d Problema Una concesionaria de autos vende autos usados y almacena los datos de los autos en una tabla llamada "autos". 1- Elimine la tabla "autos" si existe. 2- Cree la tabla con la siguiente estructura: create table autos( patente char(6), marca varchar(20), modelo char(4), precio float unsigned, primary key(patente) ); 3- Ingrese los siguientes registros: insert into autos (patente,marca,modelo,precio) values('ACD123','Fiat 128','1970',15000); insert into autos (patente,marca,modelo,precio) values('ACG234','Renault 11','1990',40000); insert into autos (patente,marca,modelo,precio) values('BCD333','Peugeot 505','1990',80000); insert into autos (patente,marca,modelo,precio) values('GCD123','Renault Clio','1990',70000); insert into autos (patente,marca,modelo,precio) values('BCC333','Renault Megane','1998',95000); insert into autos (patente,marca,modelo,precio) values('BVF543','Fiat 128','1975',20000); Hemos definido el campo "patente" de tipo "char" y no "varchar" porque la cadena de caracteres siempre tendr la misma longitud (6 caracteres), con esta definicin ocupamos 6 bytes, si lo hubisemos definido como "varchar(6)" ocupara 7 bytes. Lo mismo sucede con el campo "modelo", en el cual almacenaremos el ao, necesitamos 4 caracteres fijos. Para el campo "precio" definimos un float sin signo porque los valores nunca sern negativos. 4- Seleccione todos los autos del ao 1990: select * from autos where modelo='1990';

5- Seleccione todos los autos con precio superior a 50000: select * from autos where precio>50000;

19 - Tipos de datos (fechas y horas)


Para guardar fechas y horas dispone de varios tipos: 1) date: representa una fecha con formato "YYYY-MM-DD". El rango va de "1000-01-01" a "999912-31". 2) datetime: almacena fecha y hora, su formato es "YYYY-MM-DD HH:MM:SS". El rango es de "1000-01-01 00:00:00" a "9999-12-31 23:59:59". 3) time: una hora. Su formato es "HH:MM:SS". El rango va de "-838:59:59" a "838:59:59". 4) year(2) y year(4): un ao. Su formato es "YYYY" o "YY". Permite valores desde 1901 a 2155 (en formato de 4 dgitos) y desde 1970 a 2069 (en formato de 2 dgitos). Si ingresamos los valores como cadenas, un valor entre "00" y "69" es convertido a valores "year" en el rango de 2000 a 2069; si el valor est entre "70" y "99", se convierten a valores "year" en el rango 1970 a 1999. Si ingresamos un valor numrico 0, se convierte en "0000"; entre 1 y 69, se convierte a valores "year" entre 2001 a 2069; entre 70 y 99, es convertido a valores "year" de 1970 a 1999. Para almacenar valores de tipo fecha se permiten como separadores "/", "-" y ".". Si ingresamos '06-12-31' (ao de 2 dgitos), lo toma como '2006-12-31'. Si ingresamos '2006-2-1' (mes y da de 1 dgito), lo toma como '2006-02-01'. Si ingresamos '20061231' (cadena sin separador), lo toma como '2006-12-31'. Si ingresamos 20061231 (numrico), lo toma como '2006-12-31'. Si ingresamos '20061231153021' (cadena sin separadores), lo toma como '2006-12-31 15:30:21'. Si ingresamos '200612311530' (cadena sin separadores con un dato faltante) no lo reconoce como fechahora y almacena ceros. Si ingresamos '2006123' (cadena sin separadores con un dato faltante) no lo reconoce como fecha y almacena ceros. Si ingresamos '2006-12-31 11:30:21' (valor date time) en un campo 'date', toma slo la parte de la fecha, la hora se corta, se guarda '2006-12-31'.

Es importante elegir el tipo de dato adecuado segn el caso, el ms preciso. Por ejemplo, si slo necesitamos registrar un ao (sin da ni mes), el tipo adecuado es "year" y no "date". Tipo Bytes de almacenamiento _______________________________________ date 3 datetime 8 time 3 year 1 Problema: Una concesionaria de autos vende autos usados. Guarda los siguientes datos en la tabla "autos": - marca (fiat 128, renault 11, peugeot 505, etc.) - modelo (ao) - dueo (nombre del dueo) - precio (valor con decimales positivo que puede llegar hasta 999999.99 aprox.). 1- Elimine la tabla si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar estos datos: create table autos( marca varchar(15), modelo year, dueo varchar(30), precio decimal (8,2) unsigned ); 3- Ingrese los siguientes registros: insert into autos values('Fiat 128','1970','Juan Lopez',50000); insert into autos values('Renault 11','1990','Juan Lopez',80000); insert into autos values('Fiat 128','1971','Ana Ferreyra',51000); insert into autos values('Peugeot 505','1998','Luis Luque',99000); insert into autos values('Peugeot 505','1997','Carola Perez',85000); 4- Seleccione todos los autos cuyo modelo sea menor a "1995": select * from autos where modelo<1995; 5- Muestre la marca y modelo de los autos que no sean de "1970": select marca,modelo from autos where modelo<>1970; 6- Ingrese un auto con el valor para "modelo" de tipo numrico: insert into autos values('Peugeot 505',1995,'Carlos Lopez',88000);

20 - Valores por defecto.


Hemos visto los valores por defecto de los distintos tipos de datos. Ahora que conocemos ms tipos de datos, vamos a ampliar la informacin referente a ellos y a repasar los conocidos.

Para campos de cualquier tipo no declarados "not null" el valor por defecto es "null" (excepto para tipos "timestamp" que no trataremos aqu). Para campos declarados "not null", el valor por defecto depende del tipo de dato. Para cadenas de caracteres el valor por defecto es una cadena vaca. Para valores numricos el valor por defecto es 0; en caso de ser "auto_increment" es el valor mayor existente+1 comenzando en 1. Para campos de tipo fecha y hora, el valor por defecto es 0 (por ejemplo, en un campo "date" es "0000-00-00"). Para todos los tipos, excepto "blob", "text" y "auto_increment" se pueden explicitar valores por defecto con la clusula "default"; tema que veremos ms adelante. Un valor por defecto se inserta cuando no est presente al ingresar un registro y en algunos casos en que el dato ingresado es invlido. Los campos para los cuales no se ingresaron valores tomarn los valores por defecto segn el tipo de dato del campo, en el campo "codigo" ingresar el siguiente valor de la secuencia porque es "auto_increment"; en el campo "titulo", ingresar una cadena vaca porque es "varchar not null"; en el campo "editorial" almacenar "null", porque no est definido "not null"; en el campo "precio" guardar "null" porque es el valor por defecto de los campos no definidos como "not null" y en el campo "cantidad" ingresar 0 porque es el valor por defecto de los campos numricos que no admiten valores nulos. Tipo Valor por defecto Clusula "default" ___________________________________________________________________________________ __ caracter not null cadena vaca permite numerico not null 0 permite fecha not null 0000-00-00 permite hora not null 00:00:00 permite auto_increment siguiente de la sec., empieza en 1 no permite carac.,numer.,fecha,hora null null permite Problema: Trabaje con la tabla que almacena los datos sobre pelculas, llamada "peliculas". 1- Elimine la tabla si existe. 2- Crela con la siguiente estructura: -codigo (entero sin signo, autoincrementable), -titulo (cadena de 30, not nulo), -actor (cadena de 20), -duracion (entero positivo hasta 200 apox.), -clave primaria (codigo). 3- Agregue los siguientes registros para ver cmo guarda MySQL los valores no ingresados: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (codigo,duracion)

values(5,90); insert into peliculas (titulo,actor) ('Harry Potter y la piedra filosofal','Daniel R.'); insert into peliculas (titulo,actor,duracion) ('Harry Potter y la piedra filosofal','Daniel R.',120); 4- Seleccione todos los datos de las pelculas para ver cmo guard MySQL los valores no ingresados. En el primer registro ingresado, en el campo "codigo" ingresar "1", el primer valor para campos "auto_increment". En el segundo registro ingresado se almacena una cadena vaca para el ttulo y el valor "null" para el actor. En el tercer registro guarda "6" en "codigo", el siguiente valor de la secuencia tomando el valor ms alto y en "duracion" almacena "0". En el cuarto registro sigue la secuencia del cdigo.

21 - Valores invlidos.
Hemos visto los valores por defecto de los distintos tipos de datos. Un valor por defecto se inserta cuando no est presente al ingresar un registro y en algunos casos en que el dato ingresado es invlido. Un valor es invlido por tener un tipo de dato incorrecto para el campo o por estar fuera de rango. Veamos los distintos tipos de datos invlidos. Para campos de tipo caracter: -valor numrico: si en un campo definido de tipo caracter ingresamos un valor numrico, lo convierte automticamente a cadena. Por ejemplo, si guardamos 234 en un varchar, almacena '234'. -mayor longitud: si intentamos guardar una cadena de caracteres mayor a la longitud definida, la cadena se corta guardando slo la cantidad de caracteres que quepa. 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. Para campos numricos: -cadenas: si en un campo numrico ingresamos una cadena, lo pasa por alto y coloca 0. Por ejemplo, si en un campo de tipo "integer" guardamos 'abc', almacenar 0. -valores fuera de rango: si en un campo numrico intentamos guardar un valor fuera de rango, se almacena el valor lmite del rango ms cercano (menor o mayor). Por ejemplo, si definimos un campo 'tinyint' (cuyo rango va de -128 a 127) e intentamos guardar el valor 200, se almacenar 127, es decir el mximo permitido del rango; si intentamos guardar -200, se guardar -128, el mnimo permitido por el rango. Otro ejemplo, si intentamos guardar el valor 1000.00 en un campo definido como decimal(5,2) guardar 999.99 que es el mayor del rango. -valores incorrectos: si cargamos en un campo definido de tipo decimal un valor con ms decimales que los permitidos en la definicin, el valor es redondeado al ms cercano. Por ejemplo, si cargamos en un campo definido como decimal(4,2) el valor 22.229, se guardar 22.23, si cargamos 22.221 se

guardar 22.22. Para campos definidos auto_increment el tratamiento es el siguiente: - Pasa por alto los valores fuera del rango, 0 en caso de no ser "unsigned" y todos los menores a 1 en caso de ser "unsigned". - Si ingresamos un valor fuera de rango contina la secuencia. - Si ingresamos un valor existente, aparece un mensaje de error indicando que el valor ya existe. Para campos de fecha y hora: -valores incorrectos: si intentamos almacenar un valor que MySql no reconoce como fecha (sea fuera de rango o un valor invlido), convierte el valor en ceros (segn el tipo y formato). Por ejemplo, si intentamos guardar '20/07/2006' en un campo definido de tipo "date", se almacena '0000-00-00'. Si intentamos guardar '20/07/2006 15:30' en un campo definido de tipo "datetime", se almacena '0000-0000 00:00:00'. Si intentamos almacenar un valor invlido en un campo de tipo "time", se guarda ceros. Para "time", si intentamos cargar un valor fuera de rango, se guarda el menor o mayor valor permitido (segn sea uno u otro el ms cercano). Para campos de cualquier tipo: -valor "null": si un campo est definido "not null" e intentamos ingresar "null", aparece un mensaje de error y la sentencia no se ejecuta. Los valores invlidos para otros tipos de campos lo trataremos ms adelante. RESUMEN: Tipo Valor invlido Resultado ___________________________________________________________________________________ _______ caracter null/ not null 123 '123' caracter null/ not null mayor longitud se corta caracter not null null error numrico null/ not null '123' 0 numrico null/ not null fuera de rango lmite ms cercano numrico not null null error numrico decimal null/ not null ms decimales que los definidos redondea al ms cercano num. auto_incr. c/signo null/not null 0 siguiente de la secuencia num. auto_incr. s/signo null/not null todos los menores a 1 siguiente de la secuencia num. auto_incr. c/s signo null null siguiente de la secuencia num. auto_incr. c/s signo null/not null valor existente error fecha fuera de rango 0000-00-00 fecha '20-07-2006' (otro orden) 0000-00-00 hora fuera de rango lmite ms cercano

fecha y hora not null

null

error

22 - Atributo default en una columna de una tabla.


Si al insertar registros no se especifica un valor para un campo, se inserta su valor por defecto implcito segn el tipo de dato del campo. Por ejemplo: insert into libros (titulo,autor,editorial,precio,cantidad) values('Java en 10 minutos','Juan Pereyra','Paidos',25.7,100); Como no ingresamos valor para el campo "codigo", MySQL insertar el valor por defecto, como "codigo" es un campo "auto_increment", el valor por defecto es el siguiente de la secuencia. Si omitimos el valor correspondiente al autor: insert into libros (titulo,editorial,precio,cantidad) values('Java en 10 minutos','Paidos',25.7,200); MySQL insertar "null", porque el valor por defecto de un campo (de cualquier tipo) que acepta valores nulos, es "null". Lo mismo sucede si no ingresamos el valor del precio: insert into libros (titulo,autor,editorial,cantidad) values('Java en 10 minutos','Juan Pereyra',Paidos',150); MySQL insertar el valor "null" porque el valor por defecto de un campo (de cualquier tipo) que acepta valores nulos, es "null". Si omitimos el valor correspondiente al ttulo: insert into libros (autor,editorial,precio,cantidad) values ('Borges','Paidos',25.7,200); MySQL guardar una cadena vaca, ya que ste es el valor por defecto de un campo de tipo cadena definido como "not null" (no acepta valores nulos). Si omitimos el valor correspondiente a la cantidad: insert into libros (titulo,autor,editorial,precio) values('Alicia a traves del espejo','Lewis Carroll','Emece',34.5); el valor que se almacenar ser 0, porque el campo "precio" es de tipo numrico "not null" y el valor por defecto de los tipos numricos que no aceptan valores nulos es 0. Podemos establecer valores por defecto para los campos cuando creamos la tabla. Para ello utilizamos "default" al definir el campo. Por ejemplo, queremos que el valor por defecto del campo "precio" sea 1.11 y el valor por defecto del campo "autor" sea "Desconocido": create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, autor varchar(30) default 'Desconocido', precio decimal(5,2) unsigned default 1.11,

cantidad int unsigned not null, primary key (codigo) ); Si al ingresar un nuevo registro omitimos los valores para el campo "autor" y "precio", MySQL insertar los valores por defecto definidos con la palabra clave "default": insert into libros (titulo,editorial,cantidad) values('Java en 10 minutos','Paidos',200); MySQL insertar el registro con el siguiente valor de la secuencia en "codigo", con el ttulo, editorial y cantidad ingresados, en "autor" colocar "Desconocido" y en precio "1.11". Entonces, si al definir el campo explicitamos un valor mediante la clusula "default", se ser el valor por defecto; sino insertar el valor por defecto implcito segn el tipo de dato del campo. Los campos definidos "auto_increment" no pueden explicitar un valor con "default", tampoco los de tipo "blob" y "text". Los valores por defecto implcitos son los siguientes: -para campos de cualquier tipo que admiten valores nulos, el valor por defecto "null"; -para campos que no admiten valores nulos, es decir, definidos "not null", el valor por defecto depende del tipo de dato: -para campos numricos no declarados "auto_increment": 0; -para campos numricos definidos "auto_increment": el valor siguiente de la secuencia, comenzando en 1; -para los tipos cadena: cadena vaca. Ahora al visualizar la estructura de la tabla con "describe" podemos entender un poco ms lo que informa cada columna: describe libros; "Field" contiene el nombre del campo; "Type", el tipo de dato; "NULL" indica si el campo admite valores nulos; "Key" indica si el campo est indexado (lo veremos ms adelante); "Default" muestra el valor por defecto del campo y "Extra" muestra informacin adicional respecto al campo, por ejemplo, aqu indica que "codigo" est definido "auto_increment". Tambin se puede utilizar "default" para dar el valor por defecto a los campos en sentencias "insert", por ejemplo: insert into libros (titulo,autor,precio,cantidad) values ('El gato con botas',default,default,100);

Problema: Trabajamos con la tabla "libros" de una librera. Eliminamos la tabla, si existe: drop table if exists libros; Creamos la tabla con la siguiente estructura: create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, editorial varchar(15), autor varchar(30) default 'Desconocido', precio decimal(5,2) unsigned default 1.11, cantidad mediumint unsigned not null, primary key (codigo) ); Ingresamos algunos registros omitiendo algunos campos para ver cmo trabaja la clusula "default". insert into libros (titulo,autor,editorial,precio,cantidad) values('Java en 10 minutos','Juan Pereyra','Paidos',25.7,100); Como no ingresamos valor para el campo "codigo", se insertar el valor por defecto implcito, como "codigo" es un campo "auto_increment", el valor por defecto es el siguiente de la secuencia. Si omitimos el valor correspondiente al ttulo: insert into libros (autor,editorial,precio,cantidad) values('Juan Perez','Planeta',28.50,50); MySQL insertar una cadena vaca, porque el valor por defecto de un campo de tipo caracter definido como "not null" es ese y para el cdigo, seguir con la secuencia. Lo mismo sucede si no ingresamos un valor para la editorial: insert into libros (titulo,autor,precio,cantidad) values('Aprenda PHP','Alberto Lopez',55.40,150); Se almacenar una cadena vaca. Si omitimos el valor correspondiente al autor: insert into libros (titulo,editorial,precio,cantidad) values ('El gato con botas','Emece',15.6,150); Se guardar "Desconocido" ya que ste es el valor por defecto que explicitamos al definir el campo. Si omitimos el valor correspondiente al precio: insert into libros (titulo,autor,editorial,cantidad) values ('El aleph','Borges','Emece',200);

Se guardar "1.11" ya que ste es el valor por defecto que explicitamos al definir el campo. Si omitimos el valor correspondiente a la cantidad: insert into libros (titulo,autor,editorial,precio) values('Alicia a traves del espejo','Lewis Carroll', 'Emece',34.5); el valor que se almacenar ser 0, porque con la cluslua "default" establecimos este valor por defecto para este campo. Tambin podemos usar "default" para dar el valor por defecto a los campos en sentencias "insert", por ejemplo: insert into libros (titulo,autor,editorial,precio,cantidad) values ('El gato con botas',default,'Planeta',default,100); Problema: Un comercio que enva pizzas y empanadas a domicilio registra los pedidos diariamente en una tabla llamada "pedidos" con los siguientes datos: - numero de pedido, autoincrementable, entero positivo comienza en 1 y menor a 200 aprox. - nombre: pizza o empanada, por defecto "empanada", - tipo: por ejemplo, si es pizza: especial, muzarela, etc., si son empanadas: arabes, pollo, jamn y queso, criollas, etc. - precio: precio por unidad, valor con decimales que no supera los $99.99 y ser siempre mayor a 0, por defecto "1", - cantidad: cantidad de articulos, entero positivo desde 1 e inferior a 200 aprox., por defecto "12" - domicilio del cliente. 1- Elimine la tabla "pedidos" si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo. 3- Ingrese los siguientes registros: insert into pedidos (nombre,tipo,precio,cantidad,domicilio) values('piza','muzarela','4.00',3,'Sarmiento 235'); insert into pedidos (tipo,precio,cantidad,domicilio) values('arabe','1.00',24,'Urquiza 296'); insert into pedidos (nombre,tipo,domicilio) values('empanada','saltea','Colon 309'); insert into pedidos (tipo,domicilio) values('arabe','San Martin 444'); insert into pedidos (nombre,tipo,precio,domicilio) values('piza','especial','4.00','Avellaneda 395'); 4- Muestre todos los campos de todos los pedidos para ver cmo se guardaron los datos no ingresados.

23 - Atributo zerofill en una columna de una tabla.


Cualquier campo numrico puede tener otro atributo extra "zerofill".

"zerofill" rellena con ceros los espacios disponibles a la izquierda. Por ejemplo, creamos la tabla "libros", definiendo los campos "codigo" y "cantidad" con el atributo "zerofill": create table libros( codigo int(6) zerofill auto_increment, titulo varchar(40) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad smallint zerofill, primary key (codigo) ); Note que especificamos el tamao del tipo "int" entre parntesis para que muestre por la izquierda ceros, cuando los valores son inferiores al indicado; dicho parmetro no restringe el rango de valores que se pueden almacenar ni el nmero de digitos. Al ingresar un valor de cdigo con menos cifras que las especificadas (6), aparecern ceros a la izquierda rellenando los espacios; por ejemplo, si ingresamos "33", aparecer "000033". Al ingresar un valor para el campo "cantidad", suceder lo mismo. Si especificamos "zerofill" a un campo numrico, se coloca automticamente el atributo "unsigned". Cualquier valor negativo ingresado en un campo definido "zerofill" es un valor invlido. Problema: Trabajamos con la tabla "libros" de una librera. Eliminamos la tabla, si existe: drop table if exists libros; Creamos la tabla: create table libros( codigo int(6) zerofill auto_increment, titulo varchar(40) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad smallint zerofill, primary key (codigo) ); Visualizamos la estructura de la tabla: describe libros; Vemos que en la columna "Type" se muestra el atributo "zerofill" en los campos en los cuales lo especificamos.

Ingresemos algunos registros: insert into libros (titulo,autor,editorial,precio,cantidad) values('Martin Fierro','Jose Hernandez','Planeta',34.5,200); insert into libros (titulo,autor,editorial,precio,cantidad) values('Aprenda PHP','Mario Molina','Emece',45.7,50); insert into libros (titulo,autor,editorial,precio,cantidad) values('Cervantes y el quijote','Borges','Paidos',23,40); Veamos cmo se guardaron los datos: select * from libros; Los valores de cdigo estn rellenados a la izquierda con ceros; tambin los del campo "cantidad". Probemos ingresar un valor para cdigo saltando la secuencia: insert into libros (codigo,titulo,autor,editorial,precio,cantidad) values('545','El aleph', 'Borges', 'Emece',33,20); Veamos cmo lo guard: select * from libros; Ingresemos un valor negativo para los campos definidos "zerofill": insert into libros (codigo,titulo,autor,editorial,precio,cantidad) values(-400,'Matematica estas ahi', 'Paenza', 'Paidos',15.2,-100); Veamos lo que sucedi: select * from libros; Como los valores son invlidos, almacena los valores por defecto segn el tipo; para el campo "auto_increment" sigue la secuencia y para el campo "cantidad" guarda "00000". Problema: Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas". 1- Elimine la tabla, si existe. 2- Cree la tabla: create table cuentas( numero int(8) zerofill auto_increment, documento char(8) not null, nombre varchar(30), saldo decimal(9,2), primary key(numero) ); 3- Visualice la estructura de la tabla: describe cuentas; note que en la columna que muestra el tipo aparece "zerofill" en el campo "numero".

4- Ingrese los siguientes registros: insert into cuentas (numero,documento,nombre,saldo) values(1234,'22333444','Juan Perez',2000.60); insert into cuentas (numero,documento,nombre,saldo) values(2566,'23333444','Maria Pereyra',5050); insert into cuentas (numero,documento,nombre,saldo) values(5987,'24333444','Marcos Torres',200); insert into cuentas (numero,documento,nombre,saldo) values(14434,'25333444','Ana Juarez',8000.60); 5- Vea cmo se guardaron los nmeros de cuenta: select * from cuentas; 6- Ingrese un valor negativo para el nmero de cuenta: insert into cuentas (numero,documento,nombre,saldo) values(-1234,'27333444','Luis Duarte',2800); note que no lo toma y sigue la secuencia.

También podría gustarte