Sunteți pe pagina 1din 65

El lenguaje DML

El Lenguaje DML

La sentencia SELECT
Consultas bsicas
Filtros
Ordenacin
Consulta resumen
Consultas multitabla

Sentencias DML del lenguaje SQL


SELECT
Utilizada para extraer informacin de la BD.

INSERT
Inserta uno o varios en alguna tabla.
DELETE
Borra registros de una tabla
UPDATE
Modifica registros de una tabla

El lenguaje DML
Cualquier ejecucin de un comando en un
SGBD se denomina CONSULTA.
Se entiende como una orden, una peticin al
SGBD
para
realizar
una
operacin
determinada.

Sentencia SELECT
Utilizada para consultar informacin.

SELECT * from alumnos;


Sintaxis:
SELECT [DISTINCT] select_expr [FROM tabla]
Donde select_expr puede ser:
Nombre_columna [AS alias]
| *
| expresin

SELECT
SELECT * FROM alumnos;

SELECT matricula, nombre


FROM alumnos;
SELECT matricula, concat(nombre,apellido) as
Nombres
FROM alumnos;

SELECT
SELECT matricula, nombre, 1+5
FROM alumnos;

SELECT 1+5;
SELECT nombre FROM alumnos;

SELECT DISTINCT nombre


FROM alumnos;

Ejercicio 1
Crea una tabla en MySQL con la siguiente estructura:
MASCOTAS (nombre, especie, raza, edad, sexo)
Introduce 5 registros y realiza las consultas:
Muestra el nombre y la especie de todas las mascotas.
Muestra el nombre y el sexo de las mascotas
agregando un alias a los campos.
Muestra el nombre y la fecha de nacimiento
aproximada de las mascotas (emplea las funciones
date_sub y now).

Restar tiempo en MySQL


select DATE_SUB(NOW(),INTERVAL 8 YEAR);
Resta 8 aos a la fecha actual
select DATE_SUB(NOW(),INTERVAL 24 HOUR);
Resta 24 horas a la fecha actual
select DATE_SUB(NOW(),INTERVAL '7-2'
YEAR_MONTH);
Resta 7 aos dos meses a la fecha actual

Sumar tiempo en MySQL


select DATE_ADD(NOW(),INTERVAL 20 DAY);
Agrega 20 das a la fecha actual

select DATE_ADD(NOW(),INTERVAL 30 MINUTE);


Agrega 30 minutos a la fecha actual
select DATE_ADD(NOW(),INTERVAL 50 YEAR);
Agrega 50 aos a la fecha actual
select DATE_ADD(NOW(),INTERVAL '10-5' YEAR_MONTH);
Agrega 10 aos 5 meses a la fecha actual

Filtros
Los filtros son condiciones que el SGBD interpreta
para seleccionar registros y mostrarlos como
resultado de la consulta.
Where.

Sintaxis:
SELECT [DISTINCT] select_expr
[FROM tabla] [WHERE filtro];

Expresiones
Los filtros
expresiones.

se

construyen

mediante

Una expresin es una combinacin de


operadores, operandos y funciones que
producen un resultado.

Expresiones
Las expresiones pueden estar compuestas por:
Operandos

Constantes, variables, otras


expresiones.

Operadores aritmticos

+-*/%

Operadores relacionales

> < <> >= <= =

Operadores lgicos

AND, OR, NOT

Parntesis

Se emplea para dar prioridad a cierta


parte de una expresin

Funciones

Cada SGBD incorpora su propio


repertorio de funciones

Ejemplos de filtros
SELECT nombre, apellidop, apellidom
FROM alumnos
WHERE apellidop=Loredo;

SELECT nombre
FROM alumnos
WHERE carrera=ITI OR carrera=ITEM;

Filtros con operador de


Pertenencia a conjuntos
Operador de pertenencia a conjuntos

IN
Sintaxis:
Nombre_campo IN (valor1, valor2, valor3)

Ejemplo:
SELECT nombre, ap,am
FROM alumnos
WHERE carrera IN (ITI,ITEM);

Filtros con operador de rango


Este operador de rango permite seleccionar
los registros que se encuentran incluidos
dentro de un determinado rango: BETWEEN.
Sintaxis:

Nombre_campo BETWEEN valor1 AND valor2

Ejemplo de BETWEEN
SELECT nombre, ap, am
FROM alumnos
WHERE edad>=17 AND edad<=20;

Empleando BETWEEN:
SELECT nombre, ap, am
FROM alumnos
WHERE edad BETWEEN 17 AND 20;

Ejercicio 2
A la tabla MASCOTAS agrega el campo peso, el
cual almacenar el peso de cada mascota en
libras.
Saca el peso en kilogramos de cada una de las
mascotas, que pesen entre 15 y 30 kilos. Una
libra equivale a 0.4535 kilogramos.

Filtros con test de valor nulo.


Es posible verificar si un campo es o no nulo, mediante los
operadores:

IS
IS NOT
Ejemplo:
SELECT nombre, ap, am, email
FROM alumnos
WHERE email IS null;
SELECT nombre, ap, am, email
FROM alumnos
WHERE email IS NOT null;

Filtros con test de patrn


Estos filtros seleccionan los registros que
cumplan con una serie de caractersticas.
Buscan una cadena de caracteres, o un caracter.

Se emplean los comodines:


%

busca coincidencias de cualquier


nmero de caracteres.
busca coincidencias de un carcter.

Filtros con test de patrn


Matrcula

Nombre

Apellido p

Apellido m

100001

Diana

Prez

Gmez

100023

Ana

Arriaga

Gonzlez

110047

Juan

Prez

Domnguez

120054

Laura

Snchez

Arteaga

De la tabla anterior, seleccionar los alumnos cuyo


nombre contenga ana
SELECT *
FROM alumnos
where nombre like %ana%;

Filtros con test de patrn


Matrcula

Nombre

Apellido p

Apellido m

100001

Diana

Prez

Gmez

100023

Roberto

Arriaga

Gonzlez

110047

Juan

Prez

Domnguez

120054

Rodrigo

Snchez

Arteaga

De la tabla anterior, seleccionar los alumnos cuyo


nombre contenga o como segunda letra.
SELECT *
FROM alumnos
where nombre like _o%

Filtros con test de patrn


Matrcula

Nombre

Apellido p

Apellido m

100001

Francisco

Prez

Gmez

100023

Ana

Arriaga

Gonzlez

110047

Juan

Prez

Domnguez

120054

Laura

Snchez

Arteaga

De la tabla anterior, seleccionar los alumnos


cuyo nombre contenga f como primer letra.
SELECT *
FROM alumnos
where nombre like f%

Filtros por lmite


de nmero de registros
Permite limitar el nmero de registros devuelto por
una consulta.

Sintaxis:
LIMIT [desplazamiento] nfilas
Donde:
desplazamiento especifica a partir de qu registro se
empieza a contar
nfilas
es el nmero de registros a devolver

Filtros por lmite


de nmero de registros
Ejemplo 1:
Mostrar los primeros 3 registros de la tabla alumnos

SELECT *
FROM alumnos LIMIT 3;
Matrcula

Nombre

Apellido p

Apellido m

100001

Diana

Prez

Gmez

100023

Ana

Arriaga

Gonzlez

110047

Juan

Prez

Domnguez

120054

Laura

Snchez

Arteaga

Filtros por lmite


de nmero de registros
Ejemplo 2:
Mostrar 3 registros a partir del segundo

SELECT *
FROM alumnos LIMIT 2,3;
Matrcula

Nombre

Apellido p

Apellido m

100001

Diana

Prez

Gmez

100023

Ana

Arriaga

Gonzlez

110047

Juan

Prez

Domnguez

120054

Laura

Snchez

Arteaga

130014

Antonio

Ontiveros

Lrraga

Ordenacin
Clusula ORDER BY
Permite ordenar el conjunto de resultados en
forma ascendente o en forma descendente.
Permite ordenar por una o varias columnas.

Sintaxis:
ORDER BY {nombre_columna | expr | posicin} [ASC | DESC]

Donde:
ASC
orden ascendente (default)
DESC orden descendente

Clusula Order by
Ejemplo 1:

Mostrar a todos los alumnos ordenados


ascendentemente por apellido paterno.
SELECT *
FROM alumnos
ORDER BY apellidop ASC;

Clusula Order by
Ejemplo 2:

Mostrar a todos los alumnos ordenados


descendentemente por apellido paterno.
SELECT *
FROM alumnos
ORDER BY apellidop DESC;

Clusula Order by
Ejemplo 3:
Mostrar a todos los alumnos ordenados
ascendentemente por apellido paterno y enseguida
por apellido materno descendentemente.

SELECT *
FROM alumnos
WHERE carrera=ITEM
ORDER BY apellidop ASC, apellidom DESC;

Consulta resumen
Las consultas resumen se utilizan para extraer
informacin calculada de varios conjuntos de
registros.
Las funciones convierten un conjunto de
registros en una informacin simple cuyo
resultado es un clculo.

Funciones de MySQL
Funcin

Descripcin

SUM(expresin)

Suma los valores indicados en el


argumento

AVG(expresin)

Calcula el promedio de los valores


indicados en el argumento

MIN(expresin)

Calcula el mnimo de los valores


indicados en el argumento

MAX(expresin)

Calcula el mximo de los valores


indicados en el argumento

COUNT(nbColumna)

Cuenta el nmero de valores de


una columna, excepto los valores
nulos

COUNT(*)

Cuenta el nmero de valores,


incluso los nulos

Funciones de MySQL
Ejemplos:
Mostrar el promedio mas altos de los alumnos
SELECT max(promedio)
FROM alumnos;
Mostrar el promedio mas bajo de los alumnos
SELECT min(promedio)
FROM alumnos;

Funciones de MySQL
Ejemplos:
Mostrar la cantidad de alumnos que estudian la
carrera de ITI
SELECT count(*)
FROM alumnos
WHERE carrera=ITI;

Agrupacin de registros
Se refiere a un conjunto de registros que
tienen una o varias columnas con el mismo
valor.
Matrcula Nombre

Apellido p

Apellido m

Carrera

100001

Francisco

Prez

Gmez

ITI

100023

Ana

Arriaga

Gonzlez

ITI

110047

Juan

Prez

Domnguez

ITEM

120054

Laura

Snchez

Arteaga

ITEM

Sentencia GROUP BY
Sintaxis:

SELECT [DISTINCT] select_expr


FROM TABLA
WHERE filtro
GROUP BY expr
ORDER BY columna

Agrupar registros
matrcula nombre

apellidop

apellidom

carrera

100001

Francisco

Prez

Gmez

ITI

100023

Ana

Arriaga

Gonzlez

ITI

110047

Juan

Prez

Domnguez

ITEM

120054

Laura

Snchez

Arteaga

ITEM

SELECT carrera, count(*)


FROM alumnos
GROUP BY carrera;

Filtros de grupos
Los filtros de grupos se realizan mediante el uso de la
clusula HAVING.
La clusula HAVING se utilizan para filtrar resultados
calculados mediante agrupaciones.

SELECT [DISTINCT] select_expr


[FROM TABLA]
[WHERE filtro]
[GROUP BY expr]
[HAVING filtro]
[ORDER BY columna]

Filtros de grupos
Ejemplo:

SELECT count (carrera)


FROM alumnos
GROUP BY carrera
HAVING matricula>110000

Consultas multitabla
Una consulta multitabla es aquella en la que se puede
consultar informacin de ms de una tabla.

Se usan los campos relacionados de las tablas para


unirlas.
Ejemplo:

SELECT *
FROM alumnos, grupos
WHERE alumnos.matricula=grupos.matricula

La sentencia INSERT
Esta sentencia permite insertar un registro a una tabla.

Sintaxis:
INSERT [INTO] nombre_tabla [(columna,)]
VALUES (expresion|DEFAULT,)
Donde:
Nombre_tabla es el nombre de la tabla donde se insertarn los
registros
Columna
son las columnas donde se insertar la informacin
(opcional indicarlas)
Si no se especifican las columnas, los valores se deben escribir
conforme al orden de los campos en la definicin de la tabla.

La sentencia INSERT
Ejemplo 1:
INSERT INTO clientes(ncliente, nombre, apellidop, apellidom,email)
VALUES (1001, Juan,Rodrguez,Guel,juanrdz@hotmail.com);

Ejemplo 2:
INSERT INTO clientes
VALUES (1002,Laura,Orduo,Lara);
Ejemplo 3:
INSERT INTO clientes(ncliente, nombre, apellidop,
apellidom,email,telefono)
VALUES (1003, Alejandro,Rodrguez,Gutierrez,arg123@hotmail.com);

Sentencia INSERT Extendida


Sintaxis:
INSERT [INTO] nombre_tabla [(columna,)]
VALUES (expresion|DEFAULT,),(),
Donde:
Los puntos suspensivos indican que se puede
repetir varias veces la lista de valores.

Sentencia INSERT Extendida


Ejemplo:
INSERT INTO clientes(ncliente, nombre, apellidop, apellidom,email)
VALUES (1007, Roberto,Gutierrez,Herrera,rober15@hotmail.com),
(1008, Ximena,Venegas,Salas,xvs3@yahoo.com),
(1009, Alan,Rios,Anaya,riosalan@gmail.com);

Sentencia INSERT Y SELECT


Al combinar INSERT y SELECT es posible obtener datos
de una tabla para despus insertarlos en otra tabla.

Sintaxis:

INSERT [INTO] nombre_tabla


SELECT FROM
Ejemplo:
INSERT INTO clientes
SELECT * FROM cliente1;

Sentencia UPDATE
Esta sentencia permite modificar el contenido
de cualquier campo y registro de una tabla.
Sintaxis:

UPDATE nombre_tabla
SET nombre_columna=expresion, [nom2=exp2]
WHERE filtro;

Sentencia UPDATE
Ejemplo 1:
UPDATE alumnos SET email=rosa333@gmail.com
WHERE num=1009;
Ejemplo 2:
UPDATE cliente SET nombre=Bernardo, apellidop=Gil
WHERE ncliente=101;
Ejemplo 3:
UPDATE jugadores SET peso=peso*0.4535;

Sentencia DELETE
Este sentencia se emplea para eliminar
registros de una tabla.
Sintaxis:
DELETE FROM nombre_tabla
[WHERE filtro]

Sentencia DELETE
Ejemplo 1:
DELETE FROM clientes;

Ejemplo 2:
DELETE FROM clientes
WHERE ncliente=1002;

Herramientas grficas para la


edicin de datos

Herramientas grficas para la edicin de


datos
Existe una gran cantidad de herramientas
grficas para la edicin de datos, ya sean
incorporadas como parte del software del SGBD,
o como paquetes aadidos al SGBD.
Edicin con PHPMyAdmin
Edicin con Access

Edicin con PHPMyAdmin


Permite la insercin de datos a travs de formularios web.

1)
2)
3)
4)
5)

Seleccionar la tabla
Seleccionar la Ficha Insertar
Insertar los valores.
Pulsar el botn Continuar.
Se
genera
automticamente
correspondiente.

el

cdigo

SQL

Edicin con PHPMyAdmin

Permite la eliminacin de registros.

1)
2)
3)

Seleccionar la tabla
Seleccionar la Ficha Examinar
Utilizar el botn Borrar para eliminar el registro deseado.

4)

Confirmar si efectivamente desea eliminar el registro.

Edicin con Access

Acceso a la informacin
Al administrar la seguridad en el acceso a informacin
de una BD se emplean 2 tipos de seguridad:

Seguridad integrada con el S. O mediante usuarios de


un sistema de dominio.
Seguridad proporcionada por el SGBD:
El sw servidor proporciona los mecanismos mediante los
cuales se otorgan los derechos a cada usuario.

Las vistas
Una vista es una tabla virtual, sin contenido,
que devuelve las filas como resultado de
ejecutar una consulta SQL.
Consulta

Vista

Cada sentencia SQL se debe


compilar
Mayor tiempo de ejecucin

Ha sido almacenada y compilada

El usuario tiene acceso a toda la


informacin de las tablas

El usuario tiene acceso


controlado a algunas filas y
columnas de las tablas

Menor tiempo de ejecucin

Las vistas
Sintaxis:

CREATE [OR REPLACE] VIEW


[esquema.]nombre_vista [(lista_columnas)]
AS sentencia_select
CREATE VIEW provoca que se compile la sentencia
select y se almacene con el nombre nombre_vista

Las vistas
Ejemplo:

CREATE VIEW escuela.estudiantes AS


SELECT nombre, matricula
FROM escuela.alumnos
WHERE carrera=ITI OR carrera=ITEM;
SELECT * from escuela.estudiantes;

Las vistas
Para eliminar una vista se utiliza la sentencia
DROP VIEW.
Sintaxis:
DROP VIEW [esquema.]nombre_vista;

Los usuarios
Es posible crear cuentas de usuario que permitan
a los usuarios acceder a ciertos objetos con un
nivel determinado de privilegios.

CREATE USER
Sintaxis:
CREATE USER nombre_usuario IDENTIFIED BY
password [opciones];

Los usuarios
Ejemplo:

CREATE USER imelda IDENTIFIED BY


imelda123456789

Eliminar usuarios
Comando DROP USER

Sntaxis:
DROP USER nombre_usuario;

Renombrar usuarios
Comando RENAME USER

Ejemplo:
RENAME USER imelda@localhost to
deyanira@localhost;

Cambiar el password de un usuario


Comando SET PASSWORD

Ejemplo:
SET PASSWORD for imelda@localhost =
PASSWORD (nuevo_password);

Los privilegios
Sentencia GRANT
Mediante este comando, un usuario puede
obtener privilegios para manipular objetos de
una base de datos.

Sentencia REVOKE
Mediante este comando, se pueden denegar
permisos a los usuarios.

S-ar putea să vă placă și