SlideShare una empresa de Scribd logo
Programación WEB con PHP Y MySQL (IT Tapachula)




  MySQL

  Objetivo
  Aprender los fundamentos del manejo de información en MySQL.




                                                                 1
Programación WEB con PHP Y MySQL (IT Tapachula)

                                                                                                      MySQL

Trabajando con el daemon o servicio de MySQL
En linux arrancamos el daemon de MySQL con el comando: usr/local/mysql/bin/mysqld_safe --
user=mysql &

Para detener el daemon se utiliza el comando:
usr/local/mysql/bin/mysqladmin --user=root --password=password shutdown

En Windows NT 4, 2000, XP o 2003 utilizamos el administrador de servicios para arrancar o detener el servicio:




                                                                                                             2
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                        MySQL

Explorando las bases de datos existentes
Para obtener un listado de las bases de datos utilizamos el comando mysqlshow, el cual se encuentra alojado en /
usr/local/mysql/bin (linux), o en c:mysqlbin (windows). Para ver que tablas contiene una bases de
datos utilizamos el comando mysqlhow y le enviamos como parámetro el nombre de la base de datos:




                                                                                                               3
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                    MySQL

Utilizando mysql Client
El cliente de MySQL es una interfase que nos permite trabajar directamente con los objetos que almacena
MySQL, el siguiente comando nos permite utilizarlo:

mysql --user=usuario --password=password --host=servidor-de-mysql

Para trabajar con el servidor local, simplemente omitimos el parametro --host:
mysql --user=usuario --password=password




                                                                                                          4
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                 MySQL

Dentro del cliente de MySQL podemos utilizar un gran número de comandos, después de teclear cada comando
se termina con el carácter de punto y coma (;) para indicarle a MySQL que ejecute la instrucción.

Por ejemplo, para obtener el listado de bases de datos utilizamos el comando SHOW DATABASES;




NOTA
En este caso el comando no es case sensitive.




                                                                                                           5
Programación WEB con PHP Y MySQL (IT Tapachula)

                                                                                                        MySQL

Para utilizar una base de datos utilizamos el comando USE base-de-datos; Para obtener un listado de las tablas
utilizamos SHOW TABLES;




                                                                                                                 6
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                              MySQL

Para obtener la estructura de una tabla DESC tabla;




Para salir del cliente utilizamos los comandos exit o quit:




                                                                  7
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                           MySQL

Creando nuevas bases de datos
Para crear una base de datos con el cliente de MySQL utilizamos el comando CREATE DATABASE base-de-
datos;




                                                                                                  8
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                       MySQL

Para borrar la base de datos utilizamos DROP DATABASE base-de-datos;




                                                                           9
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                    MySQL

Creando nuevas tablas
Una vez creada la base de datos podemos crear sus tablas, primero ejecutamos el comando USE base-de-
datos; posteriormente podemos crear las tablas con el comando CREATE TABLE tabla (campos-de-
la-tabla);

Por ejemplo CREATE TABLE productos (numero INT, nombre VARCHAR(255)); crea una tabla
llamada productos con dos campos: numero (de tipo integer) y nombre (de tipo texto de hasta 255 caracteres).

Para borrar una tabla se utiliza el comando DROP TABLE tabla;




                                                                                                           10
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                  MySQL

Tipos de datos de MySQL
Numéricos enteros
TINYINT
SMALLINT
INT
MEDIUMINT
BIGINT

Numéricos con decimales
FLOAT
DOUBLE/REAL
DECIMAL


Texto
CHAR : 0-255 caracteres de longitud fija
VARCHAR : 0 - 255 de longitud variable
TINYTEXT : 0 - 255 bytes

TEXT : 0 - 65535 bytes

MEDIUMTEXT : 0 - 16777215 bytes

LONGTEXT : 0 - 4294967295 bytes


Objetos Binarios
TINYBLOB : 0-255 bytes

BLOB : 0 - 65535 bytes

MEDIUMBLOB : 0 - 16777215 bytes

LONGBLOB : 0 - 4294967295 bytes




                                                      11
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                       MySQL

Fechas
DATE : Formato YYYY-MM-DD

DATETIME : Formato YYYY-MM-DD hh:mm:ss

TIMESTAMP : Formato YYYYMMDDhhmmss

TIME : hh:mm:ss

YEAR : YYYY
Especiales
ENUM
Almacena enumeraciones, por ejemplo: (1,5,8). Cuando se asigna un valor a un campo debe estar contenido en la
enumeración.

SET
Almacena una lista valida de valores, por ejemplo: ("a","b","c","d"). Cuando se asigna un valor a un campo debe
estar contenido en la lista y además se le pueden asignar varios de los valores.




                                                                                                              12
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                       MySQL

Atributos
BINARY
Provoca que un campo de texto sea case-sensitive, solo valido para CHAR y VARCHAR.

NULL o NOT NULL
Permite o impide que un campo sea nulo.
Si a un campo no se le especifica un valor, entonces se le asigna el NULL.

DEFAULT valor_default
Asigna un valor default al campo.
En caso que un campo tenga un valor default especificado, este se le asigna cuando el valor es NULL.

AUTO_INCREMENT
Incrementa en uno el valor máxima que contenga el campo y se lo asigna al nuevo registro, solo puede haber uno
por tabla.


Indices
KEY/INDEX
Define que el campo sera utilizado como índice de uno o varios campos. Comúnmente se utilizan para agilizar las
busquedas de información.

PRIMARY KEY
Define que el campo deberá contener valores únicos, no puede contener NULL. Este campo se utiliza para
establecer asociaciones entre distintas tablas.

UNIQUE
Define que el campo deberá contener valores únicos.




                                                                                                              13
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                           MySQL

Para crear una tabla de categorías podemos utilizar un comando como este:

USE base-de-datos;
CREATE TABLE categorias (
  claveCategoria int(11) NOT NULL auto_increment,
  categoria varchar(15) NOT NULL default '',
  notas varchar(255) default NULL,
  urlImagen varchar(255) default NULL,
  PRIMARY KEY (claveCategoria),
  UNIQUE KEY claveCategoria (claveCategoria)
) TYPE=MyISAM


claveCategoria int(11) NOT NULL auto_increment
Tipo integer, no permite nulos, su valor se incrementa automaticamente con cada nuevo registro.

categoria varchar(15) NOT NULL default ''
Tipo string de entre 0 y 15 caracteres, no permite nulos, el valor default que se le asigna cuando no se proporciona
un valor es ''.

notas varchar(255) default NULL
Tipo string de entre 0 y 255 caracteres, si permite nulos.

PRIMARY KEY (claveCategoria)
Define el campo claveCategoria como la llave primaria de la tabla.

UNIQUE KEY claveCategoria (claveCategoria)
Define que para el campo claveCategoria se crea un índice que no permite valores duplicados.

TYPE=MyISAM
Determina el tipo de tabla que se va a crear, este es el mas común y no soporta transacciones.




                                                                                                                   14
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                   MySQL

Utilizando archivos con scripts de MySQL
Dado que teclear código como el anterior en el cliente de MySQL puede ser muy laborioso, la alternativa es
mandarle como parámetro al cliente de MySQL el nombre de un archivo que contenga el código que deseamos
ejecutar.
Comúnmente estos archivos terminan con la extension sql, y contienen scripts que son ejecutados
secuencialmente por el manejador de bases de datos.

El comando es como se muestra a continuación:

mysql --user=usuario --password=password < archivo.sql




                                                                                                             15
Programación WEB con PHP Y MySQL (IT Tapachula)




                                                  16
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                          MySQL

Los scripts pueden crear tablas como en el ejemplo anterior, pero también se pueden utilizar para insertar datos en
las tablas. Por ejemplo el archivo categorias-datos-pruebas.sql contiene los siguientes estatutos:

USE pruebas;
INSERT INTO `categorias` (`claveCategoria`, `categoria`, `notas`,
`urlImagen`) VALUES
  (1,'Bebidbas','Sodas, cafe, te, cerveza','images/bebidas.jpg'),
  (2,'Condimentos','Apio, perejil','images/condimentos.jpg'),
  (3,'Postres','Pasteles, dulces','images/postres.jpg'),
  (4,'Lacteos','Queso, mantequilla','images/lacteos.jpg'),
  (5,'Granos/Cereales','Pasta, pan','images/granos.jpg'),
  (6,'Carnes','Pollo, res, puerco','images/carnes.jpg'),
  (7,'Vegetales','Tomates, lechuga','images/vegetales.jpg'),
  (8,'Mariscos','Camarones, ostiones','images/mariscos.jpg');




                                                                                                                  17
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                       MySQL

Podemos ejecutar varios archivos y de esta manera crear fácilmente tablas e importar información en las tablas,
por ejemplo:
mysql --user=usuario --password=password < /cursos/php/dbscripts/productos-
tabla-pruebas.sql

mysql --user=usuario --password=password < /cursos/php/dbscripts/productos-
datos-pruebas.sql




Después de ejecutar estos comandos tendremos dos tablas en la base de datos recién creada:




                                                                                                              18
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                    MySQL

Una vez importados los datos en las tablas podemos ejecutar comandos para manipular dicha información, por
ejemplo el estatuto SELECT. Este estatuto extrae información de las tablas, por ejemplo:
select * from categorias;

Nos arroja un resultado como este:




                                                                                                             19
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                   MySQL

Cambiando la estructura de las tablas
La estructura de una tabla puede ser cambiada con el comando ALTER TABLE, con este comando se puede
agregar, borrar o cambiar las características de los campos de la tabla, aquí tenemos algunos ejemplos:
ALTER TABLE categorias RENAME AS subcategorias;
Cambia el nombre de la tabla.

ALTER TABLE categorias ADD nuevoCampo VARCHAR(50) NOT NULL;
Agrega un campo a la tabla

ALTER TABLE categorias DROP COLUMN Campo;
Elimina un campo de la tabla.

ALTER TABLE categorias MODIFY nuevoCampo VARCHAR(100) NULL;
Cambia la definición de un campo de la tabla.

ALTER TABLE categorias CHANGE campoOriginal campoModificado VARCHAR(80) NOT
NULL;
Cambia el nombre y la definición de un campo de la tabla.




                                                                                                          20
Programación WEB con PHP Y MySQL (IT Tapachula)

                                                                                                          MySQL

Ejercicio - Creando bases de datos, tablas e importando información en MySQL
El siguiente ejercicio consiste crear la bases de datos, tablas e importar información en MySQL. Este es el esquema
de la base de datos que vamos a utilizar:




Lista de actividades:
1. Arranque el daemon o servicio de MySQL
2. Agregue una base de datos llamada cursophp
3. Agregue una tabla llamada usuarios con las siguientes características:

CREATE TABLE usuarios (
clave int(4) NOT NULL auto_increment,
usuario varchar(60) NOT NULL default '',
password varchar(60) NOT NULL default '',
PRIMARY KEY (clave),
UNIQUE KEY clave (clave)
) TYPE=MyISAM;




                                                                                                                 21
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                           MySQL

4. En el directorio /cursos/php/dbscripts están los scripts con las definiciones de las tablas y sus datos
5. Por cada tabla hay un par de scripts: Uno para crear la tabla y otro para insertar datos en la misma.
6. Primero ejecute el script para crear la tabla y posteriormente el script para insertar información. Por ejemplo,
para la tabla de categorías primero ejecute el script categorias-tabla.sql y luego categorias-
datos.sql.
7. Los scripts están numerados, van del 01- al 16-, ejecútelos en ese orden.

Al final deberá contar con las siguientes tablas:




                                                                                                                  22
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                   MySQL

Manejo de permisos en MySQL
MySQL lleva el registro de usuarios en la base de datos mysql con la tabla user:




                                                                                       23
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                  MySQL

La estructura de la tabla es la siguiente:




                                                      24
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                       MySQL

Para ver los usuarios registrados podemos ejecutar el estatuto SELECT:
select host, user, password from user;




Para crear y otorgar permisos a un nuevo usuario en MySQL podemos insertar registros directamente en la tabla, o
bien utilizar el comando GRANT lo cual es la manera recomendada. Para cambiar los permisos se utiliza el
comando REVOKE.




                                                                                                               25
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                         MySQL

GRANT
La sintaxis de este comando es la siguiente:
GRANT tipo-de-privilegio ON base-de-datos.tabla TO usuario IDENTIFIED BY
'password';

Aquí tenemos algunos ejemplos:

GRANT ALL PRIVILEGES ON cursophp.* TO usuarioweb IDENTIFIED BY 'digitever';
Da de alta al usuario usuarioweb con el password digitever.
Otorga todos los privilegios aplicables para la base de datos cursophp.


GRANT ALL PRIVILEGES ON cursophp.categorias TO categorias IDENTIFIED BY
'digitever';
Da de alta al usuario categorias con el password digitever.
Otorga todos los privilegios aplicables a una tabla para la tabla categorias.

GRANT SELECT ON cursophp.* TO soloLectura IDENTIFIED BY 'digitever';
Da de alta al usuario soloLectura con el password digitever.
Otorga solamente el privilegio de ejecutar estatutos SELECT en la base de datos cursophp.

GRANT SELECT, UPDATE ON cursophp.* TO noAltas IDENTIFIED BY 'digitever';
Da de alta al usuario noAltas con el password digitever.
Puede ejecutar estatutos SELECT y UPDATE en la base de datos cursophp.

GRANT SELECT (campo1, campo3) ON cursophp.categorias TO restringido
IDENTIFIED BY 'digitever';
Da de alta al usuario restringido con el password digitever.
Puede ejecutar el estatuto SELECT solamente en los campos especificado en la base de datos cursophp en la tabla
categorias.

REVOKE
La sintaxis es similar a la de GRANT:
REVOKE tipo-de-privilegio ON base-de-datos.tabla FROM usuario;

Ejemplos:
REVOKE ALL PRIVILEGES ON cursophp.* FROM usuarioweb;
Retira todos los privilegios al usuario usuarioweb aplicables para la base de datos cursophp.

REVOKE ALL PRIVILEGES ON *.* FROM usuarioweb;
Retira todos los privilegios al usuario usuarioweb aplicables para la todas las base de datos.

REVOKE DELETE ON cursophp.categorias FROM usuarioCategorias;
Retira el privilegio de ejecutar estatutos DELETE al usuario usuarioCategorias aplicables para la tabla categorias.


                                                                                                                26
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                    MySQL

Borrando usuarios de MySQL
Si queremos borrar un usuario de MySQL podemos utilizar el estatuto DELETE, por ejemplo, para eliminar el
usuario userPruebas:




                                                                                                            27
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                MySQL

Utilizamos el estatuto:
delete from user where user='userPruebas';

Al manipular directamente la tabla de usuarios de MySQL tenemos que utilizar el comando FLUSH
PRIVILEGES para que MySQL tome en cuenta los cambios:




                                                                                                    28
Programación WEB con PHP Y MySQL (IT Tapachula)

                                                                                MySQL

Ejercicio - Dando de alta usuarios en MySQL
De de alta los siguientes usuarios con los privilegios indicados:

grant all privileges on cursophp.* to usuarioweb identified by 'digitever';
grant select on cursophp.* to soloLectura identified by 'digitever';

Verifique que los usuarios estén dados de alta con el siguiente estatuto SQL:
select host, user, password from user;




                                                                                    29
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                     MySQL

Manipulando los datos con estatutos SQL
Para manipular la información almacenada en las tablas, se utilizan comúnmente los siguientes estatutos SQL:
• SELECT
• INSERT
• UPDATE
• DELETE

SELECT
Extrae información de las tablas, sintaxis:
SELECT campo1,campo2,....,campoN FROM tabla
WHERE condiciones

Ejemplos:

mysql> select * from categorias;
+----------------+-----------------+--------------------------+------------------------+
| claveCategoria | categoria       | notas                      | urlImagen                              |
+----------------+-----------------+--------------------------+------------------------+
|              1 | Bebidbas        | Sodas, cafe, te, cerveza | images/bebidas.jpg                       |
|              2 | Condimentos     | Apio, perejil            | images/condimentos.jpg |
|              3 | Postres         | Pasteles, dulces         | images/postres.jpg                       |
|              4 | Lacteos         | Queso, mantequilla       | images/lacteos.jpg                       |
|              5 | Granos/Cereales | Pasta, pan               | images/granos.jpg                        |
|              6 | Carnes          | Pollo, res, puerco       | images/carnes.jpg                        |
|              7 | Vegetales       | Tomates, lechuga         | images/vegetales.jpg   |
|              8 | Mariscos        | Camarones, ostiones      | images/mariscos.jpg                      |
+----------------+-----------------+--------------------------+------------------------+

mysql> select * from categorias where claveCategoria = 2;
+----------------+-------------+---------------+------------------------+
| claveCategoria | categoria   | notas          | urlImagen               |
+----------------+-------------+---------------+------------------------+
|              2 | Condimentos | Apio, perejil | images/condimentos.jpg |
+----------------+-------------+---------------+------------------------+

mysql> select * from categorias where categoria = 'carnes';
+----------------+-----------+--------------------+-------------------+
| claveCategoria | categoria | notas              | urlImagen         |
+----------------+-----------+--------------------+-------------------+
|              6 | Carnes    | Pollo, res, puerco | images/carnes.jpg |
+----------------+-----------+--------------------+-------------------+




                                                                                                               30
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                        MySQL

mysql> select claveProducto,producto, existencia from productos where
existencia < 10 ORDER BY existencia;
+---------------+----------------------------+------------+
| claveProducto | producto                   | existencia |
+---------------+----------------------------+------------+
|             5 | Chef Anton's Gumbo Mix     |          0 |
|            17 | Alice Mutton               |          0 |
|            29 | Th?ringer Rostbratwurst    |          0 |
|            31 | Gorgonzola Telino          |          0 |
|            53 | Perth Pasties              |          0 |
|            21 | Sir Rodney's Scones        |          3 |
|            66 | Louisiana Hot Spiced Okra |           4 |
|            74 | Longlife Tofu              |          4 |
|            45 | R?gede sild                |          5 |
|             8 | Northwoods Cranberry Sauce |          6 |
|            68 | Scottish Longbreads        |          6 |
|            32 | Mascarpone Fabioli         |          9 |
+---------------+----------------------------+------------+




                                                                            31
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                     MySQL

UPDATE
Actualiza información, sintaxis:
UPDATE tabla SET campo1 = valor1, campo2 = valor2, campoN = valorN
WHERE condiciones

mysql> select * from entregas;
+--------------+------------------+----------------+
| claveEntrega | descripcion      | telefono       |
+--------------+------------------+----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Package   | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
+--------------+------------------+----------------+

mysql> update entregas set descripcion = 'United Shipping' where
claveEntrega = 2;

mysql> select * from entregas;
+--------------+------------------+----------------+
| claveEntrega | descripcion      | telefono       |
+--------------+------------------+----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Shipping | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
+--------------+------------------+----------------+




                                                                         32
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                     MySQL

INSERT
Agrega información, sintaxis:
INSERT tabla (campo1,campo2,....,campoN) VALUES (valor1,valor2,....,valorN)

mysql> select * from entregas;
+--------------+------------------+----------------+
| claveEntrega | descripcion      | telefono       |
+--------------+------------------+----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Shipping | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
+--------------+------------------+----------------+

mysql> insert entregas (descripcion, telefono) values ('Nuevo registro',
'(956) 722 -3420') ;

mysql> select * from entregas;
+--------------+------------------+-----------------+
| claveEntrega | descripcion      | telefono        |
+--------------+------------------+-----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Shipping | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
|            4 | Nuevo registro   | (956) 722 -3420 |
+--------------+------------------+-----------------+




                                                                           33
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                        MySQL

DELETE
Borra información, sintaxis:
DELETE FROM tabla
WHERE condiciones

mysql> select * from entregas;
+--------------+------------------+-----------------+
| claveEntrega | descripcion      | telefono        |
+--------------+------------------+-----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Shipping | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
|            4 | Nuevo registro   | (956) 722 -3420 |
+--------------+------------------+-----------------+
4 rows in set (0.00 sec)

mysql> delete from entregas where claveEntrega = 4;
Query OK, 1 row affected (0.00 sec)

mysql> select * from entregas;
+--------------+------------------+----------------+
| claveEntrega | descripcion      | telefono       |
+--------------+------------------+----------------+
|            1 | Speedy Express   | (503) 555-9831 |
|            2 | United Shipping | (503) 555-3199 |
|            3 | Federal Shipping | (503) 555-9931 |
+--------------+------------------+----------------+




                                                            34
Programación WEB con PHP Y MySQL (IT Tapachula)

                                                                                                          MySQL

Asociando tablas con joins
Un join nos permite asociar varias tablas y extraer datos de ambas. Para que el join pueda asociar las tablas ambas
deben tener al menos un campo en común, por ejemplo, las tablas de productos y categorias están asociadas
mediante el campo claveCategoria:

mysql> desc categorias;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra            |
+----------------+--------------+------+-----+---------+----------------+
| claveCategoria | int(11)      |      | PRI | NULL    | auto_increment |
| categoria      | varchar(15) |       |     |          |                 |
| notas          | varchar(255) | YES |      | NULL    |                  |
| urlImagen      | varchar(255) | YES |      | NULL    |                  |
+----------------+--------------+------+-----+---------+----------------+

mysql> desc productos;
+-------------------+-------------+------+-----+---------+----------------+
| Field             | Type        | Null | Key | Default | Extra            |
+-------------------+-------------+------+-----+---------+----------------+
| claveProducto     | int(11)     |       | PRI | NULL    | auto_increment |
| producto          | varchar(40) |       |     |         |                 |
| claveProveedor    | int(11)     |       | MUL | 0       |                 |
| claveCategoria    | int(11)     |       | MUL | 0       |                 |
| cantidadPorUnidad | varchar(20) | YES |      | NULL     |                 |
| precioUnitario    | double       | YES |      | NULL    |                 |
| existencia        | int(11)      | YES |      | NULL    |                 |
| pedidos           | int(11)      | YES |      | NULL    |                 |
| nivelDeResurtir   | int(11)      | YES |      | NULL    |                 |
| descontinuado     | tinyint(4) | YES | MUL | 0          |                 |
+-------------------+-------------+------+-----+---------+----------------+




                                                                                                                  35
Programación WEB con PHP Y MySQL (IT Tapachula)
                                                                                                        MySQL

Para obtener la descripción de la categoría para su respectiva clave almacenada en productos el join seria como
este:
mysql> select productos.claveProducto, productos.producto,
categorias.categoria from productos, categorias where
productos.claveCategoria = categorias.claveCategoria;

+---------------+----------------------------------+-----------------+
| claveProducto | producto                         | categoria       |
+---------------+----------------------------------+-----------------+
|             1 | Chai                             | Bebidbas        |
|             2 | Chang                            | Bebidbas        |
|            24 | Guaran? Fant?stica               | Bebidbas        |
|            75 | Rh?nbr?u Klosterbier             | Bebidbas        |
|            76 | Lakkalik??ri                     | Bebidbas        |
|             3 | Aniseed Syrup                    | Condimentos     |
|             4 | Chef Anton's Cajun Seasoning     | Condimentos     |
|             5 | Chef Anton's Gumbo Mix           | Condimentos     |
|             6 | Grandma's Boysenberry Spread     | Condimentos     |
|            66 | Louisiana Hot Spiced Okra        | Condimentos     |
|            77 | Original Frankfurter gr?ne So?e | Condimentos      |
|            16 | Pavlova                          | Postres         |
|            48 | Chocolade                        | Postres         |
|            49 | Maxilaku                         | Postres         |
|            50 | Valkoinen suklaa                 | Postres         |
|            62 | Tarte au sucre                   | Postres         |
|            68 | Scottish Longbreads              | Postres         |
|            78 | nuevo01                          | Postres         |
|            11 | Queso Cabrales                   | Lacteos         |
|            12 | Queso Manchego La Pastora        | Lacteos         |
|            31 | Gorgonzola Telino                | Lacteos         |
|            72 | Mozzarella di Giovanni           | Lacteos         |
|            22 | Gustaf's Kn?ckebr?d              | Granos/Cereales |
|            23 | Tunnbr?d                         | Granos/Cereales |
|            64 | Wimmers gute Semmelkn?del        | Granos/Cereales |
|             9 | Mishi Kobe Niku                  | Carnes          |
|            17 | Alice Mutton                     | Carnes          |
|             7 | Uncle Bob's Organic Dried Pears | Vegetales        |
|            14 | Tofu                             | Vegetales       |
|            28 | R?ssle Sauerkraut                | Vegetales       |
|            51 | Manjimup Dried Apples            | Vegetales       |
|            74 | Longlife Tofu                    | Vegetales       |
|            10 | Ikura                            | Mariscos        |
|            46 | Spegesild                        | Mariscos        |
|            58 | Escargots de Bourgogne           | Mariscos        |
|            73 | R?d Kaviar                       | Mariscos        |
+---------------+----------------------------------+-----------------+
                                                                                                                  36

Más contenido relacionado

La actualidad más candente

Informixsql
InformixsqlInformixsql
Informixsql
Jesus Cortes
 
Breve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLBreve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQL
Totus Muertos
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasicoLucia Zambrano Franco
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
jesusnoseq
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
Administrando la Instancia en Oracle database 11g-Z052 05
Administrando la Instancia en Oracle database 11g-Z052 05Administrando la Instancia en Oracle database 11g-Z052 05
Administrando la Instancia en Oracle database 11g-Z052 05Alexander Calderón
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
Andrés Hevia
 
Transact sql
Transact sqlTransact sql
Transact sqljoan
 
SQL avanzado
SQL avanzadoSQL avanzado
SQL avanzado
josecuartas
 
Sql dinamico14042011
Sql dinamico14042011Sql dinamico14042011
Sql dinamico14042011josecuartas
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
Julián Castiblanco
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
Emanuel Calvo
 

La actualidad más candente (20)

Informixsql
InformixsqlInformixsql
Informixsql
 
Breve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLBreve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQL
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico
 
My sql
My sqlMy sql
My sql
 
Exposicion Mysql
Exposicion MysqlExposicion Mysql
Exposicion Mysql
 
Exposicion Mysql
Exposicion MysqlExposicion Mysql
Exposicion Mysql
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
 
MySQL
MySQLMySQL
MySQL
 
Gbd8
Gbd8Gbd8
Gbd8
 
Gbd8
Gbd8Gbd8
Gbd8
 
Gbd8
Gbd8Gbd8
Gbd8
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Admon PG 1
Admon PG 1Admon PG 1
Admon PG 1
 
Administrando la Instancia en Oracle database 11g-Z052 05
Administrando la Instancia en Oracle database 11g-Z052 05Administrando la Instancia en Oracle database 11g-Z052 05
Administrando la Instancia en Oracle database 11g-Z052 05
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Transact sql
Transact sqlTransact sql
Transact sql
 
SQL avanzado
SQL avanzadoSQL avanzado
SQL avanzado
 
Sql dinamico14042011
Sql dinamico14042011Sql dinamico14042011
Sql dinamico14042011
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 

Similar a MySql

MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial Básico
Josu Orbe
 
My sql
My sqlMy sql
mysql comandos.pdf
mysql comandos.pdfmysql comandos.pdf
mysql comandos.pdf
NiltonValladolidCamp
 
Codigoparacrearlabasededatos
Codigoparacrearlabasededatos Codigoparacrearlabasededatos
Codigoparacrearlabasededatos
Ashley Stronghold Witwicky
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4cognos_uie
 
php-mysql
php-mysqlphp-mysql
php-mysql
Katherine Pérez
 
Mysql
MysqlMysql
Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Wilian
 
CONNECTION
CONNECTIONCONNECTION
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
Carlos Mancilla
 
Bases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadminBases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadmin
Juan Manuel Zalazar
 
Html,php
Html,phpHtml,php
Html,phpsoftyed
 
T8 – Bases de Datos en MySQL (1).pptx
T8 – Bases de Datos en MySQL (1).pptxT8 – Bases de Datos en MySQL (1).pptx
T8 – Bases de Datos en MySQL (1).pptx
DanaSoto7
 

Similar a MySql (20)

MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial Básico
 
Administracion de base de datos
Administracion de base de datosAdministracion de base de datos
Administracion de base de datos
 
My sql
My sqlMy sql
My sql
 
mysql comandos.pdf
mysql comandos.pdfmysql comandos.pdf
mysql comandos.pdf
 
Codigoparacrearlabasededatos
Codigoparacrearlabasededatos Codigoparacrearlabasededatos
Codigoparacrearlabasededatos
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4
 
Cuarta 1
Cuarta 1Cuarta 1
Cuarta 1
 
php-mysql
php-mysqlphp-mysql
php-mysql
 
Cuarta 1
Cuarta 1Cuarta 1
Cuarta 1
 
Tema4[php]
Tema4[php]Tema4[php]
Tema4[php]
 
Mysql
MysqlMysql
Mysql
 
Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3
 
CONNECTION
CONNECTIONCONNECTION
CONNECTION
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Bases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadminBases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadmin
 
Tema 7 Trabajando Con Mysql
Tema 7 Trabajando Con MysqlTema 7 Trabajando Con Mysql
Tema 7 Trabajando Con Mysql
 
Html,php
Html,phpHtml,php
Html,php
 
T8 – Bases de Datos en MySQL (1).pptx
T8 – Bases de Datos en MySQL (1).pptxT8 – Bases de Datos en MySQL (1).pptx
T8 – Bases de Datos en MySQL (1).pptx
 

MySql

  • 1. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Objetivo Aprender los fundamentos del manejo de información en MySQL. 1
  • 2. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Trabajando con el daemon o servicio de MySQL En linux arrancamos el daemon de MySQL con el comando: usr/local/mysql/bin/mysqld_safe -- user=mysql & Para detener el daemon se utiliza el comando: usr/local/mysql/bin/mysqladmin --user=root --password=password shutdown En Windows NT 4, 2000, XP o 2003 utilizamos el administrador de servicios para arrancar o detener el servicio: 2
  • 3. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Explorando las bases de datos existentes Para obtener un listado de las bases de datos utilizamos el comando mysqlshow, el cual se encuentra alojado en / usr/local/mysql/bin (linux), o en c:mysqlbin (windows). Para ver que tablas contiene una bases de datos utilizamos el comando mysqlhow y le enviamos como parámetro el nombre de la base de datos: 3
  • 4. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Utilizando mysql Client El cliente de MySQL es una interfase que nos permite trabajar directamente con los objetos que almacena MySQL, el siguiente comando nos permite utilizarlo: mysql --user=usuario --password=password --host=servidor-de-mysql Para trabajar con el servidor local, simplemente omitimos el parametro --host: mysql --user=usuario --password=password 4
  • 5. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Dentro del cliente de MySQL podemos utilizar un gran número de comandos, después de teclear cada comando se termina con el carácter de punto y coma (;) para indicarle a MySQL que ejecute la instrucción. Por ejemplo, para obtener el listado de bases de datos utilizamos el comando SHOW DATABASES; NOTA En este caso el comando no es case sensitive. 5
  • 6. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para utilizar una base de datos utilizamos el comando USE base-de-datos; Para obtener un listado de las tablas utilizamos SHOW TABLES; 6
  • 7. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para obtener la estructura de una tabla DESC tabla; Para salir del cliente utilizamos los comandos exit o quit: 7
  • 8. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Creando nuevas bases de datos Para crear una base de datos con el cliente de MySQL utilizamos el comando CREATE DATABASE base-de- datos; 8
  • 9. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para borrar la base de datos utilizamos DROP DATABASE base-de-datos; 9
  • 10. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Creando nuevas tablas Una vez creada la base de datos podemos crear sus tablas, primero ejecutamos el comando USE base-de- datos; posteriormente podemos crear las tablas con el comando CREATE TABLE tabla (campos-de- la-tabla); Por ejemplo CREATE TABLE productos (numero INT, nombre VARCHAR(255)); crea una tabla llamada productos con dos campos: numero (de tipo integer) y nombre (de tipo texto de hasta 255 caracteres). Para borrar una tabla se utiliza el comando DROP TABLE tabla; 10
  • 11. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Tipos de datos de MySQL Numéricos enteros TINYINT SMALLINT INT MEDIUMINT BIGINT Numéricos con decimales FLOAT DOUBLE/REAL DECIMAL Texto CHAR : 0-255 caracteres de longitud fija VARCHAR : 0 - 255 de longitud variable TINYTEXT : 0 - 255 bytes TEXT : 0 - 65535 bytes MEDIUMTEXT : 0 - 16777215 bytes LONGTEXT : 0 - 4294967295 bytes Objetos Binarios TINYBLOB : 0-255 bytes BLOB : 0 - 65535 bytes MEDIUMBLOB : 0 - 16777215 bytes LONGBLOB : 0 - 4294967295 bytes 11
  • 12. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Fechas DATE : Formato YYYY-MM-DD DATETIME : Formato YYYY-MM-DD hh:mm:ss TIMESTAMP : Formato YYYYMMDDhhmmss TIME : hh:mm:ss YEAR : YYYY Especiales ENUM Almacena enumeraciones, por ejemplo: (1,5,8). Cuando se asigna un valor a un campo debe estar contenido en la enumeración. SET Almacena una lista valida de valores, por ejemplo: ("a","b","c","d"). Cuando se asigna un valor a un campo debe estar contenido en la lista y además se le pueden asignar varios de los valores. 12
  • 13. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Atributos BINARY Provoca que un campo de texto sea case-sensitive, solo valido para CHAR y VARCHAR. NULL o NOT NULL Permite o impide que un campo sea nulo. Si a un campo no se le especifica un valor, entonces se le asigna el NULL. DEFAULT valor_default Asigna un valor default al campo. En caso que un campo tenga un valor default especificado, este se le asigna cuando el valor es NULL. AUTO_INCREMENT Incrementa en uno el valor máxima que contenga el campo y se lo asigna al nuevo registro, solo puede haber uno por tabla. Indices KEY/INDEX Define que el campo sera utilizado como índice de uno o varios campos. Comúnmente se utilizan para agilizar las busquedas de información. PRIMARY KEY Define que el campo deberá contener valores únicos, no puede contener NULL. Este campo se utiliza para establecer asociaciones entre distintas tablas. UNIQUE Define que el campo deberá contener valores únicos. 13
  • 14. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para crear una tabla de categorías podemos utilizar un comando como este: USE base-de-datos; CREATE TABLE categorias ( claveCategoria int(11) NOT NULL auto_increment, categoria varchar(15) NOT NULL default '', notas varchar(255) default NULL, urlImagen varchar(255) default NULL, PRIMARY KEY (claveCategoria), UNIQUE KEY claveCategoria (claveCategoria) ) TYPE=MyISAM claveCategoria int(11) NOT NULL auto_increment Tipo integer, no permite nulos, su valor se incrementa automaticamente con cada nuevo registro. categoria varchar(15) NOT NULL default '' Tipo string de entre 0 y 15 caracteres, no permite nulos, el valor default que se le asigna cuando no se proporciona un valor es ''. notas varchar(255) default NULL Tipo string de entre 0 y 255 caracteres, si permite nulos. PRIMARY KEY (claveCategoria) Define el campo claveCategoria como la llave primaria de la tabla. UNIQUE KEY claveCategoria (claveCategoria) Define que para el campo claveCategoria se crea un índice que no permite valores duplicados. TYPE=MyISAM Determina el tipo de tabla que se va a crear, este es el mas común y no soporta transacciones. 14
  • 15. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Utilizando archivos con scripts de MySQL Dado que teclear código como el anterior en el cliente de MySQL puede ser muy laborioso, la alternativa es mandarle como parámetro al cliente de MySQL el nombre de un archivo que contenga el código que deseamos ejecutar. Comúnmente estos archivos terminan con la extension sql, y contienen scripts que son ejecutados secuencialmente por el manejador de bases de datos. El comando es como se muestra a continuación: mysql --user=usuario --password=password < archivo.sql 15
  • 16. Programación WEB con PHP Y MySQL (IT Tapachula) 16
  • 17. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Los scripts pueden crear tablas como en el ejemplo anterior, pero también se pueden utilizar para insertar datos en las tablas. Por ejemplo el archivo categorias-datos-pruebas.sql contiene los siguientes estatutos: USE pruebas; INSERT INTO `categorias` (`claveCategoria`, `categoria`, `notas`, `urlImagen`) VALUES (1,'Bebidbas','Sodas, cafe, te, cerveza','images/bebidas.jpg'), (2,'Condimentos','Apio, perejil','images/condimentos.jpg'), (3,'Postres','Pasteles, dulces','images/postres.jpg'), (4,'Lacteos','Queso, mantequilla','images/lacteos.jpg'), (5,'Granos/Cereales','Pasta, pan','images/granos.jpg'), (6,'Carnes','Pollo, res, puerco','images/carnes.jpg'), (7,'Vegetales','Tomates, lechuga','images/vegetales.jpg'), (8,'Mariscos','Camarones, ostiones','images/mariscos.jpg'); 17
  • 18. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Podemos ejecutar varios archivos y de esta manera crear fácilmente tablas e importar información en las tablas, por ejemplo: mysql --user=usuario --password=password < /cursos/php/dbscripts/productos- tabla-pruebas.sql mysql --user=usuario --password=password < /cursos/php/dbscripts/productos- datos-pruebas.sql Después de ejecutar estos comandos tendremos dos tablas en la base de datos recién creada: 18
  • 19. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Una vez importados los datos en las tablas podemos ejecutar comandos para manipular dicha información, por ejemplo el estatuto SELECT. Este estatuto extrae información de las tablas, por ejemplo: select * from categorias; Nos arroja un resultado como este: 19
  • 20. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Cambiando la estructura de las tablas La estructura de una tabla puede ser cambiada con el comando ALTER TABLE, con este comando se puede agregar, borrar o cambiar las características de los campos de la tabla, aquí tenemos algunos ejemplos: ALTER TABLE categorias RENAME AS subcategorias; Cambia el nombre de la tabla. ALTER TABLE categorias ADD nuevoCampo VARCHAR(50) NOT NULL; Agrega un campo a la tabla ALTER TABLE categorias DROP COLUMN Campo; Elimina un campo de la tabla. ALTER TABLE categorias MODIFY nuevoCampo VARCHAR(100) NULL; Cambia la definición de un campo de la tabla. ALTER TABLE categorias CHANGE campoOriginal campoModificado VARCHAR(80) NOT NULL; Cambia el nombre y la definición de un campo de la tabla. 20
  • 21. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Ejercicio - Creando bases de datos, tablas e importando información en MySQL El siguiente ejercicio consiste crear la bases de datos, tablas e importar información en MySQL. Este es el esquema de la base de datos que vamos a utilizar: Lista de actividades: 1. Arranque el daemon o servicio de MySQL 2. Agregue una base de datos llamada cursophp 3. Agregue una tabla llamada usuarios con las siguientes características: CREATE TABLE usuarios ( clave int(4) NOT NULL auto_increment, usuario varchar(60) NOT NULL default '', password varchar(60) NOT NULL default '', PRIMARY KEY (clave), UNIQUE KEY clave (clave) ) TYPE=MyISAM; 21
  • 22. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL 4. En el directorio /cursos/php/dbscripts están los scripts con las definiciones de las tablas y sus datos 5. Por cada tabla hay un par de scripts: Uno para crear la tabla y otro para insertar datos en la misma. 6. Primero ejecute el script para crear la tabla y posteriormente el script para insertar información. Por ejemplo, para la tabla de categorías primero ejecute el script categorias-tabla.sql y luego categorias- datos.sql. 7. Los scripts están numerados, van del 01- al 16-, ejecútelos en ese orden. Al final deberá contar con las siguientes tablas: 22
  • 23. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Manejo de permisos en MySQL MySQL lleva el registro de usuarios en la base de datos mysql con la tabla user: 23
  • 24. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL La estructura de la tabla es la siguiente: 24
  • 25. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para ver los usuarios registrados podemos ejecutar el estatuto SELECT: select host, user, password from user; Para crear y otorgar permisos a un nuevo usuario en MySQL podemos insertar registros directamente en la tabla, o bien utilizar el comando GRANT lo cual es la manera recomendada. Para cambiar los permisos se utiliza el comando REVOKE. 25
  • 26. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL GRANT La sintaxis de este comando es la siguiente: GRANT tipo-de-privilegio ON base-de-datos.tabla TO usuario IDENTIFIED BY 'password'; Aquí tenemos algunos ejemplos: GRANT ALL PRIVILEGES ON cursophp.* TO usuarioweb IDENTIFIED BY 'digitever'; Da de alta al usuario usuarioweb con el password digitever. Otorga todos los privilegios aplicables para la base de datos cursophp. GRANT ALL PRIVILEGES ON cursophp.categorias TO categorias IDENTIFIED BY 'digitever'; Da de alta al usuario categorias con el password digitever. Otorga todos los privilegios aplicables a una tabla para la tabla categorias. GRANT SELECT ON cursophp.* TO soloLectura IDENTIFIED BY 'digitever'; Da de alta al usuario soloLectura con el password digitever. Otorga solamente el privilegio de ejecutar estatutos SELECT en la base de datos cursophp. GRANT SELECT, UPDATE ON cursophp.* TO noAltas IDENTIFIED BY 'digitever'; Da de alta al usuario noAltas con el password digitever. Puede ejecutar estatutos SELECT y UPDATE en la base de datos cursophp. GRANT SELECT (campo1, campo3) ON cursophp.categorias TO restringido IDENTIFIED BY 'digitever'; Da de alta al usuario restringido con el password digitever. Puede ejecutar el estatuto SELECT solamente en los campos especificado en la base de datos cursophp en la tabla categorias. REVOKE La sintaxis es similar a la de GRANT: REVOKE tipo-de-privilegio ON base-de-datos.tabla FROM usuario; Ejemplos: REVOKE ALL PRIVILEGES ON cursophp.* FROM usuarioweb; Retira todos los privilegios al usuario usuarioweb aplicables para la base de datos cursophp. REVOKE ALL PRIVILEGES ON *.* FROM usuarioweb; Retira todos los privilegios al usuario usuarioweb aplicables para la todas las base de datos. REVOKE DELETE ON cursophp.categorias FROM usuarioCategorias; Retira el privilegio de ejecutar estatutos DELETE al usuario usuarioCategorias aplicables para la tabla categorias. 26
  • 27. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Borrando usuarios de MySQL Si queremos borrar un usuario de MySQL podemos utilizar el estatuto DELETE, por ejemplo, para eliminar el usuario userPruebas: 27
  • 28. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Utilizamos el estatuto: delete from user where user='userPruebas'; Al manipular directamente la tabla de usuarios de MySQL tenemos que utilizar el comando FLUSH PRIVILEGES para que MySQL tome en cuenta los cambios: 28
  • 29. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Ejercicio - Dando de alta usuarios en MySQL De de alta los siguientes usuarios con los privilegios indicados: grant all privileges on cursophp.* to usuarioweb identified by 'digitever'; grant select on cursophp.* to soloLectura identified by 'digitever'; Verifique que los usuarios estén dados de alta con el siguiente estatuto SQL: select host, user, password from user; 29
  • 30. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Manipulando los datos con estatutos SQL Para manipular la información almacenada en las tablas, se utilizan comúnmente los siguientes estatutos SQL: • SELECT • INSERT • UPDATE • DELETE SELECT Extrae información de las tablas, sintaxis: SELECT campo1,campo2,....,campoN FROM tabla WHERE condiciones Ejemplos: mysql> select * from categorias; +----------------+-----------------+--------------------------+------------------------+ | claveCategoria | categoria | notas | urlImagen | +----------------+-----------------+--------------------------+------------------------+ | 1 | Bebidbas | Sodas, cafe, te, cerveza | images/bebidas.jpg | | 2 | Condimentos | Apio, perejil | images/condimentos.jpg | | 3 | Postres | Pasteles, dulces | images/postres.jpg | | 4 | Lacteos | Queso, mantequilla | images/lacteos.jpg | | 5 | Granos/Cereales | Pasta, pan | images/granos.jpg | | 6 | Carnes | Pollo, res, puerco | images/carnes.jpg | | 7 | Vegetales | Tomates, lechuga | images/vegetales.jpg | | 8 | Mariscos | Camarones, ostiones | images/mariscos.jpg | +----------------+-----------------+--------------------------+------------------------+ mysql> select * from categorias where claveCategoria = 2; +----------------+-------------+---------------+------------------------+ | claveCategoria | categoria | notas | urlImagen | +----------------+-------------+---------------+------------------------+ | 2 | Condimentos | Apio, perejil | images/condimentos.jpg | +----------------+-------------+---------------+------------------------+ mysql> select * from categorias where categoria = 'carnes'; +----------------+-----------+--------------------+-------------------+ | claveCategoria | categoria | notas | urlImagen | +----------------+-----------+--------------------+-------------------+ | 6 | Carnes | Pollo, res, puerco | images/carnes.jpg | +----------------+-----------+--------------------+-------------------+ 30
  • 31. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL mysql> select claveProducto,producto, existencia from productos where existencia < 10 ORDER BY existencia; +---------------+----------------------------+------------+ | claveProducto | producto | existencia | +---------------+----------------------------+------------+ | 5 | Chef Anton's Gumbo Mix | 0 | | 17 | Alice Mutton | 0 | | 29 | Th?ringer Rostbratwurst | 0 | | 31 | Gorgonzola Telino | 0 | | 53 | Perth Pasties | 0 | | 21 | Sir Rodney's Scones | 3 | | 66 | Louisiana Hot Spiced Okra | 4 | | 74 | Longlife Tofu | 4 | | 45 | R?gede sild | 5 | | 8 | Northwoods Cranberry Sauce | 6 | | 68 | Scottish Longbreads | 6 | | 32 | Mascarpone Fabioli | 9 | +---------------+----------------------------+------------+ 31
  • 32. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL UPDATE Actualiza información, sintaxis: UPDATE tabla SET campo1 = valor1, campo2 = valor2, campoN = valorN WHERE condiciones mysql> select * from entregas; +--------------+------------------+----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Package | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | +--------------+------------------+----------------+ mysql> update entregas set descripcion = 'United Shipping' where claveEntrega = 2; mysql> select * from entregas; +--------------+------------------+----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Shipping | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | +--------------+------------------+----------------+ 32
  • 33. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL INSERT Agrega información, sintaxis: INSERT tabla (campo1,campo2,....,campoN) VALUES (valor1,valor2,....,valorN) mysql> select * from entregas; +--------------+------------------+----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Shipping | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | +--------------+------------------+----------------+ mysql> insert entregas (descripcion, telefono) values ('Nuevo registro', '(956) 722 -3420') ; mysql> select * from entregas; +--------------+------------------+-----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+-----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Shipping | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | | 4 | Nuevo registro | (956) 722 -3420 | +--------------+------------------+-----------------+ 33
  • 34. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL DELETE Borra información, sintaxis: DELETE FROM tabla WHERE condiciones mysql> select * from entregas; +--------------+------------------+-----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+-----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Shipping | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | | 4 | Nuevo registro | (956) 722 -3420 | +--------------+------------------+-----------------+ 4 rows in set (0.00 sec) mysql> delete from entregas where claveEntrega = 4; Query OK, 1 row affected (0.00 sec) mysql> select * from entregas; +--------------+------------------+----------------+ | claveEntrega | descripcion | telefono | +--------------+------------------+----------------+ | 1 | Speedy Express | (503) 555-9831 | | 2 | United Shipping | (503) 555-3199 | | 3 | Federal Shipping | (503) 555-9931 | +--------------+------------------+----------------+ 34
  • 35. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Asociando tablas con joins Un join nos permite asociar varias tablas y extraer datos de ambas. Para que el join pueda asociar las tablas ambas deben tener al menos un campo en común, por ejemplo, las tablas de productos y categorias están asociadas mediante el campo claveCategoria: mysql> desc categorias; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | claveCategoria | int(11) | | PRI | NULL | auto_increment | | categoria | varchar(15) | | | | | | notas | varchar(255) | YES | | NULL | | | urlImagen | varchar(255) | YES | | NULL | | +----------------+--------------+------+-----+---------+----------------+ mysql> desc productos; +-------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+-------------+------+-----+---------+----------------+ | claveProducto | int(11) | | PRI | NULL | auto_increment | | producto | varchar(40) | | | | | | claveProveedor | int(11) | | MUL | 0 | | | claveCategoria | int(11) | | MUL | 0 | | | cantidadPorUnidad | varchar(20) | YES | | NULL | | | precioUnitario | double | YES | | NULL | | | existencia | int(11) | YES | | NULL | | | pedidos | int(11) | YES | | NULL | | | nivelDeResurtir | int(11) | YES | | NULL | | | descontinuado | tinyint(4) | YES | MUL | 0 | | +-------------------+-------------+------+-----+---------+----------------+ 35
  • 36. Programación WEB con PHP Y MySQL (IT Tapachula) MySQL Para obtener la descripción de la categoría para su respectiva clave almacenada en productos el join seria como este: mysql> select productos.claveProducto, productos.producto, categorias.categoria from productos, categorias where productos.claveCategoria = categorias.claveCategoria; +---------------+----------------------------------+-----------------+ | claveProducto | producto | categoria | +---------------+----------------------------------+-----------------+ | 1 | Chai | Bebidbas | | 2 | Chang | Bebidbas | | 24 | Guaran? Fant?stica | Bebidbas | | 75 | Rh?nbr?u Klosterbier | Bebidbas | | 76 | Lakkalik??ri | Bebidbas | | 3 | Aniseed Syrup | Condimentos | | 4 | Chef Anton's Cajun Seasoning | Condimentos | | 5 | Chef Anton's Gumbo Mix | Condimentos | | 6 | Grandma's Boysenberry Spread | Condimentos | | 66 | Louisiana Hot Spiced Okra | Condimentos | | 77 | Original Frankfurter gr?ne So?e | Condimentos | | 16 | Pavlova | Postres | | 48 | Chocolade | Postres | | 49 | Maxilaku | Postres | | 50 | Valkoinen suklaa | Postres | | 62 | Tarte au sucre | Postres | | 68 | Scottish Longbreads | Postres | | 78 | nuevo01 | Postres | | 11 | Queso Cabrales | Lacteos | | 12 | Queso Manchego La Pastora | Lacteos | | 31 | Gorgonzola Telino | Lacteos | | 72 | Mozzarella di Giovanni | Lacteos | | 22 | Gustaf's Kn?ckebr?d | Granos/Cereales | | 23 | Tunnbr?d | Granos/Cereales | | 64 | Wimmers gute Semmelkn?del | Granos/Cereales | | 9 | Mishi Kobe Niku | Carnes | | 17 | Alice Mutton | Carnes | | 7 | Uncle Bob's Organic Dried Pears | Vegetales | | 14 | Tofu | Vegetales | | 28 | R?ssle Sauerkraut | Vegetales | | 51 | Manjimup Dried Apples | Vegetales | | 74 | Longlife Tofu | Vegetales | | 10 | Ikura | Mariscos | | 46 | Spegesild | Mariscos | | 58 | Escargots de Bourgogne | Mariscos | | 73 | R?d Kaviar | Mariscos | +---------------+----------------------------------+-----------------+ 36