Comandos Mysql
Necesito
instalar xampp
Cargar xampp control pane
cargo apache y mysql presionando start
Salir a la linea de comandos cmd simbolo del sistema
digitamos la unidad donde quiere que quede el archivo
para entrar a mysql
C:
c:\>cd/xampp/mysql/bin enter
entra ahi mysql -uroot -p
comando copia de seguridad:
C:\xampp\mysql\bin>mysqldump -B -uroot -p biblioteca>j:biblioteca.sql
Comando para visualizar una base de datos en mysql
comando=show
sintaxis =show databases;
comando para crear una base de datos
create
sintaxis
create databases biblioteca;
ej: create database biblioteca; enter
comando para visualizar las tablas creadas
show
sintaxis
show tables;
comando para abrir y usar la base de datos.
use
sintaxis
use biblioteca;
Comando para crear una tabla
create
sintaxis
create table libro enter sin punto y coma
(campo1, tipo(tamaño) si es requerido o no clave p, enter
campo2 " " ", enter
campoN tipo(tamaño) si es requerido o no ), enter
para copiar codigo a otra parte en la ventanita c y le doy editar y marcar y despues editar copiar
y despues me voy para donde lo voy a copiar y copio
mysql> create table libro
-> (cod_lib char(10) not null primary key,
-> nom_lib char(40) not null,
-> val_lib float not null,
-> fec_Edi date not null);
Query OK, 0 rows affected (0.45 sec)
mysql>
comando
para ver la table creada
show tables;
mysql> show tables;
+----------------------+
| Tables_in_biblioteca |
+----------------------+
| libro |
+----------------------+
1 row in set (0.06 sec)
mysql>
comando para visualizar la estructura de la table creada
coamndo
describe
sintaxis
describe libro, nombre de la table
ejemplo:
mysql> describe libro;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| cod_lib | char(10) | NO | PRI | NULL | |
| nom_lib | char(40) | NO | | NULL | |
| val_lib | float | NO | | NULL | |
| fec_Edi | date | NO | | NULL | |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.48 sec)
para crear tabla relacional
mysql> create table lib_edi
-> (cod_lib char(10) not null,
-> cod_edi char(10) not null,
-> foreign key(cod_lib) references libro(cod_lib) on delete cascade on updat
e cascade,
-> foreign key(cod_edi) references editorial(cod_edi) on delete cascade on u
pdate cascade);
Query OK, 0 rows affected (0.25 sec)
para insertar datos a las tables
mysql> insert into libro(cod_lib,nom_lib,val_lib,fec_Edi) values('00001','Lo que
el viento se llevo',100000,'2000-12-20');
Query OK, 1 row affected (0.14 sec)
para la copia de seguridad
mysql> exit
Bye
C:\xampp\mysql\bin>mysqldump -B -uroot -p biblioteca>d:/biblioteca.sql
Enter password:
C:\xampp\mysql\bin>
Comandon para agregar campos a una tabla
add----------adicionar
sintaxis alter table mobre de la tabla add campo tipo(tamaño) requerido o no;
ejemplo
mysql> alter table usuario add tel_usu char(8) not null after nom_usu;
Query OK, 0 rows affected (0.61 sec)
despues de un campo
primero de un campo
mysql> alter table usuario add id_usu int not null first;
Query OK, 0 rows affected (0.34 sec)
Records: 0 Duplicates: 0 Warnings: 0
comando para eliminar campos
comando drop
ejemplo
mysql> alter table usuario drop id_usu;
Query OK, 0 rows affected (0.34 sec)
Records: 0 Duplicates: 0 Warnings: 0
comando para modificar tamaño y tipo
alter table usuario modify E_email char(40) not null;
comando para cambiar el nombre de un campo
mysql> alter table usuario change bar_usu barrio_usu char(15) not null;
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
comando para cambiar el nombre de una tabla
comando rename
mysql> alter table usuario rename to estudiante;
Query OK, 0 rows affected (0.16 sec)
comando para eliminiar una clave primaria
comando=drop
mysql> alter table estudiante drop primary key;
Query OK, 0 rows affected (0.84 sec)
Records: 0 Duplicates: 0 Warnings: 0
como definir una nueva clave primary
ejemplo
mysql> alter table estudiante modify tel_usu char(8) not null primary key;
Query OK, 0 rows affected (0.36 sec)
Records: 0 Duplicates: 0 Warnings: 0
pera eliminar una tabla
mysql> drop table estudiante;
Query OK, 0 rows affected (0.14 sec)
para eliminar una base de datos
drop database biblioteca;
comando para acturalizar un campo de una tabla ejemplo:
update libro set descripcion ='calculo diferencial' where idlibro='L01';
Query OK, 1 row affected (0.34 sec)
Comando para trabajar con precios
mysql> select sum(val_lib) from libro;
+--------------+
| sum(val_lib) |
+--------------+
| 707000 |
+--------------+
1 row in set (0.00 sec)
mysql> select max(val_lib) from libro;
+--------------+
| max(val_lib) |
+--------------+
| 130000 |
+--------------+
1 row in set (0.00 sec)
mysql> select max(val_lib) from libro;
+--------------+
| max(val_lib) |
+--------------+
| 130000 |
+--------------+
1 row in set (0.00 sec)
mysql> select avg(val_lib) from libro;
+--------------+
| avg(val_lib) |
+--------------+
| 70700 |
+--------------+
1 row in set (0.00 sec)
mysql> select val_lib from libro;
+---------+
| val_lib |
+---------+
| 100000 |
| 25000 |
| 55000 |
| 50000 |
| 50000 |
| 70000 |
| 72000 |
| 75000 |
| 80000 |
| 130000 |
+---------+
10 rows in set (0.00 sec)
mysql> select sum(val_lib)valor_total from libro;
+-------------+
| valor_total |
+-------------+
| 707000 |
+-------------+
1 row in set (0.00 sec)
mysql> select sum(val_lib) 'valor_total' from libro;
+-------------+
| valor_total |
+-------------+
| 707000 |
+-------------+
1 row in set (0.02 sec)
mysql> select max(val_lib)'libro mas costoso' from libro;
+-------------------+
| libro mas costoso |
+-------------------+
| 130000 |
+-------------------+
1 row in set (0.00 sec)
mysql> select min(val_lib)'libro menos costoso' from libro;
+---------------------+
| libro menos costoso |
+---------------------+
| 25000 |
+---------------------+
1 row in set (0.00 sec)
mysql> describe libro;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| cod_lib | char(10) | NO | PRI | NULL | |
| nom_lib | char(40) | NO | | NULL | |
| val_lib | float | NO | | NULL | |
| fec_lib | date | NO | | NULL | |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.08 sec)
mysql> alter table libro add can_lib int(3) not null;
Query OK, 0 rows affected (0.56 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> describe libro;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| cod_lib | char(10) | NO | PRI | NULL | |
| nom_lib | char(40) | NO | | NULL | |
| val_lib | float | NO | | NULL | |
| fec_lib | date | NO | | NULL | |
| can_lib | int(3) | NO | | NULL | |
+---------+----------+------+-----+---------+-------+
5 rows in set (0.03 sec)
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib |
+---------+--------------------------------------+---------+------------+---------+
| 0001 | lo que el viento se llevo | 100000 | 2000-12-20 | 0 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 0 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 0 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 0 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 0 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 0 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 0 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 0 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 0 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 |
+---------+--------------------------------------+---------+------------+---------+
10 rows in set (0.00 sec)
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib |
+---------+--------------------------------------+---------+------------+---------+
| 0001 | lo que el viento se llevo | 100000 | 2000-12-20 | 0 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 0 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 0 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 0 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 0 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 0 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 0 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 0 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 0 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 |
+---------+--------------------------------------+---------+------------+---------+
10 rows in set (0.00 sec)
mysql> update libro set can_lib=5 where cod_lib='0001';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib |
+---------+--------------------------------------+---------+------------+---------+
| 0001 | lo que el viento se llevo | 100000 | 2000-12-20 | 5 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 0 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 0 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 0 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 0 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 0 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 0 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 0 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 0 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 |
+---------+--------------------------------------+---------+------------+---------+
10 rows in set (0.00 sec)
mysql> select (val_lib * can_lib)'valor total libros' from libro;
+--------------------+
| valor total libros |
+--------------------+
| 500000 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
+--------------------+
10 rows in set (0.02 sec)
mysql> update libro set can_lib=30 where cod_lib='0002';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=730 where cod_lib='0003';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=100 where cod_lib='0004';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=10 where cod_lib='0005';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=999 where cod_lib='0006';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=14 where cod_lib='0007';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=300 where cod_lib='0008';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=623 where cod_lib='0009';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update libro set can_lib=210 where cod_lib='0009';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib |
+---------+--------------------------------------+---------+------------+---------+
| 0001 | lo que el viento se llevo | 100000 | 2000-12-20 | 5 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 |
+---------+--------------------------------------+---------+------------+---------+
10 rows in set (0.00 sec)
mysql> update libro set nom_lib='LO QUE EL VIENTO SE LLEVO' where cod_lib='0001';
Query OK, 1 row affected (0.23 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib |
+---------+--------------------------------------+---------+------------+---------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 |
+---------+--------------------------------------+---------+------------+---------+
10 rows in set (0.00 sec)
mysql> alter table libro add tot_lib float(10) not null;
Query OK, 0 rows affected (0.31 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+--------------------------------------+---------+------------+---------+---------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 0 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 0 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 0 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 0 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 0 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 0 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 0 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 0 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 0 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 | 0 |
+---------+--------------------------------------+---------+------------+---------+---------+
10 rows in set (0.00 sec)
mysql> update libro set tot_lib=can_lib*val_lib;
Query OK, 9 rows affected (0.03 sec)
Rows matched: 10 Changed: 9 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+--------------------------------------+---------+------------+---------+----------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 750000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 500000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 1008000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 0 | 0 |
+---------+--------------------------------------+---------+------------+---------+----------+
10 rows in set (0.00 sec)
mysql> update libro set can_lib=5 where cod_lib='0010';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+--------------------------------------+---------+------------+---------+----------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 750000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 500000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 1008000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 5 | 0 |
+---------+--------------------------------------+---------+------------+---------+----------+
10 rows in set (0.00 sec)
mysql> select * from libro where can_lib>20;
+---------+--------------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+--------------------------------------+---------+------------+---------+----------+
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 750000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
+---------+--------------------------------------+---------+------------+---------+----------+
6 rows in set (0.02 sec)
mysql> select nom_lib, val_lib from libro where val_lib<30000;
+--------------------------------------+---------+
| nom_lib | val_lib |
+--------------------------------------+---------+
| EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 |
+--------------------------------------+---------+
1 row in set (0.00 sec)
mysql> update libro set tot_lib=can_lib*val_lib;
Query OK, 1 row affected (0.03 sec)
Rows matched: 10 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+--------------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+--------------------------------------+---------+------------+---------+----------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 750000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 500000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 1008000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
| 0010 | LOS HERMANOS KAMARAZOV | 130000 | 1900-09-05 | 5 | 650000 |
+---------+--------------------------------------+---------+------------+---------+----------+
10 rows in set (0.00 sec)
mysql> select nom_lib, val_lib from libro where val_lib<30000;
+--------------------------------------+---------+
| nom_lib | val_lib |
+--------------------------------------+---------+
| EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 |
+--------------------------------------+---------+
1 row in set (0.00 sec)
mysql> /* esto es un comentario*/
mysql>
mysql> /* esto es un comentario*/
mysql> /* toda la informacion de los libros cuyo valor unitario este entre 50.000 y 100.000*/
mysql> select * from libro where val_lib>=50000 AND val_lib<=100000;
+---------+------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+------------------------------+---------+------------+---------+----------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 500000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 1008000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
+---------+------------------------------+---------+------------+---------+----------+
8 rows in set (0.00 sec)
mysql> select * from libro where val_lib between 50000 and 100000;
+---------+------------------------------+---------+------------+---------+----------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |
+---------+------------------------------+---------+------------+---------+----------+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0003 | EL PELAITO QUE NO DURO NADA | 55000 | 1986-02-28 | 730 | 40150000 |
| 0004 | MI ALMA SE LA DEJO AL DIABLO | 50000 | 1982-03-22 | 100 | 5000000 |
| 0005 | EL HUECO | 50000 | 1978-11-15 | 10 | 500000 |
| 0006 | ANA KARENINA | 70000 | 1918-05-20 | 999 | 69930000 |
| 0007 | LOS MISERABLES | 72000 | 1920-07-12 | 14 | 1008000 |
| 0008 | EL OLVIDO QUE SEREMOS | 75000 | 1990-07-24 | 300 | 22500000 |
| 0009 | CRIMEN Y CASTIGO | 80000 | 1930-08-16 | 210 | 16800000 |
+---------+------------------------------+---------+------------+---------+----------+
8 rows in set (0.01 sec)
mysql> /*visualizar toda la informacion de los libros cuyos codigos sean 0001, 0002 y 003 */
mysql> select * from libro where cod_lib between '0001' and '0002' and '003';
+---------+--------------------------------------+---------+------------+---------+---------+
| cod_lib | nom_lib | val_lib | fec_lib | can_lib | tot_lib |e
+---------+--------------------------------------+---------+------------+---------+------le---+
| 0001 | LO QUE EL VIENTO SE LLEVO | 100000 | 2000-12-20 | 5 | 500000 |
| 0002 | EL CORONEL NO TIENE QUIEN LE ESCRIBA | 25000 | 1985-01-10 | 30 | 750000 |
+---------+--------------------------------------+---------+------------+---------+---------+
2 rows in set (0.02 sec)
Ordenar datos de una tabla
order by
sintaxis
select campo1, campo2, campoN from nombre tabla order by campotipo de ordenado
ejemplo
mysql> select nom_Lib, Cant_lib, Val_Lib from libro order by nom_Lib;
+------------------------------------------+----------+---------+
| nom_Lib | Cant_lib | Val_Lib |
+------------------------------------------+----------+---------+
| BMW X4 es como los mejores perfumes | 100 | 55000 |
| CARRERAS El libro de los consagrados | 320 | 155000 |
| El BMW que sólo cinco mexicanos podrán m | 10 | 50000 |
| El Mundo Motor | 5 | 40000 |
| ELECTRICIDAD DEL AUTOMÓVIL I | 30 | 30000 |
| ENCICLOPEDIA DE LOS VEHÍCULOS 4X4, LA | 998 | 100000 |
| la Aerodinamica en los autos de competic | 32 | 55000 |
| La breve historia sobre ruedas de Julio | 80 | 50000 |
| LAMBORGHINI, THE SPIRIT OF DE BULL | 90 | 45000 |
| TUNING EL FENÓMENO DEL SIGLO XXI | 300 | 20000 |
+------------------------------------------+----------+---------+
10 rows in set (0.03 sec)
comando auto_increment :
permite crear campos que se autoincrementan automatica/
crear una tabla utilzando este camando
ejemplo
mysql> create table edicion(codigo int auto_increment, descripcion char(30) not
null, primary key (codigo));
Query OK, 0 rows affected (0.28 sec)
como quedo:
mysql> describe edicion;
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| codigo | int(11) | NO | PRI | NULL | auto_increment |
| descripcion | char(30) | NO | | NULL | |
+-------------+----------+------+-----+---------+----------------+
2 rows in set (0.03 sec)
queda asi:
mysql> insert into edicion(descripcion) value('segunda edicion'),('tercera edici
on');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from edicion;
+--------+-----------------+
| codigo | descripcion |
+--------+-----------------+
| 1 | primera edicion |
| 2 | segunda edicion |
| 3 | tercera edicion |
+--------+-----------------+
3 rows in set (0.00 sec)
Eliminar registros o Informacion
Delete
sintaxis
delete from nombre de tabla condicion, condiciones;
ejemplo:
mysql> delete from edicion where codigo=1;
Query OK, 1 row affected (0.05 sec)
mysql> select * from edicion;
+--------+-----------------+
| codigo | descripcion |
+--------+-----------------+
| 2 | segunda edicion |
| 3 | tercera edicion |
+--------+-----------------+
2 rows in set (0.00 sec)
Para borrar todos los registros de una tabla
ejemplo:
mysql> delete from edicion;
Query OK, 4 rows affected (0.06 sec)
mysql> select * from edicion;
Empty set (0.00 sec)
truncate table edicion
truncate: hace un borrado fisico de los registros de las tables y recupera los consecutivos
mientras que delete hace un borrado logico y no borra consecutivos
ejemplo:
mysql> truncate table edicion;
Query OK, 0 rows affected (0.28 sec)
importante cuando voy a ingresar un precio o variable int y float en una tabla no va dentro de comillas
2- las tipos de varible int, float no tiene que ponerle cantidad de caracteres,
3Para que se grabe todo lo que uno hace en mysql seria:
mysql>tee d:/fechas.txt
/// voy aqui en el final
para que en un precio no acepte valores negativos
ejemplo.
mysql> insert into producto(nombre,precio)value('camisa',25000),('pantalon',4500
0),('chaqueta',-100000);
Query OK, 3 rows affected (0.09 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> alter table producto modify precio float unsigned not null;
Query OK, 3 rows affected, 1 warning (1.94 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> select * from producto;
+--------+----------+--------+
| codigo | nombre | precio |
+--------+----------+--------+
| 1 | camisa | 25000 |
| 2 | pantalon | 45000 |
| 3 | chaqueta | 0 |
+--------+----------+--------+
3 rows in set (0.02 sec)
mysql> update producto set precio=100000 where codigo=3;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
MANEJO DE FECHAS
manejo de fechas /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
crear la siguiente base de datos
Create database fechas;
use fecha;
mysql> create table ejercicio
-> (codigo char(10) primary key,nombre char(30), sexo char(10), nacimiento date, hijos char(2));
Query OK, 0 rows affected (0.08 sec)
mysql> describe ejercicio;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+s
| codigo | char(10) | YES | | NULL | |
| nombre | char(30) | YES | | NULL | |
| sexo | char(10) | YES | | NULL | |
| nacimiento | date | YES | | NULL | |
| hijos | char(2) | YES | | NULL | |
+------------+----------+------+-----+---------+-------+
5 rows in set (0.09 sec)
mysql> insert into ejercicio(codigo,nombre,sexo,nacimiento,hijos) values('22663355','Angel Cuadrado','hombre','1966-05-13','0');
Query OK, 1 row affected (0.00 sec)
ingresar todos estos datos
+------------+-------------------+--------+------------+-------+
| codigo | nombre | sexo | nacimiento | hijos |
+------------+-------------------+--------+------------+-------+
| 22663355 | Angel Cuadrado | hombre | 1966-05-13 | 0 |
| 1188996633 | Yoreida Mar?a | mujer | 1978-03-05 | 2 |
| 4488663322 | Jorge Fuentes | hombre | 1980-06-22 | 2 |
| 0022559966 | Eder Pulgar | hombre | 1960-02-20 | 6 |
| 0822559966 | Mariana Gonzalez | mujer | 1982-03-24 | 1 |
| 556959966 | Angela Ruiz | mujer | 1977-11-15 | 1 |
| 0028957446 | Juan Carlos Serpa | hombre | 1982-11-25 | 2 |
| 9999957446 | Carlota Sonora | mujer | 1985-11-03 | 4 |
+------------+-------------------+--------+------------+-------+
COMANDO PARA EL AMNEJOD E FECHAS
current_date
select curren_date();
muestra la fecha del sistema
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2010-11-30 |
+----------------+
year
select year (current_date());
+----------------+
| current_date() |
+----------------+
| 2010 |
+----------------+
month
select nonth(current_date());
+----------------+
| current_date() |
+----------------+
| 12 |
+----------------+
day
select day(current_date());
+----------------+
| current_date() |
+----------------+
| 01 |
+----------------+
puede hacer intervales de dias, meses o a?os
intervalo de 15 dias
mysql> select date_add(current_date(),interval 15 day);
3 mese 3 month
5 a?os 5 year
COMANDOS
date_add o adddate
para saber cuantos dia hemos vivido en la faz de la tierra
mysql> select datediff(current_date(),'1969-01-14');
cuantos dias tengo hoy
datediff arroja resultado o diferencia en dias
a?o, mes dia
para saber cuantos a?os tiene cada uno a la fecha
mysql> select nombre, year(current_date()) - year(nacimiento) from ejercicio;
muestra la edad aproximada
con un alias seria asi mysql> select nombre, year(current_date()) - year(nacimiento) 'edad' from ejercicio;
+-------------------+------+
| nombre | edad |
+-------------------+------+
| carlos ramirez | 41 |
| marina ruiz | 32 |
| veronica gonzalez | 28 |
| isabel betancur | 33 |
| gladys bermudez | 31 |
| sandra henao | 28 |
| mario gomez | 28 |
| andrea gutierrez | 25 |
| carlos sepulveda | 36 |
| fernando perez | 30 |
| juliana arredondo | 22 |
+-------------------+------+
visualizar las personas cuyo nombre termina en a
mysql> select nombre from ejercicio where sexo='mujer' and nombre like '%a';
+----------------+
| nombre |
+----------------+
| Yoreida Mar?a |
| Carlota Sonora |
+----------------+
2 rows in set (0.02 sec)
cuantas personas son mujeres y su nombre termina en a
mysql> select count(*)from ejercicio where sexo='mujer' and nombre like '%a';
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.00 sec)
cuantas persona nacieron entre 1960 y 1969
mysql> select count(*) from ejercicio where year(nacimiento) between '1960'and 1
969;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.03 sec)
visualizar toda la informacion de las personas que tienen entre 28 y 33 a?os
mysql> select * from ejercicio where year(current_date()) - year(nacimiento) bet
ween '28' and '33';
+------------+-------------------+--------+------------+-------+
| codigo | nombre | sexo | nacimiento | hijos |
+------------+-------------------+--------+------------+-------+
| 1188996633 | Yoreida Mar?a | mujer | 1978-03-05 | 2 |
| 4488663322 | Jorge Fuentes | hombre | 1980-06-22 | 2 |
| 0822559966 | Mariana Gonzalez | mujer | 1982-03-24 | 1 |
| 0028957446 | Juan Carlos Serpa | hombre | 1982-11-25 | 2 |
+------------+-------------------+--------+------------+-------+
4 rows in set (0.01 sec)
calcular el total de hijos
mysql> select sum(hijos) from ejercicio;
+------------+
| sum(hijos) |
+------------+
| 18 |
+------------+
1 row in set (0.00 sec)
coontar y agrupar la informacion por numero de hijos
mysql> select hijos,count(*) from ejercicio group by hijos;
+-------+----------+
| hijos | count(*) |
+-------+----------+
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 4 | 1 |
| 6 | 1 |
+-------+----------+
5 rows in set (0.00 sec)
contar cuantas personas tienen <= A 28 a?os y su sexo sea mujer
mysql> select count(*) from ejercicio where year(current_date)-year(nacimiento)<
=28 and sexo='mujer';
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
Manejo de vistas VISTAS
Se utiliza para crear tablas temporales
? Crear una vista que guarde toda la infomacion de lon nombres que finalicen en a
- Comando view
- Sintaxis cr?ate view nombredelavista as consulta;
- Ejemplo: create view ejercicioa as select * from ejercicio where nombre like?%a?;
visualizar las tablas y se observa en el listado la vista creada, visualizar la informacion de la nueva vista y observar que solo guardo los nombres que terminan en a
Nota: se crea una tabla tal cual es la original, pero con la informaci?n consultada
? Crear una vista que guarde todos los datos del sexo hombre
- Comando view
- Sintaxis cr?ate view nombredelavista as consulta;
- Ejemplo: create view ejerciciosexo as select * from ejercicio where sexo= ?hombre?;
visualizar las tablas y se observa en el listado la vista creada, visualizar la informacion de la nueva vista y observar que solo guardo la informacion de los hombres
insertar el siguiente registro en la tabla ejercicio
insert into ejercicio(codigo,nombre,sexo,nacimiento,hijos) values('8005129','Alberto Lechona','hombre','1970-03-22','1');
visualizar nuevamente la informacion de las vistas creadas, y al ver la informaci?n en ambas vistas aparece alberto lechona yq que se inserto como registro nuevo y comple con las condiciones evaluadas al crarlas, lo que quiere decir que las vistas se actualizan automaticamente...
para eliminar una vista se utliliza el comando drop
sintaxis: drop view nombredelavistaaeliminar;
ejercicio: eliminar la vista ejerciciosexo
ejemplo: drop view ejerciciosexo;
visualizar las tablas y se observa que la vista fue borrada o eliminada.
visualizar vista: show create view nombrevista
y el resto como las demas tablasucto
Comando group by
en esta ocasión veamos como podemos mostrar filas y columnas agrupadas por columnas selectivas, para ello hacemos uso de la clausula group by
mysql> select ciudad, count(*) from visitante group by ciudad;
+--------------+----------+
| ciudad | count(*) |
+--------------+----------+
| Barranquilla | 3 |
| Bogota | 2 |
| Cartagena | 4 |
| Medellin | 2 |
| Santa Marta | 3 |
+--------------+----------+
5 rows in set (0.69 sec)
mysql> select ciudad, count(sexo) from visitante group by ciudad
+--------------+-------------+
| ciudad | count(sexo) |
+--------------+-------------+
| Barranquilla | 3 |
| Bogota | 2 |
| Cartagena | 4 |
| Medellin | 2 |
| Santa Marta | 3 |
+--------------+-------------+
5 rows in set (0.00 sec)
mysql> select sexo, max(monto_compra) from visitante group by sexo;
+--------+-------------------+
| sexo | max(monto_compra) |
+--------+-------------------+
| Hombre | 5000000 |
| Mujer | 4000000 |
+--------+-------------------+
2 rows in set (0.00 sec)
mysql> select sexo, min(monto_compra) from visitante group by sexo;
+--------+-------------------+
| sexo | min(monto_compra) |
+--------+-------------------+
| Hombre | 500000 |
| Mujer | 300000 |
+--------+-------------------+
2 rows in set (0.02 sec)
Para calcular el promedio del valor de compra agrupados por ciudad:
select ciudad, avg(montocompra) from visitantes
group by ciudad;
avg es promedio;
mysql> select ciudad, avg(monto_compra) from visitante group by ciudad;
+--------------+--------------------+
| ciudad | avg(monto_compra) |
+--------------+--------------------+
| Barranquilla | 1500000 |
| Bogota | 1850000 |
| Cartagena | 2275000 |
| Medellin | 750000 |
| Santa Marta | 2266666.6666666665 |
+--------------+--------------------+
5 rows in set (0.00 sec)
Podemos agrupar por más de un campo, por ejemplo, vamos a hacerlo por "ciudad" y "sexo":
select ciudad, sexo, count(*) from visitantes
group by ciudad,sexo;
También 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;
visualizar el total de compras agrupadas por sexo
Nota el mismo campo que se despues ejm de select ciudad se pone en group by ciudad;
otras funciones group by
mysql> select ciudad, sum(monto_compra) from visitante group by ciudad;
+--------------+-------------------+
| ciudad | sum(monto_compra) |
+--------------+-------------------+
| Barranquilla | 4500000 |
| Bogota | 3700000 |
| Cartagena | 9100000 |
| Medellin | 1500000 |
| Santa Marta | 6800000 |
+--------------+-------------------+
5 rows in set (0.08 sec)
mysql> select sexo, sum(monto_compra) from visitante group by sexo;
+--------+-------------------+
| sexo | sum(monto_compra) |
+--------+-------------------+
| Hombre | 11900000 |
| Mujer | 13700000 |
+--------+-------------------+
2 rows in set (0.02 sec)
mysql> select sexo,ciudad, count(*) from visitante group by sexo, ciudad;
+--------+--------------+----------+
| sexo | ciudad | count(*) |
+--------+--------------+----------+
| Hombre | Barranquilla | 1 |
| Hombre | Bogota | 2 |
| Hombre | Cartagena | 3 |
| Hombre | Medellin | 1 |
| Mujer | Barranquilla | 2 |
| Mujer | Cartagena | 1 |
| Mujer | Medellin | 1 |
| Mujer | Santa Marta | 3 |
+--------+--------------+----------+
8 rows in set (0.00 sec)
Hallar el monto de compras por ciudad que sean mayores a un 1000000
mysql> select ciudad, sum(monto_compra) as total from visitante group by ciuda
d having sum(monto_compra)>100000;
+--------------+---------+
| ciudad | total |
+--------------+---------+
| Barranquilla | 4500000 |
| Bogota | 3700000 |
| Cartagena | 9100000 |
| Medellin | 1500000 |
| Santa Marta | 6800000 |
+--------------+---------+
5 rows in set (0.06 sec)
Nota. en group by no admite where, entonces se cambia por having
visualizar las ciudades a las que van mas de 2 visitantes.
mysql> select ciudad, count(*) as total from visitante group by ciudad having
count(*)>2;
+--------------+-------+
| ciudad | total |
+--------------+-------+
| Barranquilla | 3 |
| Cartagena | 4 |
| Santa Marta | 3 |
+--------------+-------+
3 rows in set (0.00 sec)
mysql>
Consultas Relacionales
sintaxis
select campo1,campo2,campoN from tablas where condiciones;
libro------liautedi--------autor
id libro idlibro, codautor codautor
Relaciones {uno a uno rara vez(no es comun) uno o muchos(tabla intermedia) muchos a muchos(no esxite en programacion)
visualizar los libros con sus respectivos autores
analisis
1-Que deseamos mostrar (libro.idlibro,libro,descripcion)(liautedi.codautor,autor,nombre codant)
2-Que tablas se ven afectadas (libro,Liautedi,autor)
3-Condiciones en particular(logicas)no la hay
4-como se relaciona una tabla con la otra o concatenador(libro.idlibro=liautedi.idlibro)(liautedi.codautor=autor.codautor)
ejmmysql> select libro.idlibro,libro.descripcion,liautedi.cadautor,liautedi.idlibro
,autor.cadautor,autor.nombre from libro,liautedi,autor where libro.idlibro=liaut
edi.idlibro and liautedi.cadautor=autor.cadautor;
+---------+--------------+----------+---------+----------+----------------------
+
| idlibro | descripcion | cadautor | idlibro | cadautor | nombre
|
+---------+--------------+----------+---------+----------+----------------------
+
| L02 | BD ll | A01 | L02 | A01 | Luis Joyanes
|
| L06 | Contabilidad | A02 | L06 | A02 | Jorge Vasquez Posada
|
| L04 | Ingles | A04 | L04 | A04 | Riaz Khadem
|
| L04 | Ingles | A04 | L04 | A04 | Riaz Khadem
|
| L04 | Ingles | A04 | L04 | A04 | Riaz Khadem
|
| L02 | BD ll | A05 | L02 | A05 | Robert Lorber
|
| L07 | Redes | A05 | L07 | A05 | Robert Lorber
|
+---------+--------------+----------+---------+----------+----------------------
+
7 rows in set (0.08 sec)
mysql>
Nota:
para aumentar el tamaño de la ventana de mysql ventana c: clic derecho-propiedades-diseño
organizo ancho y alto
consultar los libros cuyo autor es Riaz khaden:
consultar las editoriales que tienen libros robert lorber publicar en evaluaciones practicas
mysql> select libro.idlibro,libro.descripcion,autor.cadautor,autor.nombre from l
ibro,autor where autor.nombre="Riaz Khadem";
+---------+---------------------+----------+-------------+
| idlibro | descripcion | cadautor | nombre |
+---------+---------------------+----------+-------------+
| L01 | Calculo ll | A04 | Riaz Khadem |
| L02 | BD ll | A04 | Riaz Khadem |
| L03 | Estructura de datos | A04 | Riaz Khadem |
| L04 | Ingles | A04 | Riaz Khadem |
| L05 | Admon en una pagina | A04 | Riaz Khadem |
| L06 | Contabilidad | A04 | Riaz Khadem |
| L07 | Redes | A04 | Riaz Khadem |
| L08 | Diagramacion | A04 | Riaz Khadem |
+---------+---------------------+----------+-------------+
8 rows in set (0.00 sec)
mysql> select libro.descripcion,autor.nombre from libro,autor where autor.nomb
re="Riaz Khadem";
+---------------------+-------------+
| descripcion | nombre |
+---------------------+-------------+
| Calculo ll | Riaz Khadem |
| BD ll | Riaz Khadem |
| Estructura de datos | Riaz Khadem |
| Ingles | Riaz Khadem |
| Admon en una pagina | Riaz Khadem |
| Contabilidad | Riaz Khadem |
| Redes | Riaz Khadem |
| Diagramacion | Riaz Khadem |
+---------------------+-------------+
8 rows in set (0.00 sec)
mysql>
Taller importante
Taller
1Consultar el precio de los libros de redes y bases de datos
2Consultar los libros que pertenezcan a la materia de contabiidad, y el nombre del autor del libro y las editoriales que tienen a su cargo lo publicacion del libro
3Sumar los precios de los libros cuyo numero de paginas sea menor de 180
4consultar los nombres de los libros que esten en la editorial Mc Graw hill"
5Consultar los libros cuyo nombre comiencen en e o terminen en a
6Actualizar el nombre del libro calculo 2 por calculo diferencial
7Muestre los registros de los libros de diagramacion y redes y administracion en una pagina
8consultar el libro que tiene el menor numero de paginas
9consultar el libro que tiene mayor precio
10Consultar el promedio del precio de los libros
11Modificar la Tabla editorial el campo nombre por descripcion
12Consultar los libros que estan en la editorial aveja negra
13Consultar quien es el autor(es) del libro base de datos2 y que editorial o editoriales publico este libro
analisis
comando
que tengo que hacer
punto 1
Consultar el precio de los libros de redes y bases de datos
Analisis
Que deseamos mostrar
( libro.descripcion, libro.precio)
*Tablas involucradas( libro)
*Condiciones en particular(precio de libros de redes y base de datos)
mysql> select precio,descripcion from libro where descripcion='Redes' or descripcion='BD ll';
+--------+-------------+
| precio | descripcion |
+--------+-------------+
| 65000 | BD ll |
| 32500 | Redes |
+--------+-------------+
2 rows in set (0.00 sec)
punto 2
Consultar los libros que pertenezcan a la materia de contabiidad, y el nombre del autor del libro y las editoriales que tienen a su cargo lo publicacion del libro
Analisis
*Que deseamos mostrar
( liautedi.idlibro, libro.descripcion, autor.nombre, liautedi.codedit, editorial.descri
cion)
*Tablas involucradas( libro,liautedi,autor,editorial)
*Condiciones en particular(libro que pertenezcan a la materia de contabilidad)
*como se relaciona las tablas(editorial.codedit=liautedi.codedit,liautedi.idlibro=libro.idlibro)
mysql> select liautedi.idlibro, libro.descripcion, autor.nombre, liautedi.codedit, editorial.descri
cion from libro,autor, editorial,liautedi where libro.descripcion='Contabilidad' and libro.idlibro=
iautedi.idlibro and liautedi.codedit=editorial.codedit;
+---------+--------------+----------------------+---------+-------------+
| idlibro | descripcion | nombre | codedit | descripcion |
+---------+--------------+----------------------+---------+-------------+
| L06 | Contabilidad | Luis Joyanes | E02 | Norma |
| L06 | Contabilidad | Jorge Vasquez Posada | E02 | Norma |
| L06 | Contabilidad | Jhon Soars | E02 | Norma |
| L06 | Contabilidad | Riaz Khadem | E02 | Norma |
| L06 | Contabilidad | Robert Lorber | E02 | Norma |
| L06 | Contabilidad | Mario Dream | E02 | Norma |
+---------+--------------+----------------------+---------+-------------+
6 rows in set (0.36 sec)
mysql>
punto 3
Sumar los precios de los libros cuyo numero de paginas sea menor de 180
Analisis.
*Que deseamos mostrar
(libro.idlibro,libro.descripcion, libro.precio, libro.nropaginas, suma)
*Tablas involucradas( libro)
*Condiciones en particular(libro pag>180)
mysql> select idlibro, descripcion,precio,nropagina from libro where nropagina<180
+---------+---------------------+--------+-----------+
| idlibro | descripcion | precio | nropagina |
+---------+---------------------+--------+-----------+
| L01 | Calculo ll | 55000 | 120 |
| L02 | BD ll | 65000 | 150 |
| L05 | Admon en una pagina | 7500 | 70 |
| L06 | Contabilidad | 25700 | 170 |
| L08 | Diagramacion | 45000 | 85 |
+---------+---------------------+--------+-----------+
5 rows in set (0.00 sec)
mysql>
mysql> select sum(precio) from libro where nropagina<180;
+-------------+
| sum(precio) |
+-------------+
| 198200 |
+-------------+
1 row in set (0.00 sec)
punto 4
consultar los nombres de los libros que esten en la editorial Mc Graw hill"
Analisis
*.Que deseamos mostrar
( libro.descripcion, liautedi.idlibro, liautedi.codedit editorial.nombre)
*Tablas involucradas( libro,codedit,nombre)
*Condiciones en particular(libros que esten en la editorial "Mc Graw hill")
*como se relaciona las tablas(editorial.codedit=liautedi.codedit,liautedi.idlibro=libro,idlibro)
mysql> select liautedi.idlibro,libro.descripcion,liautedi.codedit,editorial.nombre from libro,editor
ial,liautedi where editorial.nombre="Mc Graw Hill" and libro.idlibro=liautedi.idlibro and editorial
.codedit=liautedi.codedit;
+---------+-------------+---------+--------------+
| idlibro | descripcion | codedit | nombre |
+---------+-------------+---------+--------------+
| L02 | BD ll | E03 | Mc Graw Hill |
| L07 | Redes | E03 | Mc Graw Hill |
| L04 | Ingles | E03 | Mc Graw Hill |
+---------+-------------+---------+--------------+
3 rows in set (0.00 sec)
mysql>
punto 5
5 Consultar los libros cuyo nombre comiencen en e o terminen en a
Analisis
*.Que deseamos mostrar
( libro todos los registros)
*Tablas involucradas( libro)
*Condiciones en particular(Descripcion de libro que termine en a y empiece en e)
mysql> select * from libro where descripcion like'e%' or descripcion like '%a';
+---------+---------------------+-----------+--------+-----------+
| idlibro | descripcion | nropagina | precio | codigomat |
+---------+---------------------+-----------+--------+-----------+
| L03 | Estructura de datos | 180 | 85000 | M03 |
| L05 | Admon en una pagina | 70 | 7500 | M05 |
+---------+---------------------+-----------+--------+-----------+
2 rows in set (0.00 sec)
mysql>
6 Punto
Actualizar el nombre del libro calculo 2 por calculo diferencial
Analisis
*.Que deseamos mostrar
el cambio de nombre del libro
*Tablas involucradas( libro)
mysql> select * from libro;
+---------+---------------------+-----------+--------+-----------+
| idlibro | descripcion | nropagina | precio | codigomat |
+---------+---------------------+-----------+--------+-----------+
| L01 | Calculo ll | 120 | 55000 | M01 |
| L02 | BD ll | 150 | 65000 | M09 |
| L03 | Estructura de datos | 180 | 85000 | M03 |
| L04 | Ingles | 280 | 105000 | M04 |
| L05 | Admon en una pagina | 70 | 7500 | M05 |
| L06 | Contabilidad | 170 | 25700 | M06 |
| L07 | Redes | 370 | 32500 | M07 |
| L08 | Diagramacion | 85 | 45000 | M08 |
+---------+---------------------+-----------+--------+-----------+
8 rows in set (0.00 sec)
mysql> update libro set descripcion ='calculo diferencial' where idlibro='L01';
Query OK, 1 row affected (0.34 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from libro;
+---------+---------------------+-----------+--------+-----------+
| idlibro | descripcion | nropagina | precio | codigomat |
+---------+---------------------+-----------+--------+-----------+
| L01 | calculo diferencial | 120 | 55000 | M01 |
| L02 | BD ll | 150 | 65000 | M09 |
| L03 | Estructura de datos | 180 | 85000 | M03 |
| L04 | Ingles | 280 | 105000 | M04 |
| L05 | Admon en una pagina | 70 | 7500 | M05 |
| L06 | Contabilidad | 170 | 25700 | M06 |
| L07 | Redes | 370 | 32500 | M07 |
| L08 | Diagramacion | 85 | 45000 | M08 |
+---------+---------------------+-----------+--------+-----------+
8 rows in set (0.00 sec)
mysql>
punto 7
Muestre los registros de los libros de diagramacion y redes y administracion en una pagina
Analisis
*.Que deseamos mostrar
( registros de tabla libro
*Tablas involucradas( libro)
*Condiciones en particular(registros de los libros diagramacion, redes y administracion en una pagiana)
mysql> select * from libro where libro.descripcion='Diagramacion' or libro.descripcion='Redes' or li
bro.descripcion='Admon en una Pagina';
+---------+---------------------+-----------+--------+-----------+
| idlibro | descripcion | nropagina | precio | codigomat |
+---------+---------------------+-----------+--------+-----------+
| L05 | Admon en una pagina | 70 | 7500 | M05 |
| L07 | Redes | 370 | 32500 | M07 |
| L08 | Diagramacion | 85 | 45000 | M08 |
+---------+---------------------+-----------+--------+-----------+
3 rows in set (0.00 sec)
punto 8
consultar el libro que tiene el menor numero de paginas
Analisis
*Que deseamos mostrar
(libro.idlibro, libro.nropagina, libro.descripcion)
*Tablas involucradas( libro)
*Condiciones en particular(libro que tiene el menor numero de paginas)
mysql> select descripcion, idlibro,min(nropagina)from libro group by descripcion, idlibro;
+---------------------+---------+----------------+
| descripcion | idlibro | min(nropagina) |
+---------------------+---------+----------------+
| Admon en una pagina | L05 | 70 |
| BD ll | L02 | 150 |
| calculo diferencial | L01 | 120 |
| Contabilidad | L06 | 170 |
| Diagramacion | L08 | 85 |
| Estructura de datos | L03 | 180 |
| Ingles | L04 | 280 |
| Redes | L07 | 370 |
+---------------------+---------+----------------+
8 rows in set (0.00 sec)
mysql> select descripcion, idlibro,min(nropagina)from libro descripcion, idlibro;
ERROR 1146 (42S02): Table 'libreria.idlibro' doesn't exist
mysql> select descripcion, idlibro,min(nropagina)from libro;
+---------------------+---------+----------------+
| descripcion | idlibro | min(nropagina) |
+---------------------+---------+----------------+
| calculo diferencial | L01 | 70 |
+---------------------+---------+----------------+
1 row in set (0.00 sec)
punto 9
consultar el libro que tiene mayor precio
Analisis
*Que deseamos mostrar
(libro.idlibro, libro.precio, libro.descripcion)
*Tablas involucradas( libro)
*Condiciones en particular(libro que tiene el mayor precio)
mysql> select max(precio)from libro;
+-------------+
| max(precio) |
+-------------+
| 105000 |
+-------------+
1 row in set (0.00 sec)
mysql> select descripcion, idlibro,max(precio) from libro;
+---------------------+---------+-------------+
| descripcion | idlibro | max(precio) |
+---------------------+---------+-------------+
| calculo diferencial | L01 | 105000 |
+---------------------+---------+-------------+
1 row in set (0.00 sec)
mysql> select descripcion, idlibro,max(precio)from libro group by descripcion, idlibro;
+---------------------+---------+-------------+
| descripcion | idlibro | max(precio) |
+---------------------+---------+-------------+
| Admon en una pagina | L05 | 7500 |
| BD ll | L02 | 65000 |
| calculo diferencial | L01 | 55000 |
| Contabilidad | L06 | 25700 |
| Diagramacion | L08 | 45000 |
| Estructura de datos | L03 | 85000 |
| Ingles | L04 | 105000 |
| Redes | L07 | 32500 |
+---------------------+---------+-------------+
8 rows in set (0.00 sec)
mysql>
punto 10
Consultar el promedio del precio de los libros
Analisis
*Que deseamos mostrar
(promedio del precio de los libros)
*Tablas involucradas( libro)
*Condiciones en particular(ninguna)
mysql> select avg(precio) from libro;
+-------------+
| avg(precio) |
+-------------+
| 52587.5000 |
+-------------+
1 row in set (0.00 sec)
punto 11
Modificar la Tabla editorial el campo nombre por descripcion
Analisis
*Que deseamos mostrar
(actualizar el campo nombre de la tabla editorial por descripcion)
*Tablas involucradas( editorial)
*Condiciones en particular(ninguna)
mysql> alter table editorial change nombre descripcion char(30)not null;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from editorial;
+---------+--------------+
| codedit | descripcion |
+---------+--------------+
| E01 | Oveja Negra |
| E02 | Norma |
| E03 | Mc Graw Hill |
+---------+--------------+
3 rows in set (0.03 sec)
Punto 12
Consultar los libros que estan en la editorial Oveja negra
Analisis
*.Que deseamos mostrar
( libro.descripcion, liautedi.idlibro, liautedi.codedit editorial.nombre)
*Tablas involucradas( libro,codedit,nombre)
*Condiciones en particular(libros que esten en la editorial "Oveja Negra")
*como se relaciona las tablas(editorial.codedit=liautedi.codedit,liautedi.idlibro=libro,idlibro)
mysql> select liautedi.idlibro,libro.descripcion,liautedi.codedit,editorial.descripcion from libro,l
iautedi, editorial where editorial.descripcion='Oveja Negra' and libro.idlibro=liautedi.idlibro and
editorial.codedit=liautedi.codedit;
+---------+-------------+---------+-------------+
| idlibro | descripcion | codedit | descripcion |
+---------+-------------+---------+-------------+
| L02 | BD ll | E01 | Oveja Negra |
| L04 | Ingles | E01 | Oveja Negra |
+---------+-------------+---------+-------------+
2 rows in set (0.30 sec)
mysql>
Punto 13
Consultar quien es el autor(es) del libro base de datos2 y que editorial o editoriales publico este libro
Analisis
.Que deseamos mostrar
( Autor.nombre, libro.descripcion, liautedi.codedit, liautedi.codedit,liautedi.cadautor editorial.descripcion)
*Tablas involucradas( libro,liautedi,autor)
*Condiciones en particular(libro que sea base de datos2)
*como se relaciona las tablas(editorial.codedit=liautedi.codedit,liautedi.cadautor=autor.cadautor)
mysql> select libro.descripcion, liautedi.cadautor, autor.nombre, liautedi.codedit, editorial.descri
pcion from libro,liautedi, autor, editorial where libro.descripcion='BD ll' and editorial.codedit=li
autedi.codedit and liautedi.cadautor=autor.cadautor;
+-------------+----------+----------------------+---------+--------------+
| descripcion | cadautor | nombre | codedit | descripcion |
+-------------+----------+----------------------+---------+--------------+
| BD ll | A01 | Luis Joyanes | E01 | Oveja Negra |
| BD ll | A04 | Riaz Khadem | E01 | Oveja Negra |
| BD ll | A02 | Jorge Vasquez Posada | E02 | Norma |
| BD ll | A04 | Riaz Khadem | E02 | Norma |
| BD ll | A05 | Robert Lorber | E03 | Mc Graw Hill |
| BD ll | A05 | Robert Lorber | E03 | Mc Graw Hill |
| BD ll | A04 | Riaz Khadem | E03 | Mc Graw Hill |
+-------------+----------+----------------------+---------+--------------+
7 rows in set (0.00 sec)
Comando Joim permite hacer consultas mas estructurales relacionales
Visualizar los libros con sus respectivos actores
Sintaxis
Select * from tabla1 inner join tabla 2 on tabla1.id=tabla2.id inner join tabla3 on tabla2.id=tabla3.id2;
mysql> select * from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join autor on liautedi.cadautor=autor.cadautor;
+---------+--------------+-----------+--------+-----------+---------+----------+---------+----------+----------------------+
| idlibro | descripcion | nropagina | precio | codigomat | idlibro | cadautor | codedit | cadautor | nombre |
+---------+--------------+-----------+--------+-----------+---------+----------+---------+----------+----------------------+
| L02 | BD ll | 150 | 65000 | M09 | L02 | A01 | E01 | A01 | Luis Joyanes |
| L06 | Contabilidad | 170 | 25700 | M06 | L06 | A02 | E02 | A02 | Jorge Vasquez Posada |
| L04 | Ingles | 280 | 105000 | M04 | L04 | A04 | E01 | A04 | Riaz Khadem |
| L04 | Ingles | 280 | 105000 | M04 | L04 | A04 | E02 | A04 | Riaz Khadem |
| L04 | Ingles | 280 | 105000 | M04 | L04 | A04 | E03 | A04 | Riaz Khadem |
| L02 | BD ll | 150 | 65000 | M09 | L02 | A05 | E03 | A05 | Robert Lorber |
| L07 | Redes | 370 | 32500 | M07 | L07 | A05 | E03 | A05 | Robert Lorber |
+---------+--------------+-----------+--------+-----------+---------+----------+---------+----------+----------------------+
7 rows in set (0.00 sec)
mysql>
left join (significa lo que no existe) datos que no coincidan
sintaxis
select * from tabla1 left join tabla2 on tabla.id=tabla2.id where tabla2 .id is null
Se utiliza para saber que registros no tienen correspondencia en otra tabla. Verifica de una tabla izquierda hacia una derecha, si no encuentra coincidencias se genera una fila extra con todos los campos seteados en null ejemplo
visualizar los libros que no tinen autores asignadosn
mysql> select * from libro left join liautedi on libro.idlibro=liautedi.idlibro where liautedi.idlibro is null;
+---------+---------------------+-----------+--------+-----------+---------+----------+---------+
| idlibro | descripcion | nropagina | precio | codigomat | idlibro | cadautor | codedit |
+---------+---------------------+-----------+--------+-----------+---------+----------+---------+
| L01 | Calculo ll | 120 | 55000 | M01 | NULL | NULL | NULL |
| L03 | Estructura de datos | 180 | 85000 | M03 | NULL | NULL | NULL |
| L05 | Admon en una pagina | 70 | 7500 | M05 | NULL | NULL | NULL |
| L08 | Diagramacion | 85 | 45000 | M08 | NULL | NULL | NULL |
+---------+---------------------+-----------+--------+-----------+---------+----------+---------+
4 rows in set (0.02 sec)
mysql>
Visualizar que actores no tienen libros publicados
mysql> select * from autor left join liautedi on autor.cadautor=liautedi.cadautor where liautedi.cadautor is null;
+----------+-------------+---------+----------+---------+
| cadautor | nombre | idlibro | cadautor | codedit |
+----------+-------------+---------+----------+---------+
| A03 | Jhon Soars | NULL | NULL | NULL |
| A06 | Mario Dream | NULL | NULL | NULL |
+----------+-------------+---------+----------+---------+
2 rows in set (0.00 sec)
mysql>
visualizar un listado de los autores que han escrito libros
mysql> select autor.nombre from autor right join liautedi on autor.cadautor=liautedi.cadautor;
+----------------------+
| nombre |
+----------------------+
| Luis Joyanes |
| Jorge Vasquez Posada |
| Riaz Khadem |
| Riaz Khadem |
| Riaz Khadem |
| Robert Lorber |
| Robert Lorber |
+----------------------+
7 rows in set (0.05 sec)
mysql>
distinct comando adicional que permite no mostrar datos repetidos
right que conincidan los datos
este comando es para no repetir
mysql> select distinct autor.nombre from autor right join liautedi on autor.cadautor=liautedi.cadautor;
+----------------------+
| nombre |
+----------------------+
| Luis Joyanes |
| Jorge Vasquez Posada |
| Riaz Khadem |
| Robert Lorber |
+----------------------+
4 rows in set (0.08 sec)
Subconsultas
select...Select(s)
update...select(s)
delete...select(s)
insert....select(s)
ejemplo update
update tabla set campo=valor where Condicion;
Update tabla set(subconsulta),(subconsulta), campo=Valor where subconsultas;
ejemplo : Calcular el valor venta de la tabla detalle con un incremento del 23% del valor unitario de la tabla articulo
Analisis
campo a reemplazar...................... valor venta de la tabla detalle
con que reeemplazar.....................con valor unitario(de la tabla articulo+ (valorunitario*0.23)
condiciones..................no
como se relacionan (articulo.codigo=detalle.codigo)
comando que resuelve: update
la relacion se hace de la tabla mas interna a la mas externa ;
mysql> update detalle set valorventa=(select valorunitario+(valorunitario*0.23)
from articulo where articulo.codigo=detalle.codigo);
Query OK, 7 rows affected (0.03 sec)
Rows matched: 7 Changed: 7 Warnings: 0
mysql> select * from detalle;
+----+------------+------------+----------+------------+-------+--------+
| id | nrofactura | fecha | cantidad | valorventa | total | codigo |
+----+------------+------------+----------+------------+-------+--------+
| 1 | 1200 | 2010-01-30 | 3 | 1168500 | 0 | 150 |
| 2 | 1250 | 2010-02-13 | 5 | 1168500 | 0 | 150 |
| 3 | 1250 | 2010-02-13 | 7 | 922500 | 0 | 250 |
| 4 | 1300 | 2010-03-02 | 1 | 1205400 | 0 | 350 |
| 5 | 1300 | 2010-03-02 | 2 | 135300 | 0 | 300 |
| 6 | 1400 | 2010-03-11 | 3 | 1476000 | 0 | 200 |
| 7 | 1500 | 2010-03-21 | 5 | 922500 | 0 | 250 |
+----+------------+------------+----------+------------+-------+--------+
7 rows in set (0.00 sec)
2 calcular el total de la tabla detallle
Analisis
campo a reemplazar..............total
con que.....................cantidad*valorventa
comando..................update
mysql> update detalle set total=cantidad*valorventa;
Query OK, 7 rows affected (0.00 sec)
Rows matched: 7 Changed: 7 Warnings: 0
mysql> select * from detalle;
+----+------------+------------+----------+------------+---------+--------+
| id | nrofactura | fecha | cantidad | valorventa | total | codigo |
+----+------------+------------+----------+------------+---------+--------+
| 1 | 1200 | 2010-01-30 | 3 | 1168500 | 3505500 | 150 |
| 2 | 1250 | 2010-02-13 | 5 | 1168500 | 5842500 | 150 |
| 3 | 1250 | 2010-02-13 | 7 | 922500 | 6457500 | 250 |
| 4 | 1300 | 2010-03-02 | 1 | 1205400 | 1205400 | 350 |
| 5 | 1300 | 2010-03-02 | 2 | 135300 | 270600 | 300 |
| 6 | 1400 | 2010-03-11 | 3 | 1476000 | 4428000 | 200 |
| 7 | 1500 | 2010-03-21 | 5 | 922500 | 4612500 | 250 |
+----+------------+------------+----------+------------+---------+--------+
7 rows in set (0.00 sec)
mysql>
3 calcular las existencias segun la tabla detalle de cada articulo
Analisis
campo reemplazar.................................existencia
con que...............cantidad - suma(cantidad vendida)de detalle
condiciones ................segun la tabla detalle
relaciones................. detalle.codigo=articulo.codigo
comando....update
mysql> update articulo set existencia=cantidad-(select sum(cantidad) from detal
le where detalle.codigo=articulo.codigo);
Query OK, 5 rows affected (0.02 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> select * from articulo;
+--------+------------+----------+---------------+------------+
| codigo | articulo | cantidad | valorunitario | existencia |
+--------+------------+----------+---------------+------------+
| 150 | nevera | 25 | 950000 | 17 |
| 200 | televisor | 11 | 1200000 | 8 |
| 250 | estufa | 30 | 750000 | 18 |
| 300 | ventilador | 17 | 110000 | 15 |
| 350 | lavadora | 13 | 980000 | 12 |
+--------+------------+----------+---------------+------------+
5 rows in set (0.00 sec)
mysql>
4Eliminar los articulos que hallan vendidos entre 3 y 5 articulos
analisis
Analisis
eliminar tabla articulo
condiciones ...............cantidad tabla detalle entre 3 o 5 y codigoArticulo=codigoDetalle
comando....delete
pendiente
Duplicar una tabla
create table copiade_talle like detalle
5 Crear una copia o duplicar detalle
mysql> create table copia_detalle like detalle;
Query OK, 0 rows affected (0.11 sec)
mysql> select show tables;
mysql> show tables;
+------------------------+
| Tables_in_subconsultas |
+------------------------+
| articulo |
| copia_detalle |
| detalle |
+------------------------+
3 rows in set (0.00 sec)
mysql>
llenarla con la informacion de detalle pero solo con los registros del mes de febrero,
mysql> insert into copia_detalle select * from detalle where month(fecha)=2;
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from copia_detalle;
+----+------------+------------+----------+------------+---------+--------+
| id | nrofactura | fecha | cantidad | valorventa | total | codigo |
+----+------------+------------+----------+------------+---------+--------+
| 2 | 1250 | 2010-02-13 | 5 | 1168500 | 5842500 | 150 |
| 3 | 1250 | 2010-02-13 | 7 | 922500 | 6457500 | 250 |
+----+------------+------------+----------+------------+---------+--------+
2 rows in set (0.00 sec)
mysql>consultas
taller sub
PROCEDIMIENTOS ALMACENADOS
Subprogramas
Son importantes para no repetir instrucciones o por cuestión de seguridad
Trabajan con:
Select
Update
Insert
Delete
Trabajo simple (automático), dinámico (parámetros)
Procedimiento para insertar
Delimiter //
Create procedure insertar(in car char(10), in nom char(40), est char(10))
Begin
Insert into alumno values(car,nom,est);
End
//
Delimiter ;
Ver los procedimientos almacenados creados
Show procedure status; (visualiza los procedimientos creados)
Ver el contenido del procedimiento
Show créate procedure nombre del procedimiento;
Cargar o ejecutar un procedimiento
Call insertar(‘012’,’sofia’); e inserta el registro a la tabla
Para borrar un procedimiento
Drop procedure y el nombre del procedimiento.
Procedimiento para listar
Delimiter //
Créate procedure listar()
Begin
Select * from alumno;
End
//
Delimiter ;
Procedimiento para consultar alumno
Delimiter //
Create procedure cons_alumno(in car char(10))
Begin
Select *from alumno where carnet=car;
End
//
Delimieter ;
LLAMADO AL PROCEDIMIENTO CONSULTAR ALUMNO y consultar el alumno que se desee
call cons_alumno ('0001');
O digita el código que desee consultar o calve primaria
Procedimiento para eliminar alumno
Delimiter //
Créate procedure eli_alumno(in car char(10))
Begin
Delete from alumno where carnet=car;
End
//
Delimieter ;
LLAMADO AL PROCEDIMIENTO ELIMINAR ALUMNO y eliminar el alumno que se desee
call eli_alumno ('0001');
O digita el código que desee eliminar o calve primaria
Procedimiento para modificar alumno
Delimiter //
Create procedure modi_alumno(in car char(10), in nom char(40))
Begin
Update alumno set nombre=nom where carnet=car;
End
//
Delimieter ;
LLAMADO AL PROCEDIMIENTO MODIFICAR ALUMNO y eliminar el alumno que se desee
call modi_alumno ('0001',’Juan Pablo rava’);
O digita el código y la información que de todos los campos para actualizarlos o calve primaria.
Introducciòn a trigger
los triggers o disparadores, son procedimientos automaticos que se activan despues de una accion, esta accion puede ser un insert, delete o update
se trabaja con dos identificadores que son after (despues de) before (antes de)
dentro de las condiciones que tienen los triggers esta que no pueden existir dos o mas after para el insert o para el delete o para el update
el after es el caso mas comun de los triggers, se activa despues de una sentencia y afecta solo tablas distintas a la que lo esta invocando, situacion que no sucede con el before que solo afecta la tabla que lo invoca
la sintaxis general es
delimiter //
create trigger nombre after (insert, delete, update) on tabla
for each row //recorre fila por fila (arreglos o matrices)
begin
sentencia
end
//
delimiter ;
ejemplo
delimiter //
create trigger valorventa after insert on articulo
for each row
begin
update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo);
end
//
delimiter ;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
delimiter //
create trigger actualizar_existenciap after insert on detalle
for each row
begin
update articulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo = articulo.codigo);
end
//
delimiter ;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
mysql> show triggers;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
delimiter //
create trigger valortotal before insert on detalle
for each row
begin
update detalle set total = cantidad * valorventa;
end
//
delimiter ;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
mysql> create table copia_articulo like articulo;
Query OK, 0 rows affected (0.21 sec)
mysql> show tables;
+------------------------+
| Tables_in_subconsultas |
+------------------------+
| articulo |
| copia_articulo |
| copia_nuevos |
| detalle |
+------------------------+
4 rows in set (0.00 sec)
mysql> insert into copia_articulo select * from articulo;
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> show tables;
+------------------------+
| Tables_in_subconsultas |
+------------------------+
| articulo |
| copia_articulo |
| copia_nuevos |
| detalle |
+------------------------+
4 rows in set (0.00 sec)
mysql> select * from copia_articulo;
+--------+------------+----------+---------------+------------+
| codigo | articulo | cantidad | valorunitario | existencia |
+--------+------------+----------+---------------+------------+
| 150 | nevera | 25 | 950000 | 0 |
| 200 | televisor | 11 | 1200000 | 0 |
| 250 | estufa | 30 | 750000 | 0 |
| 300 | ventilador | 17 | 110000 | 0 |
| 350 | lavadora | 13 | 980000 | 0 |
+--------+------------+----------+---------------+------------+
5 rows in set (0.00 sec)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Cree una tabla que le permita guardar una copia_nuevos relación de los nuevos productos ingresados en copia_articulo al inventario.(Trigger)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
d) Cree un procedimiento almacentado que le permita ingresar un nuevo producto (Al ingresar el nuevo producto se
debe disparar el trigger y hacer la copia anteriormente solicitada)
Ejemplo :...........................
mysql> delimiter //
mysql> create trigger valorventa after insert on articulo
-> for each row
-> begin
-> update detalle set valorventa=(select valorunitario+(valorunitario*0.23)
from articulo where articulo.codigo=detalle.codigo);
-> end
-> //
Query OK, 0 rows affected (0.10 sec)
mysql> show trigger;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'trigg
er' at line 1
mysql> show triggers;
+------------+--------+----------+----------------------------------------------
--------------------------------------------------------------------------------
-----------+--------+---------+------------------------+----------------+-------
---------------+----------------------+--------------------+
| Trigger | Event | Table | Statement
| Timing | Created | sql_mode | Definer | charac
ter_set_client | collation_connection | Database Collation |
+------------+--------+----------+----------------------------------------------
--------------------------------------------------------------------------------
-----------+--------+---------+------------------------+----------------+-------
---------------+----------------------+--------------------+
| valorventa | INSERT | articulo | begin
update detalle set valorventa=(select valorunitario+(valorunitario*0.23) from ar
ticulo where articulo.codigo=detalle.codigo);
end | AFTER | NULL | NO_ENGINE_SUBSTITUTION | root@localhost | cp850
| cp850_general_ci | utf8_general_ci |
+------------+--------+----------+----------------------------------------------
--------------------------------------------------------------------------------
-----------+--------+---------+------------------------+----------------+-------
---------------+----------------------+--------------------+
1 row in set (0.05 sec)
mysql> select * from articulo;
+--------+------------+----------+---------------+------------+
| codigo | articulo | cantidad | valorunitario | existencia |
+--------+------------+----------+---------------+------------+
| 150 | nevera | 25 | 950000 | 0 |
| 200 | televisor | 11 | 1200000 | 0 |
| 250 | estufa | 30 | 750000 | 0 |
| 300 | ventilador | 17 | 110000 | 0 |
| 350 | lavadora | 13 | 980000 | 0 |
+--------+------------+----------+---------------+------------+
5 rows in set (0.03 sec)
mysql> select * from detalle;
+----+------------+------------+----------+------------+-------+--------+
| id | nrofactura | fecha | cantidad | valorventa | total | codigo |
+----+------------+------------+----------+------------+-------+--------+
| 1 | 1200 | 2010-01-30 | 3 | 0 | 0 | 150 |
| 2 | 1250 | 2010-02-13 | 5 | 0 | 0 | 150 |
| 3 | 1250 | 2010-02-13 | 7 | 0 | 0 | 250 |
| 4 | 1300 | 2010-03-02 | 1 | 0 | 0 | 350 |
| 5 | 1300 | 2010-03-02 | 2 | 0 | 0 | 300 |
| 6 | 1400 | 2010-03-11 | 3 | 0 | 0 | 200 |
| 7 | 1500 | 2010-03-21 | 5 | 0 | 0 | 250 |
+----+------------+------------+----------+------------+-------+--------+
7 rows in set (0.00 sec)
mysql> insert into articulo(codigo, articulo,cantidad,valorunitario, existencia)values('400','l
icuadora',10,80000,6);
Query OK, 1 row affected (0.09 sec)
mysql> select * from detalle;
+----+------------+------------+----------+------------+-------+--------+
| id | nrofactura | fecha | cantidad | valorventa | total | codigo |
+----+------------+------------+----------+------------+-------+--------+
| 1 | 1200 | 2010-01-30 | 3 | 1168500 | 0 | 150 |
| 2 | 1250 | 2010-02-13 | 5 | 1168500 | 0 | 150 |
| 3 | 1250 | 2010-02-13 | 7 | 922500 | 0 | 250 |
| 4 | 1300 | 2010-03-02 | 1 | 1205400 | 0 | 350 |
| 5 | 1300 | 2010-03-02 | 2 | 135300 | 0 | 300 |
| 6 | 1400 | 2010-03-11 | 3 | 1476000 | 0 | 200 |
| 7 | 1500 | 2010-03-21 | 5 | 922500 | 0 | 250 |
+----+------------+------------+----------+------------+-------+--------+
7 rows in set (0.00 sec)
mysql>
para eliminar un trigger
drop trigger nombre trigger;
Para guardar una copia de seguridad con procedimientos o trigger
C:\xampp\mysql\bin>mysqldump -B -uroot -p --routines subconsultas>J:/subconsultas.sql
Enter password: