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';

Base de datos sakila

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;

Solucionar estadísticas

Solución 1:

Copiar el mysql dump de xampp\mysql a c:\Archivos de Programa\Mysql\Mysql workbench 8.0

Solución 2:

Abrir el archivo c:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules\wb_admin_export.py:

Y cambiar la siguiente línea a esto:

skip_column_statistics = True 

Solución 3:

Exportar desde el phpmyadmin (super sencillo)

Solución 4:

Exportar cada tabla individualmente con botón derecho ->Send to sql editor->create statement