|
|
| 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"> |