Subido por Agustina Echeverria

3. SQL-Migraciones

Anuncio
SQL Y MIGRACIONES
Shalini Ramchandani - Cristian Espinoza
Verónica Calás - Omar Carrasco
Desarrollo web:
Fundamentos teóricos
-Framework
-Laravel
-MVC
¿Qué es un framework?
Entorno de trabajo.
➔
➔
➔
➔
➔
Módulos
Conceptos
Prácticas
Criterios
etc.
Según búsquedas realizadas en google:
Fuente: https://coderseye.com/best-php-frameworks-for-web-developers/
Según usos en proyectos:
-Laravel: 3177
-Code igniter: 1085
-Symfony: 990
-Zend: 907
Fuente: https://coderseye.com/best-php-frameworks-for-web-developers/
Laravel como framework:
➔
➔
➔
➔
➔
➔
Archivos y código organizados (unificados)
MVC
PHP 7
Documentación
Package
Mapeo objeto-relacional (ORM)
Base de Datos
-SQL
-Migraciones
¿Qué es la arquitectura MVC?
Modelo
Controlador
Vista
¿Qué es una base de datos?
➔
Relacionales y no relacionales.
En relacionales:
➔
➔
➔
Información agrupada y
estructurada.
Se representan como tablas,
compuestas por columnas y filas.
Se ampara en modelos lógicos.
¿Cómo se modela una base de datos?
Formas de crear una BD:
➔
Sybase PowerDesigner.
➔
Workbench (MYSQL Workbench)
➔
Scripts SQL
➔
Herramientas de Framework:
◆
Laravel -> Blueprint.
◆
RoR -> Active Records.
Schema Migrations.
CREATE - SQL
1.
CREATE DATABASE databasename;
1.
DROP DATABASE databasename;
1.
2.
* Existe comando ALTER TABLE, depende de la versión.
CREATE TABLE
table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
DROP TABLE table_name;
DATOS CONSTRAINT - SQL
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
➔
➔
➔
➔
➔
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
DEFAULT
AUTOINCREMENT - SQL
CREATE TABLE Persons (
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
SELECT - SQL
1.
SELECT * FROM table_name;
1.
SELECT DISTINCT column1, column2, …
FROM table_name;
WHERE- SQL
1.
SELECT column1, column2, …
SELECT * FROM Customers
FROM table_name
WHERE condition;
WHERE CustomerID=1;
CONSULTAS SQL
1.
SELECT column1, column2, …
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
2.
SELECT column1, column2, …
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
3.
SELECT column1, column2, …
FROM table_name
WHERE NOT condition;
INSERT - SQL
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
¿Qué es una migración?
➔
Trasladarse desde el lugar en que se habita a otro diferente.
Necesidad de uso de las migraciones:
➔
➔
➔
➔
Actualización de una base de datos.
Migración hacia o desde la plataforma de
hardware.
Migración a un nuevo software.
Fusión de dos sistemas paralelos en uno solo que
se requiere cuando una empresa absorbe a otra
o cuando dos negocios se fusionan.
Según la documentación de LARAVEL:
➔
Fácil control de versiones, bajo la modificación de
los “schema”.
https://laravel.com/docs/5.6/migrations
CREAR - MIGRACIÓN
php artisan make:migration create_users_table
➔
La migración es creada en el directorio: database/migration del proyecto.
➔
Cada migración contiene un TIMESTAMP.
--create/--table
php artisan make:migration create_users_table --create=users
➔
Se asigna un nombre específico.
UBICACIÓN MIGRACIONES
nombre_proyecto/database/migrations
¿Qué es un TIMESTAMP?
➔
Es el número de segundos que han transcurrido desde las 0 horas del 1 de enero de 1970.
➔
Conversor online: https://www.cdmon.com/es/conversor-timestamp
Funciones que calculan el TIMESTAMP:
PHP:
$date = new DateTime($fecha);
$timestamp = $date->getTimestamp();
JavaScript:
down vot
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul',...];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds(); var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time; }
RECORDEMOS: ORIENTACIÓN A OBJETOS
P.O.O.
Abstracción
Polimorfismo
Herencia
Encapsulamiento
ESTRUCTURA - MIGRACIÓN
➔
Método up(): se usa para añadir nuevas tablas o columnas en la base de
datos.
➔
Método down(): se usa como el inverso de la función anterior.
EJEMPLO - ESTRUCTURA
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
public function down()
{
Schema::drop('flights');
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateFlightsTable extends Migration
{
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
public function down()
{
Schema::drop('flights');
}
}
EJECUTAR - MIGRACIÓN
php artisan migrate
php artisan migrate --force
➔
force, puede ocasionar la pérdida de datos.
ROLLBACK - MIGRACIÓN
➔
Vuelve al último punto en memoria.
php artisan migrate:rollback
➔
Se vuelve atrás al número dado de migraciones realizadas.
php artisan migrate:rollback --step=5
➔
(últimas 5 migraciones realizadas)
Vuelve atrás a todas las migraciones realizadas.
php artisan migrate:reset
REFRESH - MIGRACIÓN
php artisan migrate:refresh
➔
Realiza un rollback y posteriormente vuelve a ejecutar las migraciones.
php artisan migrate:refresh --seed
➔
Lo anterior, pero poblando la BD.
DATOS - MIGRACIÓN
$table->increments('id');
$table->boolean('confirmed');
$table->char('name', 100);
$table->integer('votes');
$table->year('birth_year');
...
MODIFICADORES - MIGRACIÓN
$table->tipo(nombre)->característica();
Ejemplos:
->autoIncrement()
->nullable()
->change()
->after('column')
ÍNDICES - MIGRACIÓN
$table->primary('id');
$table->primary(['id', 'parent_id']);
$table->unique('email');
$table->index('state');
$table->spatialIndex('location');
Tarea pa’ la Ksa !
Chao loh vimoh
Vendizuone!
Tarea:
●
●
Realizar las migraciones de al menos dos entidades del MER presentado
la semana pasada.
Pueden presentar la actividad al final de esta clase, o al inicio de la clase
de la próxima semana.
php artisan make:migration create_users_table
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class TablaHotel extends Migration
{
public function up()
{
Schema::create('hotels', function (Blueprint $table) {
$table->increments('id');
$table->string('nombre');
$table->string('e-mail');
$table->timestamps();
});
}
public function down()
{
Schema::drop('hotels');
}
}
php artisan migrate
¿DUDAS?
Descargar