DML (Data Manipulation Language)
DML (Data Manipulation Language)
Insertar datos (INSERT)
INSERT
Esta sentencia la utilizaremos cuando queremos introducir datos que no están en la base de datos, datos nuevos.
Las formas más corrientes de insertar datos en una tabla son:
- Insertar una fila indicando qué columnas y en qué orden se van a poner los valores:
INSERT INTO alumnos(codigo, nombre) VALUES (25, "Pep"); - Insertar una fila sin indicar columnas. Se introducirán todos los valores y en el orden en el que están las columnas en la tabla:
INSERT INTO alumnos VALUES(25, "Pep", "Garcia");
Show Create
En mysql podemos utilizar esta instrucción para ver como se creo la tabla y por tanto poder ver qué campos tiene y en qué orden se crearon.
SHOW CREATE TABLE nombre_de_la_tabla;
Esto, si fuera una tabla de clientes por ejemplo nos devolverá algo parecido a esto:
Table | Create Table
----------|------------------------------------------------------------
empleados | CREATE TABLE `empleados` (
`id` int NOT NULL,
`nombre` varchar(100) DEFAULT NULL,
`salario` decimal(10,2) DEFAULT NULL,
CHECK (`salario` >= 0 AND `salario` <= 9999),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- Insertar varias filas en una sola sentencia:
INSERT INTO alumnos(codigo, nombre) VALUES (25, "Pep"), (26, "Pepa"), (27, "Pepet");
Ejercicios INSERT
Ejercicios INSERT
1) Inserta un nuevo tipo de cultivo de código ARR y nombre Arroz
2) Inserta un nuevo país de nombre España del continente Europa.
3) Inserta las siguientes 4 provincias, en una sola sentencia:
- Valencia, con 1 millón de habitantes
- Alicante, con 700000 habitantes
- Castellón, con medio millón de habitantes
- Madrid, con 2 millones de habitantes
4) Inserta la comarca "Ribera Baixa", de código RB
SELECT * ...
Para ver los registros de una tabla, y comprobar que los hemos insertado correctamente podemos utilizar la siguiente sentencia:
SELECT * FROM tabla;
Insertar datos desde otras tablas
- Insertar filas en una tabla a partir de la SELECT de otra tabla;
INSERT INTO alumnos_ciclos (cod, nombre)
SELECT ...
FROM alumnos
WHERE alumnos.ciclo = 's';
- Insertar filas a partir de un archivo (por defecto, en la carpeta de la BD):
LOAD DATA LOCAL INFILE '/carpeta/del/fichero/data.csv'
INTO TABLE pueblos
FIELDS TERMINATED BY ','
LINE TERMINATED BY '\n';
- La operación inversa (de tabla a archivo) sería:
SELECT ...
INTO OUTFILE '/carpeta/de/destino/data.csv'
FIELDS TERMINATED BY ','
LINE TERMINATED BY '\n'
FROM...
WHERE...
Carpeta segura
No podemos dejarlo en cualquier carpeta ya que no tenemos permisos. Primero deberemos ver en qué carpeta podemos crear ese archivo de resultados y después volcar allí el resultado de la select.
Por ejemplo:
SHOW VARIABLES LIKE "secure_file_priv";
Supongamos que nos muestra: '/var/lib/mysql-files'
Ahora podemos hacer el volcado así:
SELECT *
INTO OUTFILE "/var/lib/mysql-files/jug_bar.csv"
FROM jugadores
WHERE equipo = "bar";
Borrar datos (DELETE)
Note
Esta sentencia la utilizaremos cuando queremos eliminar datos que ya están en la base de datos. Borrará todas las filas que cumplan la condición del where.
La sintaxis es:
DELETE FROM alumnos
WHERE codigo = 25;
Vemos que en la clausula DELETE no se especifican los campos a borrar, ya que se borra toda la fila. Normalmente en esta sentencia se utilizan las claves primarias para especificar qué información queremos eliminar. En otro caso podemos eliminar más de una fila y hay que tener en cuenta que estas operaciones no se pueden deshacer
Más adelante comentaremos más cosas de la condición de WHERE (cuando vemos la cláusula WHERE de la sentencia SELECT).
Modo seguro
Quizás MySQL no nos deje hacer UPDATE o DELETE (sin utilizar las claves primarias) porque está en modo seguro. En ese caso, es necesario cambiar la variable de entorno correspondiente:
SET SQL_SAFE_UPDATES=0;
Modificar datos (UPDATE)
La sentencia UPDATE se utiliza para modificar datos que ya están en la base de datos.
La sintaxis es:
UPDATE alumnos
SET calle = “Sequial”,
número = 31,
pueblo = 56410
WHERE codigo = 25;
codigo la clave primaria de la tabla alumnos.
Modificará todas las filas que cumplan la condición del WHERE.
Ejercicios DELETE y UPDATE
Transacciones
Si queremos hacer modificaciones de los datos de la BBDD (inserts, updates o deletes) y después dejarlo como estaba, usaremos transacciones: begin y rollback (ya entraremos en detalle). Pero no funciona en DDL (CREATE,ALTER y DROP).
BEGIN;
UPDATE alumnos SET calle = “Sequial”, número = 31, pueblo = 56410 WHERE código = 25;
DELETE FROM alumnos WHERE código = 25;
ROLLBACK;
Ejercicios
- Borra la provincia de Madrid
- Aumenta un 10% la población de todas las provincias
- Modifica la comarca
RBhaciendo que el nombre empiece por “La”. Utiliza el operador CONCAT (consulta la sintaxis en Internet). - Guarda los datos de las provincias en el archivo “provincias.txt” del directorio sobre el que tienes permisos. Recuerda que ese directorio se puede saber ejecutando:
SHOW VARIABLES LIKE "secure_file_priv"; - Borra el contenido de la tabla provincias y vuelve a cargar los datos a partir del archivo que has creado en el ejercicio anterior.