Está en la página 1de 86

Lenguaje de

Manipulación
de Datos DML
Intructor: Emilio Tobias
INTECAP
Lenguaje
SQL
 SQL es un acrónimo en inglés para Structured Query
Language. Un Lenguaje de Consulta Estructurado. Un
tipo de lenguaje de programación que te permite
manipular y descargar datos de una base de datos.
¿Qué es SQL? Tiene capacidad de hacer cálculos avanzados y
álgebra. Es utilizado en la mayoría de empresas que
almacenan datos en una base de datos. Ha sido y sigue
siendo el lenguaje de programación más usado para
bases de datos relacionales.
 SQL es un lenguaje de acceso a bases de datos que
explota la flexibilidad y potencia de los sistemas
relacionales y permite así gran variedad de
operaciones.

Características  Es un lenguaje declarativo de "alto nivel" o "de no


procedimiento" que, gracias a su fuerte base teórica y
Generales su orientación al manejo de conjuntos de registros —y
no a registros individuales— permite una alta
productividad en codificación y la orientación a
objetos. De esta forma, una sola sentencia puede
equivaler a uno o más programas que se utilizarían en
un lenguaje de bajo nivel orientado a registros.
Características Generales
 SQL también tiene las siguientes características:
• Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la definición de
esquemas de relación, borrado de relaciones y modificaciones de los esquemas de relación.
• Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes de consultas
basado tanto en álgebra relacional como en cálculo relacional de tuplas.
• Integridad: El LDD de SQL incluye comandos para especificar las restricciones de integridad que
deben cumplir los datos almacenados en la base de datos.
• Definición de vistas: El LDD incluye comandos para definir las vistas.
• Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de una
transacción.
• SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar instrucciones de SQL
en lenguajes de programación como: C++, C, Java, PHP, COBOL, Pascal y Fortran.
• Autorización: El LDD incluye comandos para especificar los derechos de acceso a las relaciones
y a las vistas.
¿Quién debería aprender SQL y con qué propósito?
 El lenguaje de consulta estructurado y todo lo relacionado con la programación SQL son, a día de hoy, aspectos clave para las
empresas. Por ello, en cualquier organización se pueden necesitar perfiles expertos como los siguientes:
• Gerentes de producto: este tipo de profesionales siempre tienen que conocer toda la información accesible acerca del producto
y su salud. Gracias a este lenguaje, pueden controlar lo que está sucediendo con él, tanto dentro, como fuera de la empresa.
• Analistas de datos: en este caso, SQL es una necesidad para poder extraer todo el valor que encierra la información.
• Científicos de datos: son los mayores expertos en datos que ha dado la industria y, en su currículum suele constatarse que
también son especialistas en programación SQL.
• Ingenieros de datos: lo mismo que los científicos de datos y analistas de datos, para este tipo de profesionales es una
necesidad tener nociones de programación SQL. No hay que olvidar que son ellos quienes diseñan las bases de datos y las
mantienen en funcionamiento.
• Desarrolladores back - end: esta función es un poco similar a los ingenieros de datos en lo que respecta a la administración de
bases de datos. Es difícil encontrar una aplicación back- end sin una base de datos y ahí es donde entra en juego
la programación SQL.
• Desarrolladores de aplicaciones móviles: los que se ocupan de aplicaciones móviles, especialmente para Android, están
familiarizados con SQLite, una base de datos integrada que se utiliza en proyectos en los que se necesita almacenar los datos en
un dispositivo, no en un servidor. Por supuesto, ese dispositivo está alimentado por SQL.
• Especialistas en marketing: su trabajo está impulsado por los datos y, aunque en este caso no hace falta ser un experto
en programación SQL, tener conocimientos de este lenguaje facilita el autoservicio de información, que conducirá a un mejor
análisis del negocio.
 SQL se utiliza en la industria de la salud, el retail, la
educación, la agricultura, las telecomunicaciones y muchas
áreas mas. Incluso tiene aplicaciones en la industria de la
defensa. Por eso, hoy día, sectores muy diferentes buscan
profesionales con conocimientos en programación SQL,
por ser considerados un activo para la organización en lo que
respecta a las consultas.
Lenguaje de Manipulación de Datos.
DML
DML (Data Manipulation Lenguage)

 Lenguaje de Manipulación de Datos (Data Manipulation


Language, DML) es un lenguaje proporcionado por los sistemas
gestores de bases de datos que permite a los usuarios de la
misma llevar a cabo las tareas de consulta o modificación de los
datos contenidos en las Bases de Datos del Sistema Gestor de
Bases de Datos.
 La estructura INSERT es una declaración que se utiliza para
insertar nuevos registros en una tabla.
 La estructura básica para la sentencia INSERT utilizando el
INSERT estándar de SQL es la siguiente:
 La estructura SELECT es una declaración que se utiliza para
seleccionar datos de una base de datos.
 La estructura básica para la sentencia SELECT utilizando el
estándar de SQL es la siguiente:

SELECT
 La declaracion SELECT DISTINCT es una declaración que se
utiliza para devolver solo valores distintos (diferentes).
 La estructura básica para la sentencia SELECT DISTINCT
utilizando el estándar de SQL es la siguiente:
SELECT
DISTINCT
Operadores
Logicos
 La clausula AND es un operador que muestra un registro si
todas las condiciones separadas por AND son verdaderas.
 El operador AND se utiliza para filtrar registros en función de
mas de una condición.
Operador AND
 La clausula OR es un operador que muestra un registro si
alguna de las condiciones separadas por OR es verdadera.
 El operador OR se utiliza para filtrar registros en función de
mas de una condición.

Operador OR
 La clausula NOT es un operador que muestra un registro si
la(s) condición(es) NO es verdadera.
 El operador NOT se utiliza para filtrar registros en función de
mas de una condición.

Operador NOT
Operadores
Aritemticos
Operadores Aritméticos

 Los operadores aritméticos permiten realizar cálculos con valores numéricos.


 Son: multiplicación (*), división(/) y modulo(%)(el resto de dividir números enteros), suma(+) y
resta (-).

 Es posible obtener salidas en las cuales una columna sea el resultado de un calculo y no un campo
de una tabla.

 MySQL tiene algunas funciones para trabajar con números. Aquí presentamos algunos ejemplos:
Operador de
Adición o
Suma
Operador de
sustracción o
Resta
 Este operador, que también usa el símbolo -, se aplica a un
único operando, y como resultado se obtiene un valor de signo
Operador contrario.

Unitario menos
Operador de
Producto o
Multiplicación
Operador de
Cociente o
División
 Existe otro operador para realizar divisiones, pero que sólo

Operador de calcula la parte entera del cociente. El operador usado es DIV.

División Entera
Operadores
Relacionales
 Los operadores relacionales vinculan un campo con un valor
para que MySQL compare cada registro (el campo
especificado) con el valor dado.
 Los operadores relacionales son los siguientes:

Operadores  = igual

Relacionales  <>
 >
distinto
mayor
 < menor
 >= mayor o igual
 <= menor o igual
 Existen otros que simplifican algunas consultas:
Otros
Operadores  IN
Relacionales  BETWEEN
 El operador IN permite especificar varios valores en una
clausula WHERE.
 El operador IN es una abreviatura de múltiples condiciones
OR.

IN
 El operador BETWEEN selecciona valores dentro de un rango
determinado. Los valores pueden ser números, texto o fechas.
 El operador BETWEEN es inclusivo: se incluyen los valores
inicial y final.

BETWEEN
 La clausula WHERE se utiliza para filtrar registros.
 Se utiliza para extraer solo aquellos registros que cumplen una
condición especifica.

WHERE
 El ORDER BY es una palabra clave que se utiliza para ordenar
el conjunto de resultados en orden ascendente o descendente.
 El ORDER BY ordena los registros en orden ascendente de
forma predeterminada. Para ordenar los registros en orden
descendente, use la palabra clave DESC.
ORDER BY
 El GROUP BY es una declaración que agrupa las filas que
tienen los mismos valores en filas de resumen, como "encontrar
el número de clientes en cada país".
 La declaración GROUP BY se utiliza a menudo con funciones
de agregado ( COUNT(), MAX(), MIN(), SUM(), AVG())

GROUP BY agrupando el conjunto de resultado de una o mas columnas.


 El MIN() es una función que devuelve el valor mas pequeño de
la columna seleccionada.

MIN()
 El MAX() es una función que devuelve el valor más grande de
la columna seleccionada.

MAX()
 El COUNT() es una función que devuelve el número de filas
que coincide con un criterio específico.

COUNT()
 El AVG() es una función que devuelve el valor promedio de
una columna numérica.

AVG()
 El SUM() es una función que devuelve la suma total de una
columna numérica.

SUM()
 La clausula HAVING se agregó a SQL porque la clausula
WHERE no se puede usar con funciones agregadas.

HAVING
 El operador LIKE se usa en una clausula WHERE para buscar
un patrón específico en una columna.
 Hay dos comodines que se utilizan a menudo junto con el
operador LIKE:
 El signo de porcentaje (%) representa cero, uno o varios
LIKE caracteres
 El signo de subrayado (_) representa un solo carácter.

 El signo de porcentaje y el subrayado también se pueden usar


en combinaciones.
LIKE
 La clausula WHERE se puede combinar con el operador NOT.
 El operador NOT muestra un registro si la (s) condición (es)
NO es VERDADERA.

NOT
 La declaración UPDATE se utiliza para modificar los registros
existentes en una tabla.

 Nota: ¡ Tenga cuidado al actualizar registros en una tabla!. La


clausula WHERE especifica que registros deben actualizarse.

UPDATE Si omite la clausula WHERE, se actualizaran todos los registros


de la tabla.
 La declaración DELETE e utiliza para eliminar registros
existentes en una tabla.

 Nota: ¡ Tenga cuidado al eliminar registros en una tabla!. La


clausula WHERE especifica que registros deben eliminarse. Si
omite la clausula WHERE, se eliminaran todos los registros de

DELETE la tabla.
 Un alias en SQL es una manera de renombrar una columna o
tabla, cuando estas tienen el mismo nombre y no queremos que
haya conflictos entre ellas, mediante un alias le damos un
nombre diferente para trabajar sin problemas. Para utilizar un
Alias alias en una consulta de SQL, debemos agregar el comando AS
para indicar a nuestra base de datos que estamos renombrando
una columna o tabla, veamos a continuación su sintaxis para
una columna y una tabla.
Alias
 Los alias de tabla ayudan a reducir el código SQL, con lo que
se consume menos memoria.
 Los alias de tabla pueden contener hasta 30 caracteres, pero son
mejores los cortos que los largos.
 Si se utiliza un alias de tabla para un nombre de tabla concreto
Alias en la cláusulaFROM, se debe sustituir el nombre de tabla por
alias de tabla en toda la sentenciaSELECT.
 Los alias de tabla deben ser significativos.
 Los alias de tabla son válidos únicamente para la
sentenciaSELECTactual.
 EL operador de concatenación "||" une las cadenas de texto de
un operando hacia otro. Las cadenas pueden ser del tipo
CHAR, VARCHAR2, CLOB.

Operadores de
concatenacion
 La función CONCAT en Oracle te permite concatenar cadenas
en una sola, de esta forma tendrás una única columna con la
concatenación de las cadenas. La función CONCAT acepta dos

Función Concat argumentos cuyos tipos de datos pueden ser cualquiera de los
tipos de datos CHAR, VARCHAR2, NCHAR, NVARCHAR2,
CLOB o NCLOB. Esta función esta englobada en las
denominadas funciones de cadena.
Función Concat
Uniones JOIN
 La instrucción de Join, como su nombre indica, se usa para
enlazar los datos de dos tablas relacionadas a través de algún
campo en común (típicamente una “foreign key” o clave
Definición foránea) y así dar como resultado filas que mezclan datos
provenientes de las dos (o más) tablas sobre las que hemos
hecho el Join
 En la versión SQL de 1999 se ideó una nueva sintaxis para
consultar varias tablas. La razón fue separar las condiciones de
asociación respecto de las condiciones de selección de
Sintaxis SQL registros, lo cual otorga una mayor claridad a las instrucciones

1999 SQL.

 Oracle Database es totalmente compatible con esta normativa.


Sintaxis SQL 1999
La sintaxis completa de las consultas en formato SQL 99 es:
 Puede unir tablas automáticamente basándose en columnas de
las dos tablas que tengan tipos de datos y nombres
correspondientes. Hágalo mediante las palabras clave
NATURAL JOIN.

Natural Join  Nota: la unión sólo se puede realizar en las columnas que
tengan los nombres y los tipos de datos iguales en ambas
tablas. Si las columnas tienen el mismo nombre pero diferentes
tipos de datos, la sintaxis de NATURAL JOIN producirá un
error.
 La cláusula NATURAL JOIN se basa en todas las columnas de
las dos tablas que tienen el mismo nombre.
 Selecciona filas de las dos tablas que tienen valores iguales en
todas las columnas correspondientes.
 Si las columnas que tienen los mismos nombres tienen tipos de

Natural Join datos diferentes, se devuelve un error.


 Ejemplos:
 Para entender mejor la idea observemos este ejemplo:

Natural Join

 En ese caso podemos usar un NATURAL JOIN sin problemas.


 Sin embargo observemos este otro diagrama:

Natural Join
 La instrucción devuelve un error por cualificar la columna
nombre. La razón es que, en este caso, no es solo el cif la
columna común sino también el nombre, el teléfono y la
dirección.
 Se realiza un producto cruzado entre las tablas indicadas. Los
Cross Join productos cruzados se utilizan para consultas más avanzadas
 Permite asociar tablas indicando las columnas que las
relacionan, si estas tienen el mismo nombre en ambas tablas., A
diferencia de NATURAL JOIN no tienen porque ser las únicas

Join Using con el mismo nombre.


 Las columnas a las que se hace referencia en la cláusula
USING no deben tener cualificador (nombre de tabla o alias)
en ninguna parte de la sentencia SQL.
 Si hay varias columnas que tienen los mismos nombres pero los
tipos de datos no se corresponden, la cláusula NATURAL JOIN
se puede modificar mediante la cláusula USING para
especificar las columnas que se deben utilizar para una unión
igualitaria.
 Utilice la cláusula USING para asignar sólo una columna
Join Using cuando corresponde a más de una columna.
 No utilice un alias o un nombre de tabla en las columnas a las
que se hace referencia.
 Las cláusulas NATURAL JOIN y USING se excluyen
mutuamente.
 Ejemplos:

Join Using
 Utilice la cláusula ON para especificar una condición de unión.
Esto le permite especificar condiciones de unión aparte de
cualquier condición de búsqueda o de filtro en la cláusula
WHERE.
 La condición de unión para la unión natural es básicamente una

Join On unión igualitaria de todas las columnas con el mismo nombre.


 Utilice la cláusula ON para especificar condiciones arbitrarias o
para especificar las columnas que se unirán.
 La condición de unión se separa de otras condiciones de
búsqueda.
 La cláusula ON facilita la comprensión del código.
 Ejemplo:

 Aquí combinamos JOIN ON con una condición adicional en la


Join On cláusula WHERE. Mostramos informaciones de los
departamentos que se encuentran en algunas ciudades de
CANADA, GERMANY y UNITED KINGDOM, y de paso
usamos la función LOWER, vista en publicaciones anteriores
 Este ejemplo muestra como usar la cláusula ON para unir
columnas con nombres diferentes dentro de la misma tabla.
Esta técnica es conocida como auto-union. La tabla employees
se enlaza consigo misma mediante los campos employee_id y
manager_id para así mostrar los nombre de supervisor de cada
empleado.
Join On
 Este ejemplo muestra como mostrar campos de 4 tablas
distintas usando la cláusula JOIN ON; Si es necesario puede
agregar restricciones adicionales, para ello usamos la cláusula
WHERE

Join On
 Devuelve sólo aquellas filas donde haya un “match”, es decir,
las filas donde el valor del campo de la tabla A que se utiliza
para hacer el Join coincida con el valor del campo
correspondiente en la tabla B.

Uniones
Internas (Inner
Join)
Uniones
Internas (Inner
Join)
Uniones  Esto ocurre porque la cláusula JOIN utiliza por defecto el valor
INNER, es decir usan solo los valores internos a la relación. Es
Internas (Inner decir, como ya se ha dicho, solo aparecen las filas relacionadas

Join) en ambas tablas.


 Si una fila no satisface una condición de unión, no aparecerá en
el resultado de la consulta.
 Sin embargo, es posible forzar que aparezcan los valores que
están fuera de la relación (externos, OUTER).
Uniones  Su sintaxis es:
Externas (Outer
Join)
 LEFT OUTER JOIN se puede abreviar como LEFT JOIN
mantiene todas las filas de la tabla izquierda (la tabla1). Las

Left Outer Join filas de la tabla derecha se mostrarán si hay una coincidencia
con las de la izquierda. Si existen valores en la tabla izquierda
pero no en la tabla derecha, ésta mostrará null.
 Representación de LEFT JOIN o LEFT OUTER JOIN
Left Outer Join
 Es igual que LEFT JOIN pero al revés. Ahora se mantienen

Right Outer
todas las filas de la tabla derecha (tabla2). Las filas de la tabla
izquierda se mostrarán si hay una coincidencia con las de la
Join derecha. Si existen valores en la tabla derecha pero no en la
tabla izquierda, ésta se mostrará null.
Right Outer  Representación de RIGHT JOIN o RIGHT OUTER JOIN

Join
 OUTER JOIN o FULL OUTER JOIN devuelve todas las filas
de la tabla izquierda (tabla1) y de la tabla derecha (tabla2).

Full Outer Join Combina el resultado de los joins LEFT y RIGHT. Aparecerá
null en cada una de las tablas alternativamente cuando no haya
una coincidencia.
 Representación de OUTER JOIN o FULL OUTER JOIN
Full Outer Join
 Una subconsulta (subquery) es una sentencia "select" anidada
en otra sentencia "select", "insert", "update" o "delete" (o en
otra subconsulta).
 Las subconsultas se emplean cuando una consulta es muy
compleja, entonces se la divide en varios pasos lógicos y se
obtiene el resultado con una única instrucción y cuando la
Subconsultas consulta depende de los resultados de otra consulta.
 Generalmente, una subconsulta se puede reemplazar por
combinaciones y estas últimas son más eficientes.
 Las subconsultas generalmente se incluyen entre paréntesis.
 Puede haber subconsultas dentro de subconsultas.
 Generalmente las subconsultas se colocan en la cláusula "where".
 Una subconsulta puede retornar:
 un solo valor,
 una lista de valores de una sola columna,
 un conjunto de registros de varios campos.

 Podemos averiguar si un valor de la consulta externa pertenece o no


al conjunto devuelto por una subconsulta ("in", "not in"), si es
Subconsultas mayor, menor o igual a todos ("all") o a algunos valores ("some",
"any") del conjunto devuelto.
 Se pueden emplear subconsultas:
 en lugar de una expresión, siempre que devuelvan un solo valor o una
lista de valores.
 que retornen un conjunto de registros de varios campos en lugar de
una tabla o para obtener el mismo resultado que una combinación
(join).
 Hay varios tipos básicos de subconsultas:

 las que retornan un solo valor escalar que se utiliza con un


Subconsultas operador de comparación o en lugar de una expresión.
 las que retornan una lista de valores, se combinan con "in", o los
operadores "any", "some" y "all".
 los que testean la existencia con "exists".
 Una vista es un objeto. Una vista es una alternativa para
mostrar datos de varias tablas; es como una tabla virtual que
almacena una consulta. Los datos accesibles a través de la vista
no están almacenados en la base de datos, en la base de datos se
guarda la definición de la vista y no el resultado de ella.

Vistas
 Entonces, una vista almacena una consulta como un objeto para
utilizarse posteriormente. Las tablas consultadas en una vista se
llaman tablas base. En general, se puede dar un nombre a
cualquier consulta y almacenarla como una vista.
 Las vistas permiten:
 simplificar la administración de los permisos de usuario: se
pueden dar al usuario permisos para que solamente pueda acceder
a los datos a través de vistas, en lugar de concederle permisos para
acceder a ciertos campos, así se protegen las tablas base de
cambios en su estructura.
 mejorar el rendimiento: se puede evitar tipear instrucciones

Vistas repetidamente almacenando en una vista el resultado de una


consulta compleja que incluya información de varias tablas.

 Podemos crear vistas con: un subconjunto de registros y


campos de una tabla; una unión de varias tablas; una
combinación de varias tablas; un subconjunto de otra vista,
combinación de vistas y tablas.
 Una vista se define usando un "create view".
 La sintaxis básica para crear una vista es la siguiente:

 create view NOMBREVISTA as SUBCONSULTA;


Vistas
 El contenido de una vista se muestra con un "select":

 select *from NOMBREVISTA;


 Las vistas son objetos, así que para obtener información de
ellos pueden consultarse los siguientes catálogos.
 "user_catalog" nos muestra todos los objetos del usuario actual,
incluidas las vistas. En la columna "table_type" aparece "view"
si es una vista. Ejemplo:
Vistas  select *from user_catalog where table_type='VIEW';
 "user_objects" nos muestra información sobre todos los objetos
del usuario actual. En la columna "OBJECT_TYPE" muestra
"view" si es una vista, aparece la fecha de creación y demás
información que no analizaremos por el momento.
 Para ver todos los objetos del usuario actual que son vistas
tipeamos:
 select *from user_objects where object_type='VIEW';
 "user_views" nos muestra información referente a todas las

Vistas vistas del usuario actual, el nombre de la vista, la longitud del


texto, el texto que la define, etc.
 Con la siguiente sentencia obtenemos información sobre todas
las vistas cuyo nombre comience con la cadena "VISTA":
 select *from user_views where view_name like 'VISTA%';
 Para modificar una vista puede eliminarla y volver a crearla o
emplear "create or replace".

Modificación  Sintaxis:

de Vistas  create or replace view NOMBREVISTA as SUBCONSULTA;


 Con "create or replace view" se modifica la definición de una
vista existente o se crea si no existe.
 Para quitar una vista se emplea "drop view":
 drop view NOMBREVISTA;
 Eliminamos la vista denominada "vista_empleados":
Eliminar Vistas  drop view vista_empleados;
 Si se elimina una tabla a la que hace referencia una vista, la
vista no se elimina, hay que eliminarla explícitamente.
Muchas gracias
por su atención!

También podría gustarte