GBD T4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

Tema 4

DML (Parte I)

IES Francisco Romero Vargas


Departamento de Informática

Tema 4. DML (I). Página 1 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

1. Introducción
Un Lenguaje de Manipulación de Datos (Data Manipulation Language, DML)
es un lenguaje proporcionado por el sistema de gestión de base de datos que
permite a los usuarios de la misma llevar a cabo las tareas de consulta o
manipulación de los datos (inserción, borrado, actualización y consultas) basado
en el modelo de datos adecuado.

DML https://dev.mysql.com/doc/refman/8.0/en/sql-data-manipulation-
statements.html
Funciones https://dev.mysql.com/doc/refman/8.0/en/functions.html

Basándonos en la BD “opera” del tema anterior vamos a estudiar,


mediante ejemplos, las siguientes sentencias DML:

Objetivo Comando Aclaración


Insertar INSERT Inserta uno o más registros en una tabla.
información REPLACE Inserta uno o más registros y/o modifica los
existentes.
Consultar datos SELECT Se usa para seleccionar registros de una o más tablas.
Borrar DELETE Elimina uno o varios registros de una tabla.
información TRUNCATE Elimina todos los resgistros de una tabla.
Modificar UPDATE Actualiza columnas de registros existentes en una
información tabla.

2. Inserción de datos en una tabla

INSERT

Inserta uno o más registros en una tabla.

INSERT [INTO] mitabla [(columna1, [columna2,... ])]


VALUES (valor1, [valor2,...]);

● Las cantidades de columnas y valores deben ser las mismas.


● Si una columna no se especifica, le será asignado el valor por omisión.

Tema 4. DML (I). Página 2 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

● Los valores especificados (o implícitos) por la sentencia INSERT deberán


satisfacer todas las restricciones aplicables.
● Si ocurre un error de sintaxis o si alguna de las restricciones es violada,
no se agrega la fila y se devuelve un error.

INSERT INTO opera (nombre, fecha_estreno, lugar_estreno,


autor_idautor, idioma) VALUES ('Don Pasquale', '1843-01-
03', 'Paris', 3, 'I');

● Cuando se insertan todos los valores de una tabla, no es necesario poner


los nombres de los campos (columnas).

INSERT INTO opera VALUES (2, 'Tosca', ‘Roma’,'1900-01-


14', 'I', NULL, NULL, 2);

● Se pueden insertar varias filas (registros) a la vez con una única


sentencia.

INSERT INTO opera VALUES (12, 'Macbeth', ‘Florencia’,


'1847-03-14', 'I', 'Basada en la tragedia homónima de
William Shakespeare', NULL, 1), (13, 'Fidelio', ‘Viena’,
'1805-11-20', 'A', NULL, NULL, 6);

REPLACE

Funciona como INSERT, pero si la clave primaria del registro que


se inserta ya se encuentra en la tabla, entonces REEMPLAZA el
registro de la tabla por el nuevo registro.

REPLACE INTO opera (idopera,nombre) VALUES


(13,'Fidelio'),(14,'Norma');

3. Modificación de datos de una tabla

UPDATE

Actualiza columnas en registros existentes de una tabla.

Tema 4. DML (I). Página 3 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

UPDATE mitabla
SET columna1=expr1 [, columna2=expr2 ...]
[WHERE condicion]
[ORDER BY ...]
[LIMIT numero_de_filas_afectadas]

● La cláusula SET indica qué columna modificar y los valores que puede
recibir. La cláusula WHERE, si se da, especifica qué registros deben
actualizarse. De otro modo, se actualizan todos los registros. Si la cláusula
ORDER BY se especifica, los registros se actualizan en el orden que se
especifica. La cláusula LIMIT es el límite de registros a actualizar.

UPDATE opera SET autor_idautor=6 where nombre='Fidelio';

4. Borrado de filas de una tabla

DELETE

Borra registros de una tabla.

DELETE FROM mitabla WHERE columna1 = valor1

DELETE FROM opera WHERE nombre LIKE '%Norma%';

TRUNCATE

Vacía una tabla completamente.

TRUNCATE TABLE mitabla

Lógicamente, esto es equivalente a un comando DELETE que borre todos


los registros, pero hay diferencias prácticas bajo ciertas circunstancias,
sobre todo si existe algún campo AUTO_INCREMENT.

¡ Cuidado ! Cuando existen claves foráneas no es posible realizar este


comando salvo que se deshabiliten en el sistema las claves foráneas
previamente modificando la variable global que las controla.

Tema 4. DML (I). Página 4 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE autor;
SET FOREIGN_KEY_CHECKS=1;

5. Consulta de datos de una tabla

SELECT

Devuelve información de los datos contenidos en una tabla.

SELECT
[ALL | DISTINCT ]
select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... ]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]

● Es importante conocer el orden de las cláusulas:

SELECT … FROM … WHERE … GROUP BY …HAVING … ORDER … LIMIT

SELECT 1+1; (devuelve 2).

● Permite seleccionar una o varias columnas:

SELECT idopera,nombre FROM opera;

● A las columnas se les puede poner alias:

SELECT idopera, nombre AS titulo FROM opera;

● Se pueden ordenar los registros seleccionados:

Tema 4. DML (I). Página 5 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

SELECT nombre, autor_idautor FROM opera ORDER BY


autor_idautor,nombre;

● También se pueden agrupar registros. En este caso se contarán todos


los registros por cada autor diferente:

SELECT autor_idautor, COUNT(nombre) AS operas FROM opera


GROUP BY autor_idautor ORDER BY operas DESC;

● Se pueden seleccionar solo los registros que cumplan una condición:

SELECT nombre FROM opera WHERE autor_idautor=1;

● HAVING permite poner condiciones, como WHERE, pero estas


condiciones se aplican después del ORDER BY y GROUP BY. Además,
HAVING puede llevar funciones de agregación (max, min, count, avg...),
mientras que WHERE no puede.

SELECT autor_idautor, COUNT(nombre) FROM opera GROUP BY


autor_idautor HAVING COUNT(nombre)>=2;

● Es posible enviar la consulta a un fichero de texto:

SELECT nombre,fecha_estreno,lugar_estreno FROM opera


INTO OUTFILE 'opera.txt';

Funciones de Agrupación

Permiten obtener datos de una consulta completa o con GROUP


BY.

AVG. Retorna el valor medio de la expresión.

SELECT ciudad, AVG(aforo) FROM teatro GROUP BY ciudad;

COUNT. Retorna el contador del número de valores no NULL en los registros


recibidos por un comando SELECT.

SELECT COUNT(distinct autor_idautor) FROM opera;

Tema 4. DML (I). Página 6 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

SELECT COUNT(*) FROM opera;

MIN, MAX. Retornas los valores máximos y mínimos.

SELECT MAX(fecha_estreno) FROM opera;

SUM. Retorna la suma de la expresión.

SELECT SUM(espectadores) FROM representa WHERE


opera_idopera=1;

Subconsultas

Corresponden a un comando SELECT dentro de otro comando.

Ejemplo:

SELECT * FROM t1
WHERE column1 = (SELECT column1 FROM t2);

● Una subconsulta puede retornar un valor único, un registro, una


columna o una tabla (uno o más registros de una o más columnas). En su
forma más sencilla, una subconsulta es una subconsulta escalar que
retorna un único valor.

SELECT nombre FROM autor WHERE idautor = (SELECT


autor_idautor FROM opera WHERE nombre = 'Aida');

● La palabra clave ANY, que debe seguir a un operador de comparación,


significa “return TRUE si lacomparación es TRUE para cualquiera de los
valores en la columna que retorna la subconsulta.”

SELECT nombre FROM opera WHERE autor_idautor = ANY (SELECT


idautor FROM autor WHERE nombre LIKE '%Beethoven%' OR
nombre LIKE '%Verdi%');

● La palabra IN es un alias para = ANY.

SELECT nombre FROM opera WHERE autor_idautor NOT IN


(SELECT idautor FROM autor WHERE nombre LIKE '%Verdi%');

Tema 4. DML (I). Página 7 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

● La palabra ALL, que debe seguir a un operador de comparación, significa


“return TRUE si la comparación es TRUE para todos los valores en la
columna que retorna la subconsulta.”

Ejemplos de Funciones

A continuación se presentan algunos ejemplos de uso de diferentes funciones


MySQL:

- Con operadores de comparación

SELECT * FROM opera WHERE autor_idautor IS NULL;

SELECT nombre, fecha_nacimiento FROM autor WHERE


fecha_nacimiento BETWEEN '1800-01-01' AND '1900-12-31';

- De control de flujo

SELECT nombre, CASE idioma WHEN 'I' THEN 'Italiano' WHEN


'A' THEN 'Alemán' WHEN 'F' THEN 'Francés' ELSE
'Desconocido' END AS 'Idioma' FROM opera;

SELECT nombre, if(idioma='I','',idioma) as 'Idioma' from


opera;

- De cadenas

SELECT CONCAT('My', 'S', 'QL');

SELECT UPPER(nombre) FROM opera;

SELECT LTRIM(' Quítame


los espacios del principio');

SELECT nombre FROM opera WHERE LOCATE('Violeta',sinopsis)


!= 0;

SELECT IF(STRCMP('a','a')=0,'Son iguales','No lo son');

Tema 4. DML (I). Página 8 de 9


Gestión de Bases de Datos 1º Administración de Sistemas Informáticos en Red

- De fecha y hora

SELECT CURDATE();// CURRENT_DATE(), NOW(), …

SELECT nombre,
DATEDIFF(fecha_defuncion,fecha_nacimiento) AS 'Dias
vividos' FROM autor;

SELECT nombre, YEAR(fecha_defuncion) -


YEAR(fecha_nacimiento) - ( RIGHT(fecha_defuncion,5) >
RIGHT(fecha_nacimiento,5) ) as 'Murio con (años)' FROM
autor WHERE fecha_nacimiento IS NOT NULL AND
fecha_defuncion IS NOT NULL ORDER BY 2 DESC;

SELECT nombre, DAYNAME(fecha_nacimiento),


DATE_FORMAT(fecha_nacimiento,'%e de %M de %Y') FROM
autor;

SELECT SEC_TO_TIME(2378);

- Numéricas

SELECT PI(); SELECT SQRT(4);

SELECT 5*4 MOD 2;

SELECT nombre FROM opera ORDER BY RAND() LIMIT 1;

Tema 4. DML (I). Página 9 de 9

También podría gustarte