CREACIÓN BASE DE DATOS CON TABLAS Y SUS RESPECTIVAS CONSULTAS


1.Bueno primero empezaremos a crear la base de datos con el siguiente código:
create database licores

2. Al tener la base de datos creada debemos trabajar sobre ella para ello debemos de colocar este código, el cual hace que seleccione la base de datos y basicamente estaríamos usando la base de datos licores en este caso:
use licores

3. ahora continuaremos con la creación de las respectivas tablas para eso utilizamos este código el cual sera explicado:
create table licores
(
referencia varchar (15) primary key,
tipo integer not null,
marca integer not null,
valor money not null,
fecha_cad date not null,
cantidad smallint not null
);

Bueno aquí estamos diciendo que cree una tabla llamada licores para eso utilizamos create table y el nombre que le vamos a poner a la tabla, abrimos paréntesis para colocar los campos y sus tipos de datos, entonces colocamos nombre del campo en este caso coloque referencia y varchar esto quiere decir que sera un dato de tipo alfanumérico con un espacio de 15 y not null quiere decir que es un campo obligatorio esto quiere decir que no se puede dejar en vació, luego en el otro campo vemos que hay un integer esto quiere decir que el tipo de datos sera entero, después vemos un money este lo que hace es que el tipo de dato sea de carácter moneda sirve para cuando necesitemos especificar precios de algún producto, como podemos observar hay otro llamado date este lo que especifica que el tipo de dato va hacer una fecha, luego vemos un smallint quiere decir que es un entero pequeño que quiere decir esto que solo se trabaja hasta el valor 99 y por ultimo cerramos paréntesis y punto y coma. quedando así nuestra tabla creada.

4.  ahora con este código lo que haremos es asignar una llave foránea para que cuando tengamos dos o mas tablas podamos enlazarlas entre si:
alter table licores add foreign key (marca) references marcas (codigo);

bueno explicare que hace este código el alter hace referencia a que va a alterar la tabla para esto colocamos alter table  y el nombre de la tabla en este caso licores ahí mismo le damos add que quiere decir agregar, seguimos con foreign key quiere decir que agregaremos una llave foránea, entre paréntesis debe ir el campo de la tabla seleccionada que deseamos que sea esta llave en este caso (marca) seguido con la palabra references quiere decir que haga referencia a la tabla en este caso marcas ya que en esta tabla la llave primaria es (codigo) haremos la relación cabe resaltar que para hacer una llave foránea debemos enlazar el campo deseado con una llave primaria pero eso si ambos campos deben de tener el mismo tipo de dato y tamaño porque sino tendremos errores.

5. ahora con este código lo que haremos es un indice o un apuntador para cuando vallamos hacer una consulta sea mucho mas rápido:
create unique index multiple
on licores (tipo,marca);

aqui estamos diciendo cree un indice unico en varios campos para esto colocamos create unique index multiple y vemos que hay un on licores esto quiere decir que sobre la tabla licores en este caso y abrimos parentesis seleccionando los campos deseados en este caso tipo y marca.

6. el código que veremos ahora es para insertar datos en una tabla el cual es el siguiente:
insert into tipo_licor (codigo,nombre) values (1,'tacama');

aquí estamos diciendo insert into tipo_licor quiere decir que inserte datos en la tabla tipo_licor luego entre paréntesis colocamos el nombre de los campos que utilizaremos codigo y nombre  enseguida vemos un values esto dice que evalué los que vamos a insertar y enseguida colocamos lo que queremos para datos de tipo entero no se le coloca comillas simples luego colocamos una coma y para datos de tipo ya sea varchar, char, date si debemos de emplear las comillas simples y por ultimo colocamos punto y coma.

7. ahora veremos el código para borrar registros pero eso si aplicando condiciones para que no nos borre todo lo que ya hayamos insertado en nuestra tabla:
delete from licores where referencia=2e2 and marca=2;

aquí vemos la palabra delete que quiere decir borre, luego sigue un from  que hace referencia a la tabla que le vamos a borrar el registro en este caso licores enseguida vemos un where que quiere decir cuando  y le damos las especificaciones en este caso cuando el campo referencia sea igual a 2e2 and quiere decir y que la marca sea igual a 2 y no olvidemos el punto y coma.

8. bueno ahora miraremos como hacer una consulta para ello necesitamos este codigo:
select marcas.nombre, marcas.pais
from marcas
order by marcas.nombre Asc;

aquí estamos diciendo seleccione de la tabla marcar el campo nombre para eso ponemos select marcas.nombre de igual manera para país from que como ya explicamos antes quiere decir de que tabla en este caso marcas y lo ordene por marcas.nombre en forma ascendente.

9. Por ultimo vemos otra forma para hacer consulta pero con el inner join:

select marca,nombre
from licores inner join marcas
on licores.marca = marcas.codigo

En este caso como ya explicamos dice selecciones los campos marca y nombre de la tabla licores y lo relaciones con la tabla marcar para eso colocamos un on seguido de el nombre de la tabla en este caso licores con un punto y ahí si el nombre del campo que sea igual a marcas punto código esta ultima linea de código hace referencia a las llaves primarias y foráneas ya que para aplicar esta consulta las tablas deben tener relación entre si para aplicar esto.


Bueno ahora aquí les dejo un scrip completo de todo lo que he explicado pero mas detallado espero lo prueben y le funcione.

create database licores 


use licores
create table licores
(
referencia varchar (15) primary key,
tipo integer not null,
marca integer not null,
valor money not null,
fecha_cad date not null,
cantidad smallint not null
);


create table tipo_licor
(
codigo integer primary key,
nombre varchar (15) not null
);


create table marcas
(
codigo integer primary key,
nombre varchar (15) not null
);


alter table licores add foreign key (marca) references marcas (codigo);



alter table licores add foreign key (tipo) references tipo_licor (codigo);



create unique index multiple
on licores (tipo,marca);


insert into tipo_licor (codigo,nombre) values (1,'tacama');
insert into tipo_licor (codigo,nombre) values (2,'aguardiente');
insert into tipo_licor (codigo,nombre) values (3,'vino');
insert into tipo_licor (codigo,nombre) values (4,'vino blanco');
insert into tipo_licor (codigo,nombre) values (5,'cerveza');
insert into tipo_licor (codigo,nombre) values (6,'whiskey');
insert into tipo_licor (codigo,nombre) values (7,'vodka');
insert into tipo_licor (codigo,nombre) values (8,'vino seco');
insert into tipo_licor (codigo,nombre) values (9,'amareto');
insert into tipo_licor (codigo,nombre) values (10,'makiato');
insert into tipo_licor (codigo,nombre) values (11,'tequila');
insert into tipo_licor (codigo,nombre) values (12,'cocteles');
insert into tipo_licor (codigo,nombre) values (13,'chicha');
insert into tipo_licor (codigo,nombre) values (14,'guarapo');
insert into tipo_licor (codigo,nombre) values (15,'champaña');
insert into tipo_licor (codigo,nombre) values (16,'cremas');
insert into tipo_licor (codigo,nombre) values (17,'crema whiskey');
insert into tipo_licor (codigo,nombre) values (18,'lepanto');
insert into tipo_licor (codigo,nombre) values (19,'extasis');
insert into tipo_licor (codigo,nombre) values (20,'fumin');



insert into marcas values (1,'fouji');
insert into marcas (codigo,nombre) values (2,'nectar');
insert into marcas values (3,'moscatel');
insert into marcas (codigo,nombre) values (4,'Enllaç');
insert into marcas values (5,'club colombia');
insert into marcas (codigo,nombre) values (6,'jack daniels');
insert into marcas values (7,'smirnoff');
insert into marcas (codigo, nombre) values (8,'sequito');
insert into marcas values (9,'amaretto sour');
insert into marcas (codigo, nombre) values (10,'makiatico');
insert into marcas values (11,'campanario');
insert into marcas (codigo, nombre) values (12,'margarita sour');
insert into marcas values (13,'Del chorro');
insert into marcas (codigo, nombre) values (14,'la abuela');
insert into marcas values (15,'louis roederer');
insert into marcas (codigo, nombre) values (16,'vainibay');
insert into marcas values (17,'bailys');
insert into marcas (codigo, nombre) values (18,'glor all');
insert into marcas values (19,'en la vuela');
insert into marcas (codigo, nombre) values (20,'fumanchero');



insert into licores values (2e2,2,2,25000,'30/05/2020',200);
insert into licores(referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e3,3,3,8000,'25/04/2013',300);
insert into licores values (2e4,16,16,135000,'04/12/2018',100);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e5,13,13,1500,'15/05/2021',70);
insert into licores values (2e6,4,4,235000,'28/11/2021',300);
insert into licores(referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e7,5,5,9000,'29/06/2011',1100);
insert into licores values (2e8,6,6,400000,'28/10/2024',350);
insert into licores(referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e9,1,1,6000,'26/09/2015',40);
insert into licores values (2e10,7,7,600000,'22/07/2020',400);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e11,8,8,100000,'28/10/2024',100);
insert into licores values (2e12,9,9,750400,'11/10/2014',233);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e13,10,10,30000,'21/03/2020',20);
insert into licores values (2e14,14,14,3000,'15/05/2011',100);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e15,17,17,60000,'13/08/2016',230);
insert into licores values (2e16,12,12,66900,'12/05/2011',111);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e17,11,11,45000,'17/03/2012',470);
insert into licores values (2e18,15,15,135550,'01/10/2012',549);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e19,18,18,218000,'28/10/2024',10);
insert into licores values (2e20,19,19,15000,'28/10/2011',89);
insert into licores (referencia,tipo,marca,valor,fecha_cad,cantidad) values (2e21,20,20,7000,'28/10/2011',45);



alter table marcas add
pais char (10) null;



insert into marcas (codigo, nombre,pais) values (21,'kio kant','china');
insert into marcas values (22,'mandrival','E.E.U.U');
insert into marcas (codigo, nombre,pais) values (23,'fioneri','francia');
insert into marcas values (24,'coconut','hawai');
insert into marcas (codigo, nombre,pais) values (25,'lioneli','argentina');


delete from licores where referencia=2e2 and marca=2;

delete from licores where tipo=3 or referencia=2e3;
delete from licores where tipo=16 and cantidad=100;
delete from licores where tipo=7;
delete from licores where referencia=2e7 and tipo=5;



delete from marcas where codigo=2 and nombre='nectar';
delete from marcas where codigo=3 or nombre='moscatel';
delete from marcas where codigo=16 and nombre='vainibay';
delete from marcas where codigo=7;
delete from marcas where codigo=5 and nombre='club colombia';



delete from tipo_licor where codigo=2 and nombre='aguardiente';
delete from tipo_licor where codigo=3 or nombre='vino';
delete from tipo_licor where codigo=16 and nombre='cremas';
delete from tipo_licor where codigo=7;
delete from tipo_licor where codigo=5 and nombre='cerveza';



create index indice2
on licores (valor);




select marcas.nombre, marcas.pais
from marcas
order by marcas.nombre Asc;




select marcas.nombre
from marcas
order by marcas.nombre desc;




select marca,nombre
from licores inner join marcas
on licores.marca = marcas.codigo