miércoles, 6 de mayo de 2009

LOS MAS IMPORTANTES CODIGOS DE MYSQL

CREAR UNA BASE DE DATOS:


mysql> CREATE DATABASE PRUEBA;

Query OK, 1 row affected (0.00 sec)


ELIMINAR BASE DE DATOS:


mysql> drop database MIINF436;

Query OK, 0 rows affected (0.23 sec)


USAR UNA BASE DE DATOS:


mysql> USE MIINF436;

Database changed


CREAR UNA TABLA CON UN CAMPO NOT NULL:


mysql> CREATE TABLE MATERIA2 (CLAVE VARCHAR(10) NOT NULL);

Query OK, 0 rows affected (0.44 sec)

mysql> DESCRIBE MATERIA2;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| CLAVE | varchar(10) | NO | | NULL | |

+-------+-------------+------+-----+---------+-------+

1 row in set (0.00 sec)


CREAR TABLAS CON SUS CAMPOS:


mysql> CREATE TABLE CARRERA (MATERIA VARCHAR(30), NOTA ARCHAR(5), PROFESOR VARCHAR(30));

Query OK, 0 rows affected (0.50 sec)

MOSTRAR LAS TABLAS DE LA BASE DE DATOS:

mysql> SHOW TABLES;

+--------------------+

| Tables_in_miinf436 |

+--------------------+

| carrera |

+--------------------+

1 row in set (0.00 sec)


CREAR UNA TABLA CON UN CAMPO PRIMARY KEY:


mysql> create TABLE RELACION2 (Cod_Cliente bigint(5) primary key, Nombre Varchar(40), Apellidos varchar(40), Direccion Varchar(80), Telefono Varchar(13), Email Varchar(25));

Query OK, 0 rows affected (0.11 sec)

mysql> describe relacion2;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Cod_Cliente | bigint(5) | PRI | 0 | | |
| Nombre | varchar(40) | YES | | NULL | |
| Apellidos | varchar(40) | YES | | NULL | |
| Direccion | varchar(80) | YES | | NULL | |
| Telefono | varchar(13) | YES | | NULL | |
| Email | varchar(25) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)


mysql> create TABLE COTIZACION (Cod_Cliente bigint(5) primary key, Fecha Date, Nombre Varchar(40), Comentario varchar(80), Estado smallint(6), Subtotal decimal(18,2), Itbis decimal(18,2), Descuento decimal(18,2), Neto decimal(18,2));

Query OK, 0 rows affected (0.11 sec)


mysql> describe cotizacion;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| Cod_Cliente | bigint(5) | | |PRI | 0 |
| Fecha | date | YES | | NULL | |
| Nombre | varchar(40) | YES | | NULL | |
| Comentario | varchar(80) | YES | | NULL | |
| Estado | smallint(6) | YES | | NULL | |
| Subtotal | decimal(18,2) | YES | | NULL | |
| Itbis | decimal(18,2) | YES | | NULL | |
| Descuento | decimal(18,2) | YES | | NULL | |
| Neto | decimal(18,2) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
9 rows in set (0.00 sec)


RELACIONAR LAS DOS TABLAS:


mysql> alter table cotizacion add foreign key fkcliente (Cod_Cliente) references relacion (Cod_Cliente);

Query OK, 0 rows affected (0.28 sec)
Records: 0 Duplicates: 0 Warnings: 0


MOSTRAR LA DESCRIPCION DE LOS CAMPOS DE LA TABLA:


mysql> DESCRIBE MATERIA3;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| CLAVE | varchar(10) | NO | PRI | NULL | |

+-------+-------------+------+-----+---------+-------+

1 row in set (0.00 sec)


BORRAR TODOS LOS REGISTROS DE UNA TABLA


mysql> DELETE FROM RELACION WHERE 1>0;
Query OK, 1 row affected (0.06 sec)


CAMBIARLE EL NOMBRE A UNA TABLA:


mysql> ALTER TABLE MATERIA3 RENAME MATERIA4;

Query OK, 0 rows affected (0.42 sec)


MOSTRAR LOS CAMPOS DE LA TABLA:


mysql> DESCRIBE MATERIA4;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| CLAVE | varchar(10) | NO | PRI | NULL | |

+-------+-------------+------+-----+---------+-------+

1 row in set (0.02 sec)


CAMBIARLE EL NOMBRE A UNO DE LOS CAMPOS DE LA TABLA:


mysql> ALTER TABLE MATERIA4 CHANGE CLAVE CLAVE2 VARCHAR(20);

Query OK, 0 rows affected (0.63 sec)

Records: 0 Duplicates: 0 Warnings: 0


MOSTRAR LOS CAMPOS DE LA TABLA CON SU NUEVO NOMBRE:


mysql> DESCRIBE MATERIA4;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| CLAVE2 | varchar(20) | NO | PRI | | |

+--------+-------------+------+-----+---------+-------+

1 row in set (0.00 sec)


AGREGAR UN CAMPO UN NUEVO CAMPO A UNA TABLA:


mysql> ALTER TABLE ESTUDIANTE ADD CAMPO1 INT(20);

Query OK, 0 rows affected (0.08 sec)

Records: 0 Duplicates: 0 Warnings: 0


MOSTRAR LA DESCRIPCION DE LA TABLA CON SU NUEVO CAMPO:


mysql> DESCRIBE ESTUDIANTE;

+--------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+---------+------+-----+---------+-------+

| CAMPO1 | int(20) | YES | | NULL | |

+--------+---------+------+-----+---------+-------+

1 row in set (0.00 sec)


ELIMINAR UN CAMPO DE UNA TABLA Y AGREGARLE OTRO:


mysql> ALTER TABLE ESTUDIANTE DROP NOMBRE, ADD CAMPO1 INT(20);

Query OK, 0 rows affected (0.08 sec)

Records: 0 Duplicates: 0 Warnings: 0


MOSTRAR LA DESCRIPCION DE LA TABLA ACTUALIZADA SIN EL CAMPO ELINADO Y CON EL AGREGADO:


mysql> DESCRIBE ESTUDIANTE;

+--------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+---------+------+-----+---------+-------+

| CAMPO1 | int(20) | YES | | NULL | |

+--------+---------+------+-----+---------+-------+

1 row in set (0.00 sec)


VER LOS REGISTROS DE UNA TABLA:


En este caso la base de datos se llama persona al igual que la tabla, pero dentro de esta hay un campo que se llama Nombre, el cual sera el que visualizaremos ahora:

mysql> select Nombre From PERSONA;

+---------+

| Nombre |

+---------+

| |

| andres |

| alfredo |

+---------+

3 rows in set (0.00 sec)


mysql> select * from estudiante where apellidos='gomez acosta';
+-----------+-------------------+--------------+-------+---------+
| MATRICULA | NOMBRE | APELLIDOS | CLAVE | CARRERA |
+-----------+-------------------+--------------+-------+---------+
| 2003-1170 | EDWIN ALBERT | GOMEZ ACOSTA | 1170 | 13 |
| 2003-8800 | VIRGINIA | GOMEZ ACOSTA | 8800 | 6 |
| 2005-3250 | ROBERTO ANTONIO | GOMEZ ACOSTA | 3250 | 13 |
| 2005-3628 | GEOVANNI DE JESUS | GOMEZ ACOSTA | 3628 | 13 |
| 2005-6309 | WILSON RAMON | GOMEZ ACOSTA | 6309 | 9 |
| 2007-1564 | LUIS ANDRES | GOMEZ ACOSTA | 1564 | 13 |
+-----------+-------------------+--------------+-------+---------+
6 rows in set (0.06 sec)


CONSULTA CON LA SENTENCIA LIKE.


ESTA LO QUE NOS MUESTRA ES TODOS LOS REGISTROS DENTRO DE LAS COMILLAS SIMPLES EJEMPLO. ´GOMEZ%´;


mysql> select * from estudiante where apellidos like 'gomez a%';
+-----------+---------------------+------------------+-------+---------+
| MATRICULA | NOMBRE | APELLIDOS | CLAVE | CARRERA |
+-----------+---------------------+------------------+-------+---------+
| 2000-1947 | MISAEL AUGUSTO | GËMEZ ANDUJAR | 1947 | 13 |
| 2000-2806 | MAXIMO ALBERTO | GOMEZ ALMONTE | 2806 | 5 |
| 2001-2574 | JANET MERCEDES | GOMEZ AMANCIO | 2574 | 23 |
| 2001-3766 | JULIO CESAR | GOMEZ ALTAMIRANO | 3766 | 16 |
| 2002-2602 | MIGUEL ALFREDO | GOMEZ ALONZO | 2602 | 9 |
| 2003-0960 | ANGELA | GOMEZ ALCANTARA | 0960 | 15 |
| 2003-0960 | ANGELA | GOMEZ ALCANTARA | 0960 | 28 |
| 2003-1170 | EDWIN ALBERT | GOMEZ ACOSTA | 1170 | 13 |
| 2003-1802 | BELKIS ALTAGRACIA | GOMEZ ARIAS | 1802 | 20 |
| 2003-4803 | RODRIGO ADONIS | GOMEZ ARACENA | 4803 | 16 |
| 2003-4910 | ANA DOLORES MENCIA. | GOMEZ AYBAR. | 4910 | 5 |
| 2003-8800 | VIRGINIA | GOMEZ ACOSTA | 8800 | 6 |
| 2004-3802 | ELIZABETH | GOMEZ ABREU | 3802 | 16 |
| 2004-4956 | AIRIN ROSANNA | GOMEZ ABREU | 4956 | 5 |
| 2005-1196 | JONATHAN JOSE | GOMEZ ACTA | 1196 | 6 |
| 2005-2503 | JAIRO RAFAEL | GOMEZ ABREU | 2503 | 5 |
| 2005-3250 | ROBERTO ANTONIO | GOMEZ ACOSTA | 3250 | 13 |
| 2005-3628 | GEOVANNI DE JESUS | GOMEZ ACOSTA | 3628 | 13 |
| 2005-5656 | HERMES DOMINGO | GOMEZ ARREDONDO | 5656 | 16 |
| 2005-6024 | ESTHER | GOMEZ AMPARO | 6024 | 12 |
| 2005-6309 | WILSON RAMON | GOMEZ ACOSTA | 6309 | 9 |
| 2006-2223 | NEY FRANCISCO | GOMEZ ALVAREZ | 2223 | 9 |
| 2006-3642 | ROSA MARIA | GOMEZ ALVAREZ | 3642 | 16 |
| 2006-4564 | YATNNA AIMEE | GOMEZ ABREU | 4564 | 12 |
| 2007-1154 | JENNY CAROLINA | GOMEZ ALVAREZ | 1154 | 16 |
| 2007-1564 | LUIS ANDRES | GOMEZ ACOSTA | 1564 | 13 |
| 2007-4506 | ROSELITO | GOMEZ AGUERO | 4506 | 16 |
+-----------+---------------------+------------------+-------+---------+
27 rows in set (0.05 sec)

mysql>


CONTAR LOS REGISTROS DE UNA TABLA.


mysql> select count(*) from estudiante;
+----------+
| count(*) |
+----------+
| 47270 |
+----------+
1 row in set (0.06 sec)

mysql>


AGREGARLE CAMPOS A LA TABLA:


mysql> ALTER TABLE PERSONA ADD Apellidos varchar(30);

Query OK, 3 rows affected (0.33 sec)

Records: 3 Duplicates: 0 Warnings: 0


mysql> ALTER TABLE PERSONA ADD Direccion varchar(30);

Query OK, 3 rows affected (0.33 sec)

Records: 3 Duplicates: 0 Warnings: 0


mysql> ALTER TABLE PERSONA ADD Telefono varchar(13);

Query OK, 3 rows affected (0.28 sec)

Records: 3 Duplicates: 0 Warnings: 0


VER LOS NUEVOS CAMPOS DE LA TABLA:


mysql> describe persona;

+-----------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-----------+-------------+------+-----+---------+-------+

| Nombre | varchar(30) | YES | | NULL | |

| Apellidos | varchar(30) | YES | | NULL | |

| Direccion | varchar(30) | YES | | NULL | |

| Telefono | varchar(13) | YES | | NULL | |

+-----------+-------------+------+-----+---------+-------+

4 rows in set (0.00 sec)


INTRODUCIRLES VALORES A LOS CAMPOS DE LA TABLA:


mysql> Insert into PERSONA (Nombre,Apellidos,Direccion,Telefono) values ('Andres ','Gomez','Don Bosco','809-333-8084');

Query OK, 1 row affected (0.03 sec)


VISUALIZAR LOS VALORES DE LOS CAMPOS DE LA TABLA:


mysql> select Nombre,Apellidos,Direccion,Telefono from persona;

+---------+-----------+-----------+--------------+

| Nombre | Apellidos | Direccion | Telefono |

+---------+-----------+-----------+--------------+

| Andres | Gomez | Don Bosco | 809-333-8084 |

+---------+-----------+-----------+--------------+

4 rows in set (0.00 sec)


COINCIDENCIA DE PATRONES.


MySQL posee capacidades estándar para utilizar patrones así como también una forma de patrones basada en expresiones regulares extendidas similares a las que se encuentran en utilidades de UNIX, como ser vi, grep, y sed.


Los patrones SQL permiten emplear el caracter '_' para representar coincidencia con un carácter individual y '%' En MySQL, por defecto, los patrones SQL no son case-sensitive. Abajo se muestran algunos ejemplos. Advierta que no se emplean los operadores = o <> para trabajar con patrones SQL, en lugar de eso se usan los operadores de comparación LIKE o NOT LIKE.


Para encontrar nombres que comiencen con 'b':


mysql> SELECT * FROM pet WHERE name LIKE 'b%';
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+


Para encontrar nombres que terminen con 'fy':


mysql> SELECT * FROM pet WHERE name LIKE '%fy';
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+


Para encontrar nombres que contengan 'w':


mysql> SELECT * FROM pet WHERE name LIKE '%w%';
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+


Para encontrar nombres que contengan exactamente 5 caracteres, use 5 veces el caracter patrón '_':


mysql> SELECT * FROM pet WHERE name LIKE '_____';
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+


mysql> SELECT Nombre, COUNT(*) FROM Estudiante GROUP BY Nombre

+--------+----------+
| Nombre COUNT(*) |
+--------+----------+
| ZOILA MARGARITA | 3 |
| ZOILA MARIA | 3 |
| ZOILA MARINA | 2 |
| ZOILA NOEMI | 1 |
| ZOILA ROSA | 1 |
| ZOILA SABRINA | 1 |
| ZOILO ALEXIS | 1 |
| ZOILO DEL CARMEN | 1 |
| ZOILO MANUEL | 1 |
| ZOIRELIS ADJANI | 1 |
| ZOLAINA | 1 |
| ZOLIJEIDES | 1 |
| ZORAIDA | 4 |
| ZORAIDA ALTAGRACIA | 1 |
+--------+----------+


mysql> SELECT Nombre, COUNT(*) FROM Estudiante GROUP BY Nombre;
+--------+----------+--------+----------+
| Nombre | COUNT(*) |
+--------+----------+
| ZOILA MARGARITA | 3 |
| ZOILA MARIA | 3 |
| ZOILA MARINA | 2 |
| ZOILA NOEMI | 1 |
| ZOILA ROSA | 1 |
+--------+----------+