|
|
Línea 2: |
Línea 2: |
| <div id=parrafo> | | <div id=parrafo> |
| <div class="slide"> | | <div class="slide"> |
− | ===Introducción al Uso de extensiones orientadas a objetos=== | + | ===Mysqli mysql desde php=== |
− | *Para trabajar con las extensiones, las usaremos siempre orientadas a objetos, aunque tengan
| + | Para trabajar con las extensiones, las usaremos siempre orientadas a objetos, aunque tengan |
| la correspondiente funcionalidad en el lenguaje estructurado. | | la correspondiente funcionalidad en el lenguaje estructurado. |
| *Para recordar muy brevemente posemos usar el siguiente enlace | | *Para recordar muy brevemente posemos usar el siguiente enlace |
Línea 21: |
Línea 21: |
| </div> | | </div> |
| | | |
− |
| |
− | <div class="slide">
| |
− | =====Mysql y php=====
| |
− | '''''Mysql''''' es un gestor de bases de datos relacional. Actualmente es un producto propietario de la empresa '''''Oracle''''', y el software correspondiente libre es '''''Maria''''' que en estos momentos funciona exactamente igual que '''''Mysql''''' y con los mismos comandos. (año 2017).<br />
| |
− | Tener en cuenta la diferencia de la parte del servidor (donde realmente se guardan los datos), y la parte del cliente que es un software que nos ofrece una interfaz de comandos o gráfica y nos permite conectarnos al servidor y gestionar la bases de datos (básicamente enviar sentencias SQL y recoger los resultado).<br />
| |
− | [[Imagen:MysqlClienteServidor.png]]
| |
− |
| |
− | <source lang=bash>
| |
− | apt-get install mysql-server mysql-client
| |
− | </source>
| |
− | Como todos servicio se puede arrancar o parar
| |
− | service mysql start/stop/restart/status
| |
− | *El fichero de configuración
| |
− | /etc/mysql/my.cnf
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Mysql
| |
− | *En él podemos ver el puerto (3306 por defecto), el usuario y otros parámetros del servicio
| |
− | {{MRM_Actividad|Title=Mysql con docker|
| |
− | *Monta un contenedor de docker llamado contenedorMysql.
| |
− | *Instala en el contenedor mysql.
| |
− | *Guarda el contenedor como una imagen y llámalo imagen Mysql.
| |
− | *Crea un nuevo contenedor de esa imagen.
| |
− | *Prueba desde tu localhost a conectarte a la base de datos de ese contenedor.
| |
− | }}
| |
− | </div>
| |
− | {{Widget:Quiz Visual Spelling|mysql_docker|
| |
− | #<u>
| |
− | Creamos el contenedor
| |
− | <source lang=bash>
| |
− | sudo docker run --name contenedorMysql -v /var/www/dockerMysql:/var/www -dti ubuntu:14.04</u>.
| |
− | </source>
| |
− | Arrancamos el contenedor
| |
− | <source lang=bash>
| |
− | sudo docker exect -ti contenedorMysql bash
| |
− | </source>
| |
− | #<u>This</u> is a second <u>mangé</u>.
| |
− | |Instructions=Presiona el icono para ver respuesta.
| |
− | |ExtraChars=true
| |
− | }}
| |
− |
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | <!-- MRM Falta insertar ejemplos de las acciones -->
| |
− |
| |
− | ===Línea de comandos de Mysql===
| |
− | Es importante saber manejar la línea de comandos con el cliente mysql. En alguna ocasión puede ser la forma más rápida de obtener información o realizar acciones sobre la base de dados. Para ello debemos de repasar algún comandos. Son pocos, pero hay que conocerlos.
| |
− | *Acciones que hay que saber hacer
| |
− | #Conectarse a una base de datos en un servidor
| |
− | <source lang=sql>
| |
− | mysql -u usuario -ppassword
| |
− | # Si no especificas el passowr, se solicitará
| |
− | # Si lo especificas ha de ir sin ningún espacio entre el parámetro -p
| |
− | </source>
| |
− | #Mostrar las bases de datos
| |
− | <source lang=sql>
| |
− | show databases;
| |
− | </source>
| |
− | #Usar una base de datos concreta
| |
− | <source lang=sql>
| |
− | use nombre_base_datos;
| |
− | </source>
| |
− | #Mostrar la descripción de una base de datos (Las tablas que contiene)
| |
− | <source lang=sql>
| |
− | describe nombre_tabla;
| |
− | </source>
| |
− | #Obtener ayuda de los comandos disponibles
| |
− | <source lang=sql>
| |
− | help;
| |
− | </source>
| |
− | *Por supuesto debemos de poder ejecutar sentencias SQL
| |
− | #Crear una base de datos (Sentencia SQL), y borrarla
| |
− | #Crear una tabla
| |
− | #Crear un usuario y darle permisos
| |
− | #Modificar y borrar una tabla
| |
− | #Insertar, modificar y borrar registros o tuplas
| |
− | #Realizar consultas '''''select'''''
| |
− | <source lang=bash>
| |
− | connect -h,-u, -p
| |
− | use database
| |
− | exit o quit
| |
− | help Para conocer los comandos que se pueden usar.
| |
− | http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/sql-syntax.html
| |
− | </source>
| |
− |
| |
− | <div class="slide">
| |
− | {{MRM_Actividad|
| |
− | #Conectar a mysql <!--mysql -u root -proot-->
| |
− | #Mira Las bases de datos que tienes <!-- show databases;-->
| |
− | #usa una base de datos concreta <!--use mysql -->
| |
− | #mira las tablas que tiene esa bases de datos <!-- show tables-->
| |
− | #mira la estructura de la tabla <!-- show nombreTabla-->
| |
− | #Haz una consulta de los valores que tiene su primera columna <!--select campo from tabla;-->
| |
− | #ejecuta el comando help
| |
− | #sal de sql <!-- quit-->
| |
− | }}
| |
− |
| |
− | </div>
| |
− | <div class="slide">
| |
− | ;Bases de datos
| |
− | [[archivo:baseDatos.pdf]]
| |
− | <source lang=sql>
| |
− | -- Creamos la base de datos
| |
− | CREATE DATABASE `dwes` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;
| |
− | USE `dwes`;
| |
− | -- Creamos las tablas
| |
− | CREATE TABLE `dwes`.`tienda` (
| |
− | `cod` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
| |
− | `nombre` VARCHAR( 100 ) NOT NULL ,
| |
− | `tlf` VARCHAR( 13 ) NULL
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`producto` (
| |
− | `cod` VARCHAR( 12 ) NOT NULL ,
| |
− | `nombre` VARCHAR( 200 ) NULL ,
| |
− | `nombre_corto` VARCHAR( 50 ) NOT NULL ,
| |
− | `descripcion` TEXT NULL ,
| |
− | `PVP` DECIMAL( 10, 2 ) NOT NULL ,
| |
− | `familia` VARCHAR( 6 ) NOT NULL ,
| |
− | PRIMARY KEY ( `cod` ) ,
| |
− | INDEX ( `familia` ) ,
| |
− | UNIQUE ( `nombre_corto` )
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`familia` (
| |
− | `cod` VARCHAR( 6 ) NOT NULL ,
| |
− | `nombre` VARCHAR( 200 ) NOT NULL ,
| |
− | PRIMARY KEY ( `cod` )
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`stock` (
| |
− | `producto` VARCHAR( 12 ) NOT NULL ,
| |
− | `tienda` INT NOT NULL ,
| |
− | `unidades` INT NOT NULL ,
| |
− | PRIMARY KEY ( `producto` , `tienda` )
| |
− | ) ENGINE = INNODB;
| |
− | -- Creamos las claves foráneas
| |
− | ALTER TABLE `producto`
| |
− | ADD CONSTRAINT `producto_ibfk_1`
| |
− | FOREIGN KEY (`familia`) REFERENCES `familia` (`cod`)
| |
− | ON UPDATE CASCADE;
| |
− | ALTER TABLE `stock`
| |
− | ADD CONSTRAINT `stock_ibfk_2`
| |
− | FOREIGN KEY (`tienda`) REFERENCES `tienda` (`cod`)
| |
− | ON UPDATE CASCADE,
| |
− | ADD CONSTRAINT `stock_ibfk_1`
| |
− | FOREIGN KEY (`producto`) REFERENCES `producto` (`cod`)
| |
− | ON UPDATE CASCADE;
| |
− | CREATE USER `dwes`
| |
− | IDENTIFIED BY 'abc123.';
| |
− | GRANT ALL ON `dwes`.*
| |
− | TO `dwes`;
| |
− | </source>
| |
− | {{Actividad|
| |
− | Usa mysql para cargar por líneas de comandos el siguiente fichero arriba especificado
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Recordando mysql
| |
− | *En la siguiente página puedes hacer un repaso de mysql
| |
− | http://dev.mysql.com/doc/refman/5.7/en/index.html
| |
− | *Un manual en castellano
| |
− | http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/
| |
− | *Debemos conocer también la herramienta phpmyadmin
| |
− | sudo apt-get install phpmyadmin
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Recordando mysql en la página oficial
| |
− | http://www.phpmyadmin.net/home_page/index.php
| |
− | </div>
| |
− | <div class="slide">
| |
− | ====Interfaz gráfica====
| |
− | Además de línea de comandos también se dispone de varias herramientas gráficas alternativas. Siempre resulta más agradable e intuitivo, pero requiere más recursos y tener instalados aplicaciones concretas.<br />
| |
− | En windows o con wine en linux podemos probar '''''SQLyog''''' https://www.webyog.com/product/sqlyog, una herramienta intuitiva y de poco peso. No obstante usaremos '''''phpmyadmin''''', por ser un clásico y de sencillo uso.<br />
| |
− |
| |
− | {{MRM_Actividad|
| |
− | *Instalamos phpmyadmin en nuestro contenedor contenedorMysql
| |
− | <soure lang=bash>
| |
− | sudo apt-get install phpmyadmin
| |
− | </sourece>
| |
− | *Probamos a acceder a él desde nuestro localhost
| |
− | *Depende de como instalemos es posible que haya que hacer un enlace simbóloco.
| |
− | *Para ello hay que buscar dónde se ha instalado el '''''index.php''''' de '''''phpmyadmin''''' .
| |
− | *Entonces haceremos un enlace simbólico de esa carpeta a nuestro DocumentRoot.
| |
− | *En mi caso:
| |
− | <source lang=bash>
| |
− | # ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
| |
− | </source>
| |
− | Probamos a conectarnos por phpmyadmin a nuestro servidor local
| |
− | <source lang=bash>
| |
− | #Escribimos en el url
| |
− | http://ip_contenedor/phpmyadmin
| |
− |
| |
− | </source>
| |
− |
| |
− | }}
| |
− | [[Archivo:datos.sql]]
| |
− | <source lang=sql>
| |
− | -- Creamos la base de datos
| |
− | CREATE DATABASE `dwes` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;
| |
− | USE `dwes`;
| |
− | -- Creamos las tablas
| |
− | CREATE TABLE `dwes`.`tienda` (
| |
− | `cod` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
| |
− | `nombre` VARCHAR( 100 ) NOT NULL ,
| |
− | `tlf` VARCHAR( 13 ) NULL
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`producto` (
| |
− | `cod` VARCHAR( 12 ) NOT NULL ,
| |
− | `nombre` VARCHAR( 200 ) NULL ,
| |
− | `nombre_corto` VARCHAR( 50 ) NOT NULL ,
| |
− | `descripcion` TEXT NULL ,
| |
− | `PVP` DECIMAL( 10, 2 ) NOT NULL ,
| |
− | `familia` VARCHAR( 6 ) NOT NULL ,
| |
− | PRIMARY KEY ( `cod` ) ,
| |
− | INDEX ( `familia` ) ,
| |
− | UNIQUE ( `nombre_corto` )
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`familia` (
| |
− | `cod` VARCHAR( 6 ) NOT NULL ,
| |
− | `nombre` VARCHAR( 200 ) NOT NULL ,
| |
− | PRIMARY KEY ( `cod` )
| |
− | ) ENGINE = INNODB;
| |
− | CREATE TABLE `dwes`.`stock` (
| |
− | `producto` VARCHAR( 12 ) NOT NULL ,
| |
− | `tienda` INT NOT NULL ,
| |
− | `unidades` INT NOT NULL ,
| |
− | PRIMARY KEY ( `producto` , `tienda` )
| |
− | ) ENGINE = INNODB;
| |
− | -- Creamos las claves foráneas
| |
− | ALTER TABLE `producto`
| |
− | ADD CONSTRAINT `producto_ibfk_1`
| |
− | FOREIGN KEY (`familia`) REFERENCES `familia` (`cod`)
| |
− | ON UPDATE CASCADE;
| |
− | ALTER TABLE `stock`
| |
− | ADD CONSTRAINT `stock_ibfk_2`
| |
− | FOREIGN KEY (`tienda`) REFERENCES `tienda` (`cod`)
| |
− | ON UPDATE CASCADE,
| |
− | ADD CONSTRAINT `stock_ibfk_1`
| |
− | FOREIGN KEY (`producto`) REFERENCES `producto` (`cod`)
| |
− | ON UPDATE CASCADE;
| |
− | CREATE USER `dwes`
| |
− | IDENTIFIED BY 'abc123.';
| |
− | GRANT ALL ON `dwes`.*
| |
− | TO `dwes`;
| |
− |
| |
− | </source>
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− |
| |
− | {{Actividad|
| |
− | Usando phpmyadmin, carga los datos para poblar la base de datos}}
| |
− | *Otra herramienta importante que permite realizar diseños es workbrench
| |
− | http://dev.mysql.com/doc/workbench/en/index.html
| |
− | <source lang=bash>
| |
− | sudo add-apt-repository ppa:olivier-berten/misc
| |
− | sudo apt-get update
| |
− | sudo apt-get install mysql-workbench
| |
− | </source>
| |
− | </div>
| |
− | <div class="slide">
| |
− | {{Actividad|
| |
− | *Instalamos y probamos las diferentes opciones con esta herramienta
| |
− | *Probamos a hacer un diseño en modelo relacional y a partir del modelo creamos las tablas.
| |
− | *Probamos las opciones '''''forward engineer''''' y '''''reverser engineer'''''
| |
− | }}
| |
− | </div>
| |
− | <div class="slide">
| |
− |
| |
− | ===Herramientas de administración===
| |
− | *Con '''''phpmyadmin''''', podemos hacer casi todo de administrar y manejar las bases de datos
| |
− | *No obstante mysql proporciona una serie de herramientas que permiten administrar por línea de comandos .
| |
− | *En muchas ocasiones este tipo de operaciones resultan muy interesantes.
| |
− | #mysql
| |
− | #myhsqladmin
| |
− | #mysqlshow
| |
− | </div>
| |
− | <div class="slide">
| |
− |
| |
− | <div class="slide">
| |
− | ;mysqladmin
| |
− | *Es un cliente específico para la administración
| |
− | *Entre otras acciones podemos realizar:
| |
− | #crear y eliminar bases de datos.
| |
− | #mostrar la configuración y el estado del servidor.
| |
− | #cambiar contraseñas.
| |
− | #detener un servidor.
| |
− | #ver la version del servidor
| |
− | http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/mysqladmin.html
| |
− | </div>
| |
− | <div class="slide">
| |
− | {{Actividad|
| |
− | Prueba a hacer cada una de las acciones especificadas anteriormente
| |
− | <!-- crear bases de datos mysqladmin -u root -proot create nombreBaseDatos
| |
− | mysqladmin -u root -proot extend-status
| |
− | mysqladmin -u root -proot password
| |
− | mysqladmin -u root -proot shutdown
| |
− | mysqladmin -u root -proot version
| |
− | -->
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;mysqlshow
| |
− | http://ftp.nchu.edu.tw/MySQL//doc/refman/5.0/es/mysqlshow.html
| |
− | *muestra informaicón sobre la base de datos
| |
− | mysqlshow -u root -proot
| |
− | *Nos mostraría las tablas de ese ususario
| |
− | </div>
| |
| | | |
| <div class="slide"> | | <div class="slide"> |