domingo, 10 de julio de 2011

MYSQL

MYSQL

EJEMPLOS EN MYSQL

Creación de una tabla y mostrar sus campos (create table – show tables – describe – drop table)
Problema: Crear la tabla usuarios con los campos nombre y clave. Previamente borrar la tabla usuarios si ya existe en el servidor. Finalmente mostrar la estructura de la tabla usuarios que acabamos de crear.
Importante: Tengamos en cuenta que intentamos borrar la tabla como primer paso ya que otro visitante al sitio de mysqlya.com.ar puede haberla creado anteriormente, inclusive haberla definido con otros campos distintos. Pruebe luego de borrar el comando drop y vea que ocurre si trata de crear una tabla ya existente en nuestra base de datos.
drop table if exists usuarios; create table usuarios ( nombre varchar(30), clave varchar(10) ); describe usuarios;
drop table if exists usuarios;
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
describe usuarios;
Carga de registros a una tabla y su recuperación (insert into – select)
Problema: Insertar tres registros en la tabla usuarios y luego mostrar todos los registros de la tabla.
Primeramente eliminamos la tabla, si existe:
drop table if exists usuarios;
Creamos la tabla:
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
Insertamos 3 registros:
insert into usuarios(nombre,clave) values (‘MarioPerez’,'Marito’);
insert into usuarios(nombre,clave) values (‘MariaGarcia’,'Mary’);
insert into usuarios(nombre,clave) values (‘DiegoRodriguez’,'z8080′);
Para ver los registros ejecutamos el comando select:
select nombre,clave from usuarios;
drop table if exists usuarios;
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
insert into usuarios(nombre,clave) values (‘MarioPerez’,'Marito’);
insert into usuarios(nombre,clave) values (‘MariaGarcia’,'Mary’);
insert into usuarios(nombre,clave) values (‘DiegoRodriguez’,'z8080′);
select nombre,clave from usuarios;
Modificación de registros de una tabla (update)
Problema: Trabajamos con la tabla “usuarios” que guarda el nombre de usuario y su clave.
Eliminamos la tabla, si existe:
drop table if exists  usuarios;
Creamos la tabla:
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
Ingresamos algunos registros:
insert into usuarios (nombre, clave) values (‘Leonardo’,'payaso’);
insert into usuarios (nombre, clave) values (‘MarioPerez’,'Marito’);
insert into usuarios (nombre, clave) values (‘Marcelo’,'River’);
insert into usuarios (nombre, clave) values (‘Gustavo’,'River’);
Visualizamos todos los registros:
select * from usuarios;
Para actualizar los valores de todas las claves, por ‘RealMadrid’ tipeamos:
update usuarios set clave=’RealMadrid’;
Visualizamos todos los registros para verificar la actualización:
select * from usuarios;
Cambiamos el valor correspondiente a la clave de nuestro usuario llamado ‘MarioPerez’, por ‘Boca’:
update usuarios set clave=’Boca’
where nombre=’MarioPerez’;
Verificamos el cambio:
select nombre,clave from usuarios;
Cambiamos el valor correspondiente al nombre de usuario ‘Gustavo’ por ‘GustavoGarcia’:
update usuarios set nombre=’GustavoGarcia’
where nombre=’Gustavo’;
Podemos actualizar varios campos en una sola instrucción:
update usuarios set nombre=’MarceloDuarte’, clave=’Marce’
where nombre=’Marcelo’;
drop table if exists  usuarios;
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
insert into usuarios (nombre, clave) values (‘Leonardo’,'payaso’);
insert into usuarios (nombre, clave) values (‘MarioPerez’,'Marito’);
insert into usuarios (nombre, clave) values (‘Marcelo’,'River’);
insert into usuarios (nombre, clave) values (‘Gustavo’,'River’);
select * from usuarios;
update usuarios set clave=’RealMadrid’;
Clave primaria.
Problema: Trabajamos con la tabla “usuarios” que contiene el nombre de usuario y su clave.
Eliminamos la tabla, si existe:
drop table if exists usuarios;
Creamos la tabla:
create table usuarios (
nombre varchar(20),
clave varchar(10),
primary key (nombre)
);
Vemos la estructura de la tabla:
describe usuarios;
Note que en la columna “KEY” del campo “nombre” aparece “PRI”, esto significa que ese campo es clave primaria.
Ingresamos algunos registros:
insert into usuarios (nombre, clave) values (‘Leonardo’,'payaso’);
insert into usuarios (nombre, clave) values (‘MarioPerez’,'Marito’);
insert into usuarios (nombre, clave) values (‘Marcelo’,'River’);
insert into usuarios (nombre, clave) values (‘Gustavo’,'River’);
Al intentar ingresar un valor repetido para el campo clave, aparece un mensaje de error indicando que el registro no se cargó pues el dato está duplicado; veámoslo en un ejemplo, ingresemos un registro con un nombre de usuario repetido.
insert into usuarios (nombre, clave)
values (‘Gustavo’,'Boca’);
rop table if exists usuarios;
create table usuarios (
nombre varchar(20),
clave varchar(10),
primary key (nombre)
);
describe usuarios;
insert into usuarios (nombre, clave) values (‘Leonardo’,'payaso’);
insert into usuarios (nombre, clave) values (‘MarioPerez’,'Marito’);
insert into usuarios (nombre, clave) values (‘Marcelo’,'River’);
insert into usuarios (nombre, clave) values (‘Gustavo’,'River’);
insert into usuarios (nombre, clave) values (‘Gustavo’,'Boca’);
Clave foránea.
Problema: Trabajamos con las tablas “libros” y “editoriales” de una librería.
Eliminamos las tablas, si existen:
drop table libros, editoriales;
Creamos las tablas:
create table libros(
codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default ‘Desconocido’,
codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad smallint unsigned default 0,
primary key (codigo)
);
create table editoriales(
codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);
En este ejemplo, el campo “codigoeditorial” de “libros” es una clave foránea, se emplea para enlazar la tabla “libros” con “editoriales”.
Ingresamos algunos registros:
insert into editoriales values(2,’Emece’);
insert into editoriales values(15,’Planeta’);
insert into editoriales values(23,’Paidos’);
insert into libros values(1,’El aleph’,'Borges’,23,4.55,10);
insert into libros values(2,’Alicia en el pais de las maravillas’,'Lewis Carroll’
,2,11.55,2);
insert into libros values(3,’Martin Fierro’,'Jose Hernandez’,15,7.12,4);
Si modificamos el tipo, longitud o atributos de una clave foránea, ésta puede quedar inhabilitada para hacer los enlaces.
Veamos un ejemplo:
alter table libros
modify codigoeditorial char(1);
Veamos cómo afectó el cambio a la tabla “libros”:
select * from libros;
El libro con código de editorial “23″ (“Paidos”) ahora tiene “2″ (“Emece”) en “codigoeditorial” y el libro con código de editorial “15″ (“Planeta”) ahora almacena “1″ (valor inexistente en “editoriales”).
Si buscamos coincidencia de códigos en la tabla “editoriales”:
select l.titulo,e.nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigo;
El resultado es erróneo.
Las claves foráneas y las claves primarias deben ser del mismo tipo para poder enlazarse. Si modificamos una, debemos modificar la otra para que los valores se correspondan.
Intentemos modificar la clave en “editoriales”:
alter table editoriales
modify codigo char(1);
No lo permite porque si la modifica los valores para el campo clave quedan repetidos.
rop table libros, editoriales;
create table libros(
codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default ‘Desconocido’,
codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad smallint unsigned default 0,
primary key (codigo)
);
create table editoriales(
codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);
insert into editoriales values(2,’Emece’);
insert into editoriales values(15,’Planeta’);
insert into editoriales values(23,’Paidos’);
insert into libros values(1,’El aleph’,'Borges’,23,4.55,10);
insert into libros values(2,’Alicia en el pais de las maravillas’,'Lewis Carroll’,2,11.55,2);
insert into libros values(3,’Martin Fierro’,'Jose Hernandez’,15,7.12,4);
alter table libros
modify codigoeditorial char(1);
select * from libros;
select l.titulo,e.nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigo;
alter table editoriales
modify codigo char(1);
Fuente: http://www.mysqlya.com.ar/

No hay comentarios:

Publicar un comentario