Seleccionar todos los actores cuyo nombre empieze por ‘A’ y el apellido acabe por ‘N’
Seleccionar todos los actores cuyo id esté entre 20 y 70 y el apellido empiece por ‘A’
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3 y el title empiece por ‘A’
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3 y el title empiece por ‘A’ o el rating sea ‘G’
Seleccionar todas las películas cuyo rating sea ‘G’, ‘PG’ o ‘R’
Autor: Juan Pablo Fuentes
Operador SQL
between: valores en un rango
select * from actor
where actor_id between 20 and 25
in: Valores en una lista
select * from actor
where first_name in (‘ED’,’TED’)
Like: Valores siguiendo un patrón
-- Caracteres comodin: % cualquier cadena _ cualquier caracter -- Empiecen por select * from actor where first_name like 'EL%'; -- Acaben por select * from actor where first_name like '%EN'; -- Empiecen y acaben por select * from actor where first_name like 'E%N'; -- Contengan select * from actor where first_name like '%AN%'; -- El guión bajo encaja con un sólo carácter</pre> select * from actor where first_name like '_AN'; select * from actor where first_name like '%AN'; select * from actor where first_name like '_E_'; select * from actor where first_name like 'T_M';
Un programa de 1958 que sigue funcionando (y así seguirá)
Sakila modelo de datos
Base de datos sakila
¿Cómo importarlo?
Tenemos dos sql
schema y data
Primero importamos el esquema. Opciones:
Workbench copiar sql pegarlo en una consulta y ejecutar
Workbench Server->data Import->self-contained-file->Seleccionar archivo
PhpMyAdmin copiar sql pegarlo en ventana SQL
PhpMyadmin->importar->Seleccionar archivo Deshabilitar revisión claves foráneas
Resumen SQL modificar datos
-- LMD Lenguaje de manipulación de datos
-- CRUD --> Create Read Update Delete Operaciones básicas sobre datos
-- Mantenimiento de una tabla: Altas bajas modificaciones y consultas
-- Create: insert into nombre_tabla (lista_de_campos) values (lista_de_valores)
insert into autor (nombre,email,pais_nacimiento) values ('eva','eva@eva.com','Francia');
insert into autor (nombre,email) values ('eva','eva@eva.com'),('eva','eva@eva.com');
insert into musico (nombre, descripcion) values ('Johann Sebastian Bach','Un excelente músico renacentista'),
('Evaristo García','Representante del nuevo sonido manchego');
-- UPdate update nombre_tabla set campo=nuevo valor[, campo2=nuevo valor] [where condicion]
-- Aunque el where es opcional casi siempre será obligatorio
-- Aunque la condición puede ser cualquiera es muy frecuente id=numero
update musico set nombre='Juanito Prime',
descripcion='hola'
where id_musico=1;
update musico set descripcion='Músico muy competente'
where id_musico=10;
update musico set descripcion='Músico muy competente'
where descripcion='qqqqq';
-- Delete delete from tabla [where condicion]
delete from musico
where id_musico=12;
delete from musico
where descripcion='eeee';
delete from musico
where nombre='Juanito';
-- Vaciar una tabla truncate tabla
truncate musico;
	Ejercicio LMD
Tengo la siguiente tabla:
CREATE TABLE `autor` ( `idautor` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(150) NOT NULL, `email` varchar(100) DEFAULT NULL, `pais_nacimiento` varchar(25) DEFAULT NULL, PRIMARY KEY (`idautor`) )
Realizad lo siguiente utilizando lenguaje de manipulación de datos
Insertar los siguientes registros: Ana, ana@gmail.com, España; Eva, eva@gmail.com,España;John, john@gmail.com,Francia;Rose, rose@gmail.com,Francia
Modificar el registro de JOhn (buscar el id para que sea exacto) y cambiar el mail a john.f@gmail.com
Eliminar a Eva (buscar el id para que sea exacto)
Seleccionar todos los autores con un id mayor de 2
Ejercicio DML Musicos
Insertar los siguiente músicos:
‘Johann Sebastian Bach’, ‘Músico renacentista muy bueno’
‘Evaristo García’, ‘Representante de los nuevos sonidos manchegos’
Modificar el músico con la primera id (1) cambiar la descripción a: ‘Músico excelente’
Eliminar el músico con id 1
Ejercicio DDL
Crear una base de datos con las siguientes tablas:
musico
id int auto pk
nombre varchar(100)
descripcion text
disco
id int auto pk
titulo varchar(100)
precio decimal(6,2)
Hay una relación entre disco y musico n-N
Crear con DDL las tablas necesarias con sus foreignkeys
</pre> CREATE DATABASE musica; use musica; CREATE TABLE musico ( id_musico INT AUTO_INCREMENT, nombre VARCHAR(100), descripcion TEXT, PRIMARY KEY (id_musico) ); CREATE TABLE disco ( id_disco INT AUTO_INCREMENT, titulo VARCHAR(100), precio DECIMAL(6,2), PRIMARY KEY (id_disco) ); CREATE TABLE musico_disco ( id_musico_disco INT AUTO_INCREMENT, id_musico INT, id_disco INT, PRIMARY KEY (id_musico_disco), key (id_musico), key (id_disco), FOREIGN KEY fk_musico (id_musico) REFERENCES musico(id_musico), FOREIGN KEY fk_disco (id_disco) REFERENCES disco(id_disco) ); <pre>
Sql sentencias creación de datos (DDL)
Crear BD:
https://www.w3schools.com/sql/sql_create_db.asp
Crear tabla:
http://www.mysqltutorial.org/mysql-create-table/
http://www.mysqltutorial.org/mysql-foreign-key/
http://www.mysqltutorial.org/mysql-index/mysql-create-index/
CREATE TABLE [IF NOT EXISTS] table_name(
    lista_columnas
) ENGINE=storage_engine
-- Formato de las columnas:
nombre_columna tipo_columna(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT]
	
PRIMARY KEY (columna)
-- De las dos maneras se puede:
INDEX nombre_indice (nombre_columna)
KEY (nombre_columna) 
FOREIGN KEY nombre_clave_foranea(columna)
REFERENCES tabla_referenciada(columna_tabla_referrenciada)
ON DELETE action
ON UPDATE action;
-- Crear un índice después de crear la tabla
CREATE INDEX index_name
ON table_name (column1, column2, ...);
CREATE TABLE IF NOT EXISTS tasks (
    task_id INT AUTO_INCREMENT,
    employee_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    start_date DATE,
    due_date DATE,
    status TINYINT NOT NULL,
    priority TINYINT NOT NULL,
    description TEXT,
    PRIMARY KEY (task_id),
    INDEX ix_title (title),
    FOREIGN KEY fk_employee(employee_id )
    REFERENCES employee (employee_id )
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)  ENGINE=INNODB;
