Está en la página 1de 118

LENGUAJE SQL

Unidad 1
ESTRUCTURA DE DATOS
BASES DE DATOS Y USUARIOS
DE BASES DE DATOS

Con la palabra datos nos


Las bases de datos y los
referimos a los hechos Nombres, números de
sistemas de bases de datos
(datos) conocidos que se teléfono y direcciones de las
son un componente esencial
pueden grabar y que tienen personas que conocemos
de la vida cotidiana
un significado implícito
BASES DE DATOS Y USUARIOS
DE BASES DE DATOS
 Una base de datos tiene las siguientes propiedades implícitas:

Una base de datos es


Una base de datos se
Una base de datos una colección de datos
diseña, construye y
representa algún lógicamente coherente
rellena con datos para
aspecto del mundo real con algún tipo de
un propósito específico
significado
DBSM: SISTEMA GESTOR DE
BASE DE DATOS
facilita los procesos de
definición, construcción,
Es una colección de programas
manipulación y compartición
que permite a los usuarios crear
de
y mantener una base de datos
bases de datos entre varios
usuarios y aplicaciones
UN EJEMPLO
Estudiantes

UNIVERSIDAD Cursos

Calificaciones
ARQUITECTURA DE BASES DE
DATOS

Externo Conceptual Interno

es la parte del representación de los


define cómo se
modelo conceptual a datos realizada por la
almacenan los datos 
la que tienen acceso. organización
RELACIONES EN UNA BASE
DE DATOS
 Uno a Uno: Aparece cuando un registro de la tabla A sólo puede relacionarse con 1 registro
de la tabla B
 Ejemplo: Bandera – País; Presidente - País
 Uno a Varios: En este caso, un registro de la tabla A puede relacionarse con varios de la tabla
B.
 Ejemplo: Casa - Personas

 Varios a Varios: Se da si varios registros de A pueden relacionarse con varios de B y


viceversa.
 Ejemplo: Un alumno puede cursar muchas materias y una materia la cursan muchos alumnos
MODELOS DE DATOS:
JERÁRQUICO
Este árbol esta
Utiliza árboles para la
compuesto de unos El nivel más alto del
representación lógica
elementos llamados árbol se denomina raíz.
de los datos.
nodos

Cada nodo representa


Los diferentes niveles
un registro con sus
quedan unidos
campos
mediante relaciones
correspondientes
RAIZ

Nodos

Relación Relación

Nodos

Relación

Nodos
INCONVENIENTE
S
 No se admiten relaciones Varios a
Varios
 No se permiten más de una relación
entre dos segmentos
 El árbol se debe de recorrer en el
orden designado
MODELOS DE DATOS:
RELACIONAL

utiliza tablas para la


Este modelo es el
representación lógica
más utilizado
de los datos y sus
actualmente
relaciones
USUARIOS DE BASES DE
DATOS
Administradores
Diseñadores de las
de las bases de Usuarios Finales
bases de datos
datos

Es responsable del acceso


Son los responsables de
autorizado a la base de Casuales - principiantes
identificar los datos que se
datos, de la coordinación
almacenarán en la base de
y monitorización
datos
de su uso.

El DBA también es
responsable de problemas comunicarse con todos los
como las brechas de presuntos usuarios de la Sofisticados -
seguridad o de unos base de datos para conocer Independientes
tiempos de respuesta sus requisitos
pobres
USUARIOS DE BASES DE
DATOS
Usuarios casuales Principiantes Sofisticados Independientes

Se encuentran los
Su labor principal gira ingenieros, los científicos,
Acceden ocasionalmente a entorno a la consulta y los analistas mantienen bases de datos
la base de datos actualización constantes comerciales. personales
de la base de datos

Realización de
Gerentes de nivel medio cajeros bancarios Programas contables
investigaciones
SQL

 Lenguaje de Consulta Estructurado

 Lenguaje de Alto Nivel Estándar


para sistemas de base de datos
relacionales.
 Estándar publicado por: ANSI
(Instituto Americano de
Normalización) y la ISO
(Organismo Internacional de
Normalización).
TIPOS DE SENTENCIAS
Lenguaje de Lenguaje de Lenguaje de
definición de manipulación de control de datos
datos (DDL) datos (DML) (DCL)

Definición y Manipula datos Controla


declaración de almacenados en funciones de
objetos bd administración

DATABASE,
TABLE, VIEW, Nivel de filas y Atomicidad y
PROCEDURE, columnas seguridad
TRIGGER
TIPOS DE SENTENCIAS
DDL
Crea una base de
CREATE datos, tabla

Agrega, borra o
modifica columnas ALTER
en una tabla

Borra de manera
DROP sencilla, bd, tablas
TIPOS DE SENTENCIAS
DML
Inserta una fila en
INSERT
una tabla

Actualiza un
registro (fila), en UPDATE
una tabla

Elimina un registro
DELETE
(fila), en una tabla
TIPOS DE SENTENCIAS
DCL
Finaliza una transacción
COMMIT
en una base de datos

Devuelve la base de
ROLLBACK
datos a un estado previo

Concede permisos para


GRANT
una base de datos
DATOS PERSISTENTES
sólo pueden ser
Los datos persistentes
removidos de la base
son aquellos que Almacenados en una
de datos por una
permanecen en el base de datos
solicitud explícita al
tiempo
DBMS

DELETE
ATRIBUTO
 Se refiere a una columna de una tabla

TUPLA
 Corresponde a una fila de una tabla

CARDINALIDAD
 Es el número de tuplas (filas) que contiene una tabla
GRADO
 Es el número de atributos (columnas) que posee una tabla

TUPLA
 Corresponde a una fila de una tabla
Atributo

Tupla

Cardinalidad: 4 tuplas/filas
Grado: 4 atributos/columnas
DOMINIO

puede ser definido por el


No es más que un tipo de sistema, como Integer o
dato char o, uno más complejo
definido por el usuario
RESTRICCIONES
INHERENTES
El orden de las tuplas
No existen tuplas (filas)
(filas) y el de los atributos
repetidas (Primary Key)
(columnas) no es relevante.

Cada atributo (columna) de


Ningún atributo que forme
cada tupla (fila) solo puede
parte de la clave primaria
tomar un único valor sobre
de una relación puede
el dominio que está
tomar un valor nulo
definido.
REGLAS DE INTEGRIDAD
Unicidad Clave Entidad de la Integridad
Primaria clave primaria Referencial

establece que toda clave los atributos de la clave


primaria que se elija para primaria de una relación
Clave Foránea
una relación no debe tener no pueden tener valores
valores repetidos nulos

Todos los valores que


toma una clave foránea
deben ser valores que
existen en la clave
primaria que referencia.
Estudiante

Estudiante ID Nombre
123456789 Juanito Alcachofa

 no tendría sentido en la base de datos


tener un estudiante matriculado en un
curso cuando no haya información acerca
del estudiante
Matriculación - Materias

Clave Foránea Materia


123456789 Base de datos
123456789 Probabilidad
123456789 Física
Unique Check Default Identity
el valor que tomará la
Sirve para asegurarse que columna cuando no se
Nos ayuda a especificar
no se introduzcan valores especifique explícitamente Columna identidad
rango de valores
duplicados en columnas un valor para esta columna
durante una inserción

Valores incrementales,
columna de salario generalmente usado con
primary key
LENGUAJE DE DEFINICIÓN DE
DATOS (DDL)
 CREATE: Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista,
índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos
soporte.
 CREATE DATABASE “nombre_BD”;
 CREATE TABLE “nombre_tabla” (nombre_columna tipo_dato);
LENGUAJE DE DEFINICIÓN DE
DATOS (DDL)
 La sentencia SQL ALTER se utiliza para añadir, eliminar o modificar columnas de una tabla.
 ALTER TABLE nombretabla
DROP COLUMN nombrecolumna
 ALTER TABLE nombretabla
ALTER COLUMN nombrecolumna tipodatocolumna

Dada la siguiente tabla de 'personas', queremos añadir


una nueva columna, denominada 'fechadenacimiento'
LENGUAJE DE DEFINICIÓN DE
DATOS (DDL)
 DROP: Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función,
procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la
sentencia ALTER.
 DROP TABLE nombre_tabla;

 ALTER TABLE nombretabla


DROP COLUMN nombrecolumna

DROP TABLE personas


LENGUAJE DE MANIPULACIÓN DE DATOS (DML)

 SELECT: El uso común es la selección de datos desde tablas ubicadas en una base de datos.

SELECT "nombre_columna" FROM "nombre_tabla";


 INSERT: Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una
base de datos relacional.
INSERT INTO ‘nombre_tabla'' (‘columna_1'', ‘columna_2'') VALUES (‘valor_1'', ‘valor_2‘’)
 UPDATE: Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
UPDATE ‘nombre_tabla'' SET ‘columna’= ‘nuevo_valor' WHERE ‘columna’=valor
 DELETE: Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

DELETE FROM ‘nombre_tabla'' WHERE ‘columna'= ‘valor'


LENGUAJE DE CONTROL DE
DATOS (DCL)
 GRANT: Permite dar permisos a uno o varios usuarios o roles para realizar tareas determinadas.
 REVOKE: Permite eliminar permisos que previamente se han concedido con GRANT.
 COMMIT: Finaliza una transacción en una base de datos.
 ROLLBACK: Devuelve la base de datos a un estado previo
Unidad 2
INTRODUCCIÓN AL DISEÑO DE BASES DE DATOS
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Pobre Preplanificación:
 Cuanto mejor sea la planificación, mejor será la calidad del diseño.
 Una buena base de datos es el resultado de una cuidadosa previsión.
 Una mala planificación del diseño puede dar lugar a problemas estructurales que serían
costosos de resolver una vez que la base de datos se haya implementado.
 No siempre es posible anticipar todos los problemas con los que se encontrará una base de
datos, pero la planificación garantiza que puedas reducirlos solo a aquellos que son realmente
inevitables.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Falta de comprensión del propósito de los datos:
 Las bases de datos se crean para una amplia gama de propósitos. Desde pequeñas bases de
datos que almacenan los datos personales de un individuo hasta bases de datos empresariales
masivas que manejan grandes volúmenes de información.
 El diseñador debe comprender el propósito de la base de datos para diseñarla de forma optima
y que este alineada con estos objetivos.
 Las preguntas críticas que se deben hacer incluyen la naturaleza de los datos, cómo se
obtienen, con qué frecuencia se almacenan y piden, su volumen y qué aplicaciones los
utilizarán.
 Una base de datos donde los datos se ingresan manualmente al final del día hábil no
prosperará bajo el mismo modelo de diseño que una base de datos industrial sofisticada donde
los datos se capturan y almacenan automáticamente y en tiempo real.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Normalización inadecuada:
 El diseño de la base de datos no es un proceso rígidamente determinista. Dos desarrolladores
podrían seguir las mismas reglas de diseño pero aun así terminar con diseños de datos
completamente diferentes.
 Sin embargo, hay ciertos principios básicos de diseño que son vitales para garantizar que la
base de datos funcione de manera óptima. Uno de estos principios es la normalización.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Registros redundantes
 Las tablas y los campos redundantes son una pesadilla para los diseñadores y administradores
de bases de datos.
 Consumen los recursos del sistema para mantenerse seguros, actualizados y respaldados. Es
posible que los registros redundantes no parezcan demasiado cuando solo se trata de una
docena.
 Pero en las grandes bases de datos donde los campos redundantes pueden ser miles o millones,
las sobrecargas de recursos informáticos son sustanciales.
 Aumentan innecesariamente el tamaño de la base de datos, lo que reduce la eficiencia y
aumenta el riesgo de corrupción de datos.
UNA SOLA TABLA PARA TODOS
LOS VALORES DE DOMINIO
Una sola tabla para todos los valores de dominio:
 Recuerda que las bases de datos relacionales se basan en la idea de que cada objeto en la base de
datos es representativo de una sola cosa.
 Al navegar a través de la clave primaria, el nombre de la tabla, el nombre de la columna y las
relaciones, uno debe descifrar rápidamente lo que significa un conjunto de datos.
 Sin embargo, un concepto erróneo persistente sobre el diseño de la base de datos, es que mientras
más tablas existan, más confusa y compleja será la base de datos.
 Esta es a menudo la razón para condensar varias tablas en una tabla en el supuesto de que
simplificará el diseño.
 Suena como una buena idea, pero generalmente termina con una base de datos ineficiente y poco
manejable.
 El código SQL será largo, difícil de leer y poco natural. Será mezclar manzanas y naranjas.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Convenciones de nombres deficientes o inconsistentes:
 Los diseñadores y desarrolladores de bases de datos a menudo ven su papel como uno
totalmente técnico.
 El nombre puede ser a discreción del diseñador, pero es, de hecho, el primer y más importante
elemento de la documentación de la base de datos.
 Las convenciones de nomenclatura tienen la finalidad de facilitar que las personas que no
participaron en el proyecto comprendan rápidamente el contenido de las tablas y columnas.
 Sin embargo, lo más importante es la consistencia. Una vez que sigas un estilo específico para
nombrar los objetos, mantenlos en toda la base de datos.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Documentación pobre:
 La documentación debería facilitar que otra persona se haga cargo del diseño, desarrollo o
administración de la base de datos.
 Una buena documentación debe contener definiciones de columnas, tablas, relaciones y
restricciones que aclaren cómo se debe utilizar cada elemento.
 Algunos diseñadores utilizarán documentación deficiente para garantizar la seguridad en el
trabajo, es decir, nadie más que ellos puede entender completamente la base de datos.
EL PROBLEMA DEL DISEÑO
DE UNA BASE DE DATOS
Pruebas inadecuadas
 Puede seguir meticulosamente todos los pasos necesarios para diseñar una base de datos de clase
mundial.
 Sin embargo, dará un salto ciego hacia la oscuridad si no sometes la base de datos a pruebas
rigurosas.
 Desafortunadamente, la fase de prueba es la que más sufre cuando un proyecto se está retrasando.
 Sin embargo, es contraproducente porque una base de datos apresurada rápidamente se atascará por
errores e inconsistencias que fácilmente se habrían identificado y resuelto durante la fase de
pruebas.
 Una base de datos llena de errores se convertirá en un problema para los usuarios y
administradores. Caerás un pozo de reputación del que tendrás que luchar incluso cuando los
errores se solucionen.
ETAPAS DEL DISEÑO DE UNA
BASE DE DATOS
 El diseño de una base de datos es de suma importancia ya que de ello dependerá que
nuestros datos estén correctamente actualizados y la información siempre sea exacta. Si
hacemos un buen diseño de base de datos podremos obtener reportes efectivos y eficientes.
 Siempre se debe diseñar y modelar una base de datos antes de tomar la decisión de crearla.
CONCEPTOS BÁSICOS SOBRE
EL DISEÑO DE BASES DE DATOS
 En cualquier base de datos la información está almacenada en tablas las cuales a su vez están
formadas por columnas y filas. La base de datos más simple consta de una sola tabla aunque la
mayoría de las bases de datos necesitarán varias tablas.
 Las filas de una tabla también reciben el nombre de registros o tuplas y las columnas también
son llamadas campos o atributos.
DISEÑAR Y MODELAR UNA
BASE DE DATOS
 Al diseñar una base de datos determinamos las tablas y campos que darán forma a nuestra base
de datos. El hecho de tomarnos el tiempo necesario para identificar, organizar y relacionar la
información nos evitará problemas posteriores.
 Es por eso que para diseñar una base de datos es necesario conocer la problemática y todo el
contexto sobre la información que se almacenará en nuestro repositorio de datos. Debemos
determinar la finalidad de la base de datos y en base a eso reunir toda la información que será
registrada.
IDENTIFICAR LAS TABLAS
 De acuerdo a los requerimientos que tengamos para la creación de nuestra base de datos,
debemos identificar adecuadamente los elementos de información y dividirlos en entidades
(temas principales) como pueden ser las sucursales, los productos, los clientes, etc.
IDENTIFICAR LAS TABLAS
 Para cada uno de los objetos identificados crearemos una tabla. Si en una base de datos los
objetos principales son los empleados y los departamentos de la empresa entonces tendremos
una tabla para cada uno de ellos. Si en otra base de datos los objetos principales son los libros,
autores y editores entonces necesitaremos tres tablas en nuestra base de datos.
DETERMINAR LOS
CAMPOS/ATRIBUTOS
 Cada entidad representada por una tabla posee características propias que lo describen y que lo
hacen diferente de los demás objetos. Esas características de cada entidad serán nuestros
campos/ atributos de la tabla los cuales describirán adecuadamente a cada registro. Por
ejemplo, una tabla de libros impresos tendrá los campos ISBN, título, páginas, autor, etc.
DETERMINAR LAS LLAVES
PRIMARIAS
 Una llave primaria es un identificador único para cada registro (fila) de una tabla. La llave
primaria es un campo de la tabla cuyo valor será diferente para todos los registros. Por
ejemplo, para una tabla de libros, la llave primaria bien podría ser el ISBN el cual es único
para cada libro. Para una tabla de productos se tendría una clave de producto que los
identifique de manera única.
DETERMINAR LAS
RELACIONES ENTRE TABLAS
 Examina las tablas creadas y revisa si existe alguna relación entre ellas. Cuando encontramos
que existe una relación entre dos tablas debemos identificar el campo de relación. Por ejemplo,
en una base de datos de productos y categorías existirá una relación entre las dos tablas porque
una categoría puede tener varios productos asignados. Por lo tanto el campo con el código de
la categoría será el campo que establezca la relación entre ambas tablas.
IDENTIFICAR Y REMOVER
DATOS REPETIDOS
 Finalmente examina cada una de las tablas y verifica que no exista información repetida. El
tener información repetida puede causar problemas de consistencia en los datos además de
ocupar más espacio de almacenamiento.
 Por ejemplo, una tabla de empleados que contiene el código del departamento y el nombre del
departamento comenzará a repetir la información para los empleados que pertenezcan al
mismo departamento.
IDENTIFICAR Y REMOVER
DATOS REPETIDOS
 ¿Qué pasaría si el nombre del departamento cambiara de Informática a Tecnología?
 Tendríamos que ir registro por registro modificando el nombre correspondiente y podríamos
dejar alguna incongruencia en los datos. Una mejor solución es tener una tabla exclusiva de
departamentos y solamente incluir la clave del departamento en la tabla de empleados.
TRABAJO EN CLASE
Identificar tablas, determinar campos /atributos y relaciones
DISEÑO CONCEPTUAL
 Durante esta fase, plasmaremos nuestras entidades y las relaciones que existirán entre ellas.
 Cada entidad la identificaremos con un rectángulo y dentro de este colocaremos su nombre.
 A cada entidad le colocaremos sus respectivos atributos y resaltaremos el atributo principal,
aquél atributo que identificará cada registro de manera única.
 Y por último crearemos las relaciones que existen entre dichas entidades. Siendo muy
sinceros, esta fase no la hacemos a conciencia, pero lo pueden combinar con la siguiente fase
muy fácilmente. Aquí no se preocupa por el motor de bases de datos aún.
DISEÑO LÓGICO
 Aquí podemos tabular nuestro diseño conceptual.
 En esta fase, se debe pensar en cómo normalizar nuestras tablas para evitar duplicidad de
información y para ahorrar espacio de almacenamiento.
 Esto último (ahorrar espacio) ya no es tan importante como hace algunos años, incluso hoy en
día hablamos de inteligencia de negocios, minería de datos, entre otros términos que nos
exigen eliminar la normalización.
 Para este proceso, las herramientas de modelado ayudan bastante a ver las relaciones de las
tablas. En teoría, aquí tampoco se preocupa por el motor, ya que el modelo tabular es igual en
todos los motores de bases de datos relacionales.
DISEÑO FÍSICO
 En esta última fase ya debemos revisar a detalle los tipos de datos que utilizaremos, sus
dominios (qué valores va a permitir), cuales índices debemos crear para optimizar las
consultas, entre otros. Aquí ya escribimos nuestro SQL para plasmar todo nuestro diseño en el
motor de bases de datos elegido.
MODELO ENTIDAD –
RELACION (E/R)
 Un diagrama o modelo entidad-relación es una herramienta para el modelado de datos que
permite representar las entidades relevantes de un sistema de información, así como, las
interrelaciones y propiedades.
 Facilita el diseño de BD.
 Se basa en una percepción de un mundo real.
 Etapa diseño conceptual.
 Esquema conceptual.
 Objetos básicos, denominados entidades, y de relaciones entre estos objetos.
ENTIDAD
• Las entidades constituyen las tablas de la base de datos que permiten el almacenamiento de las
tuplas.
• Se representa como un rectángulo con un nombre (el nombre de la entidad)
• Modela un objeto de la realidad
• Por ejemplo, en el contexto del diseño de una base de datos para una escuela, los estudiantes,
los docentes y los cursos son ejemplos de entidades que se deben modelar.
ENTIDADES FUERTES
 Lo constituyen las tablas principales de la base de datos que contienen las tuplas principales y
requieren de entidades auxiliares para completar su descripción o información.
 Por ejemplo la entidad usuario es una entidad fuerte en relación a la tabla tipos de usuarios,
que es una entidad débil dada su condición auxiliar para clasificar a los usuarios registrados en
la biblioteca.
ENTIDADES DÉBILES
 Son entidades débiles a las tablas auxiliares de una tabla principal a la que completan o
complementan con la información de sus registros relacionados.
ATRIBUTOS
 Son las características, rasgos y propiedades de una entidad, que toman un valor particular.
 Por ejemplo de una entidad o tabla libro, se pueden determinar los atributos título, subtítulo,
autor principal, editorial.
ATRIBUTOS
RELACIÓN
• Una relación se representa como un rombo con un nombre (el nombre de la relación), que
conecta entidades.
• Modela asociaciones entre objetos.
CARDINALIDAD DE
RELACIONES
• Un estudiante puede tomar varios cursos y en un curso puede haber varios estudiantes.
• Un docente puede dictar varios cursos, pero un curso es dictado por un único docente.
RELACIÓN MÚLTIPLE
• Las relaciones pueden ser entre más de 2 entidades
• Un docente califica el desempeño de estudiantes en cursos
• ¿Qué sucede si excluimos alguna de las 3 entidades de la relación?
AUTO RELACIÓN
 Relaciones entre una entidad y sí misma
Unidad 3
LENGUAJE SQL
LENGUAJE SQL
 El lenguaje de consulta estructurado o SQL es un lenguaje declarativo de acceso a bases de
datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus
características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas
con el fin de recuperar de forma sencilla información de interés de bases de datos, así como
hacer cambios en ella.
 El 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.
COMPONENTES
 El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de
agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular
las bases de datos.
COMANDOS
Existen tres tipos de comandos SQL:
 Los DLL(Data Definition Language) que permiten crear y definir nuevas bases de datos,
campos e índices. Los DML(Data Manipulation Language) que permiten generar consultas
para ordenar, filtrar y extraer datos de la base de datos. Los DCL(Data Control
Language) que se encargan de definir las permisos sobre los datos
LENGUAJE DE DEFINICIÓN
DE DATOS (DDL)
Comando Descripción
CREATE Utilizado para crear nuevas tablas, campos e índices

DROP Empleado para eliminar tablas e índices


ALTER Utilizado para modificar las tablas agregando campos o
cambiando la definición de los campos.

CREATE TABLE MiPrimeraTabla ALTER TABLE MiPrimeraTabla


( ADD Pais VARCHAR (10)
CREATE DATABASE MiPrimeraBase ID VARCHAR(10) PRIMARY KEY,
USE MiPrimeraBase Nombre VARCHAR (20) NOT NULL, ALTER TABLE MiPrimeraTabla
Ciudad VARCHAR (20) NOT NULL DROP COLUMN Pais
)
LENGUAJE DE MANIPULACIÓN DE DATOS
DML(DATA MANIPULATION LANGUAGE)
Comando Descripción
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio
determinado
INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.
UPDATE Utilizado para modificar los valores de los campos y registros especificados
Utilizado para modificar las tablas agregando campos o cambiando la
definición de los campos.
DELETE Utilizado para eliminar registros de una tabla

SELECT * FROM Employees


SELECT Employees.LastName,Employees.FirstName,
Employees.Country FROM Employees WHERE
Employees.Country = 'USA'
OPERADORES
LÓGICOS
Operador Uso
AND Es el “y” lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo
si ambas son ciertas.

OR Es el “o” lógico. Evalúa dos condiciones y devuelve un valor de verdad si


alguna de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión.


OPERADORES DE
COMPARACIÓN
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o igual que
BETWEEN Intervalo
LIKE Comparación
In Especificar
OPERADORES
 SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50
 SELECT * FROM Empleados WHERE

(Edad > 25 AND Edad < 50) OR Sueldo = 100


 SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'
 SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia =
'Madrid' AND Estado = 'Casado’)
 SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999
 SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla’);
 SELECT LastName FROM Employees WHERE LastName LIKE 'S%'
EJERCICIOS: SELECT
 Una lista de todos los proveedores  Una lista de todos los clientes (Costumers)
(Suppliers) cuyo país (Country) sea France. que no vivan en México DF, Spain y
Canadá.
 Una lista de todos los productos (Products)
cuyo precio unitario (UnitPrice) sea mayor
que $18.
 Suponga que queremos ver aquellos
productos (Products) cuyos valores se
encuentran entre los 4 y 20 Dólares.
 Una lista de todos los empleados
(Employees) que vivan en Seattle, Tacoma
y London
INSERT
 Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una
base de datos relacional.
Forma básica:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

 Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le
será asignado el valor por omisión. 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 Categories


INSERT INTO Region
(CategoryName,Description)
(RegionID,RegionDescription)
VALUES ('Comida Salada',
VALUES (5,'Sur')
'Carnes y Embutidos')
UPDATE
 Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
# UPDATE mi_tabla SET campo1 = 'nuevo valor campo1' WHERE campo2 =
'N';

UPDATE Region SET RegionDescription = 'Oeste'


WHERE RegionID = 5

begin transaction
UPDATE Region SET RegionDescription = 'Oeste'
rollback transaction
DELETE
 Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

Forma básica:
# DELETE FROM 'tabla' WHERE 'columna1' = 'valor1'

DELETE FROM Region WHERE RegionID = 5

begin transaction

DELETE FROM Region

rollback transaction
FUNCIONES DE AGREGADO
 Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros
para devolver un único valor que se aplica a un grupo de registros.

Comando Descripción
AVG Utilizada para calcular el promedio de los valores de un campo
determinado
COUNT Utilizada para devolver el número de registros de la selección

SUM Utilizada para devolver la suma de todos los valores de un


campo determinado
MAX Utilizada para devolver el valor más alto de un campo
especificado
MIN Utilizada para devolver el valor más bajo de un campo
especificado
FUNCIONES DE COLUMNA
Tabla Products
SELECT

SUM (UnitPrice) AS Suma,


AVG (UnitPrice) AS Promedio,
MIN (UnitPrice) AS Mínimo,
MAX (UnitPrice) AS Máximo,
COUNT (*) AS '# de Filas'

FROM Products
GROUP BY
SELECT Products.ProductName, SUM (Products.UnitPrice), Suppliers.CompanyName
FROM Products,Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID
GROUP BY Suppliers.CompanyName, Products.ProductName

La consulta anterior saca a pantalla el nombre de los productos (Products.ProductName),


realiza una suma de cada uno de los precios unitarios de los productos (SUM
(Products.UnitPrice)), saca a pantalla los nombres de los proveedores
(Suppliers.CompanyName) de las tablas Products y Suppliers, filtra los datos con WHERE
(Products.SupplierID = Suppliers.SupplierID), por último se agrupa los datos por nombre de
compañía y nombre de producto (Suppliers.CompanyName, Products.ProductName)
GROUP BY
SELECT Products.ProductName, SUM (Products.UnitPrice), Suppliers.CompanyName
FROM Products,Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID
GROUP BY Suppliers.CompanyName, Products.ProductName
HAVING
SELECT Products.ProductName, SUM (Products.UnitPrice) AS
'Sumatoria',Suppliers.CompanyName
FROM Products,Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID
GROUP BY Products.ProductName,Suppliers.CompanyName
HAVING SUM (Products.UnitPrice) > 100.00
TRABAJO EN CLASE
 Usando la base de datos NORTHWIND realizar las siguientes consultas:

1. Una lista de todos los detalles de la tabla de Employees.


2. Suponga que queremos ver aquellos productos (Products) cuyos valores se encuentran entre los 4 y 20
Dólares.
3. Ordene los resultados obtenidos en el punto 2 tomando como referencia la columna UnitPrice de manera
ascendente.
4. Encontrar todos los apellidos (LastName) en la tabla Employees que comiencen con la letra “S”. Use el
carácter comodín %.
5. Una lista de los nombres y apellidos de todos los empleados.
6. Insertar un cliente (Customers) nuevo completando todos los campos de la tabla.
7. Actualizar el nombre del nuevo cliente pasando número de ID obtenido en el punto 6.
8. Eliminar el cliente insertado en el punto 6.
ORDER BY
 Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico.
 Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -
se toma este valor por defecto) o descendente (DESC).

SELECT CodigoPostal, Nombre, Telefono


FROM Clientes
ORDER BY
CodigoPostal DESC , Nombre ASC;
CLAUSULA JOIN:
¿QUÉ SON Y POR QUÉ SON IMPORTANTES?

 Nosotros podemos consultar el contenido de una tabla muy puntualmente: SELECT * FROM
myTable.
 Sin embargo, generalmente necesitamos combinar información de distintas tablas.
 Obtener datos específicos de distintas tablas, y presentar la información de una mejor manera,
resulta de ayuda para la toma de decisiones.
 Entonces, la cláusula JOIN nos permite asociar 2 o más tablas, en base a una columna que
tengan en común.
EJEMPLO: EMPLEADOS Y
DEPARTAMENTOS
 Por un lado vamos a tener una tabla Empleados (que almacenará una lista de empleados y el id
del departamento al que pertenecen):
EJEMPLO: EMPLEADOS Y
DEPARTAMENTOS
 Y por otro lado, una tabla Departamentos (con la lista de departamentos que existen en la
empresa).
CLÁUSULA INNER JOIN
 Esta cláusula busca coincidencias entre 2 tablas, en función a una columna que tienen
en común. De tal modo que sólo la intersección se mostrará en los resultados.

 Por ejemplo, si queremos listar a los empleados e indicar el nombre del departamento
al que pertenecen, podemos hacer lo siguiente:

SELECT * FROM Empleados JOIN Departamentos


ON Empleados.DepartamentoId = Departamento.Id
CLÁUSULA INNER JOIN
 Con esto, nuestro resultado será:
CLÁUSULA LEFT JOIN
 A diferencia de un INNER JOIN, donde se busca una intersección respetada por ambas
tablas, con LEFT JOIN damos prioridad a la tabla de la izquierda, y buscamos en la tabla
derecha.
 Si no existe ninguna coincidencia para alguna de las filas de la tabla de la izquierda, de igual
forma todos los resultados de la primera tabla se muestran.

SELECT Empleado.Nombre,
Departamento.Nombre
FROM Empleados LEFT JOIN Departamentos
ON Empleados.DepartamentoId = Departamento.Id
CLÁUSULA LEFT JOIN
 La tabla Empleados es la primera tabla en aparecer en la consulta (en el FROM),
por lo tanto ésta es la tabla LEFT (izquierda), y todas sus filas se mostrarán en los
resultados.
 La tabla Departamentos es la tabla de la derecha (aparece luego del LEFT JOIN).
Por lo tanto, si se encuentran coincidencias, se mostrarán los valores
correspondientes, pero sino, aparecerá NULL en los resultados.
CLÁUSULA RIGHT JOIN
 En el caso de RIGHT JOIN la situación es muy similar, pero aquí se da prioridad a la tabla de
la derecha.

SELECT Empleados.Nombre, Departamentos.Nombre


FROM Empleados RIGHT JOIN Departamentos
ON Empleados.DepartamentoId = Departamentos.Id
CLÁUSULA RIGHT
JOIN
 La tabla de la izquierda es Empleados,
mientras que Departamentos es la tabla de la
derecha.
 La tabla asociada al FROM será siempre la
tabla LEFT, y la tabla que viene después del
JOIN será la tabla RIGHT.
 Entonces el resultado mostrará todos los
departamentos al menos 1 vez.
 Y si no hay ningún empleado trabajando en un
departamento determinado, se mostrará NULL.
Pero el departamento aparecerá de igual forma.
CLÁUSULA FULL JOIN
 Mientras que LEFT JOIN muestra todas las filas de la tabla izquierda, y RIGHT
JOIN muestra todas las correspondientes a la tabla derecha, FULL OUTER JOIN
(o simplemente FULL JOIN) se encarga de mostrar todas las filas de ambas tablas,
sin importar que no existan coincidencias (usará NULL como un valor por defecto
para dichos casos).

SELECT Empleados.Nombre, Departamentos.Nombre


FROM Empleados FULL JOIN Departamentos
ON Empleados.DepartamentoId = Departamentos.Id
CLÁUSULA FULL JOIN
 Se muestra el empleado "Williams" a pesar que no está asignado a ningún departamento, y se
muestra el departamento de "Marketing" a pesar que aún nadie está trabajando allí:
FUNCIONES
INTEGRADAS SQL
 SQL Server pone a nuestra disposición multitud de funciones predefinidas que proporcionan un
amplio abanico de posibilidades. Mostramos aquí algunas de las frecuentes.

Cast y Convert
Convierten una expresión de un tipo de datos en otro de forma explícita

CONVERT ( [tipo de dato] , [expresión que se modificará] )


CAST ( [expresión que se modificará] AS [tipo de dato] )
FUNCIONES
Isnull
INTEGRADAS SQL
    Evalúa una expresion de entrada y si esta es NULL, reemplaza NULL con el valor
de reemplazo especificado. El valor de reemplazo debe ser del mismo tipo de datos
que la expresion a evaluar.
ISNULL ( expression , replacement_value )

GetDate y GetUTCDate
GetDate devuelve la fecha y hora actuales del sistema en el formato interno estándar
de SQL Server 2005 para los valores datetime.

SELECT GETDATE() -- Resultado -> 2019-11-10 14:25:41.733

GetUTCDate devuelve el valor datetime que representa la hora UTC (hora universal


coordinada u hora del meridiano de Greenwich) actual.

SELECT GETUTCDATE() -- Resultado -> 2019-11-10 19:24:17.840


FUNCIONES DE CADENA
Descripción IBM DB2 SQL Server Oracle MySQL
Convierte todos los caracteres a
LOWER LOWER LOWER LOWER
minúsculas
Convierte todos los caracteres a
UPPER UPPER UPPER UPPER
mayúsculas
Elimina los blancos del final de
RTRIM RTRIM RTRIM RTRIM
la cadena
Elimina los blancos del comienzo
LTRIM LTRIM LTRIM LTRIM
de la cadena
Devuelve una subcadena SUBSTR SUBSTRING SUBSTR SUBSTRING
Concatena dos cadenas CONCAT + CONCAT CONCAT
FUNCIONES DE CADENA
LOWER:
select LOWER ('HOLA MUNDO!') -- Resultado -> hola mundo!
UPPER:
select UPPER ('hola mundo!') -- Resultado -> HOLA MUNDO!
RTRIM:
select RTRIM ('hola mundo! ') -- Resultado -> hola mundo!
LTRIM:
select LTRIM (' hola mundo!') -- Resultado -> hola mundo!
SUBSTRING:
select SUBSTRING ('hola mundo',1,6) -- Resultado -> hola m
CONCAT:
select CONCAT ('hola',' mundo!') -- Resultado -> hola mundo!
FUNCIONES DE FECHA
Fecha y Hora del sistema
• SYSDATETIME — Fecha y Hora del Servido
• GETDATE — Obtiene la fecha del Servidor

Fecha en partes
• DateName — Nombre de parte de la fecha determinada
• DatePart — Parte de la fecha
• Day — El número de día del mes
• Month — El número del mes
• Year — El año de una fecha

Añadir y obtener lapsos entre fechas.


• DateDiff — Diferencia entre dos fechas
• DATEADD — Añade partes de fecha a una fecha determinada
FUNCIONES DE FECHA
SYSDATETIME:
select SYSDATETIME() -- Resultado -> 2019-11-10 15:22:02.2860418

GETDATE:
select GETDATE() -- Resultado -> 2019-11-10 15:22:59.247

DATENAME (DAY – MONTH –YEAR – DAYOFYEAR - WEEKDAY):


select DATENAME(DAYOFYEAR, '2019-11-10') -- Resultado -> 314

DATEDIFF (DAY – MONTH –YEAR – DAYOFYEAR):


select DATEDIFF(YEAR, '1992-02-16','2019-11-10') -- Resultado -> 27

DATEADD (DAY – MONTH –YEAR):


select DATEADD(YEAR,27,'1992-16-02') -- Resultado -> 2019-02-16 00:00:00.000
VISTAS
 Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una
tabla tiene un conjunto de definiciones, y almacena datos físicamente. Una vista
también tiene un conjunto de definiciones pero no almacena datos físicamente.

 La sintaxis para la creación de una vista es la siguiente:

CREATE VIEW "NOMBRE_VISTA" AS "Instrucción SQL";


LAS VISTAS PERMITEN…
 Ocultar información: permitiendo el acceso a algunos datos y manteniendo oculto el resto de
la información que no se incluye en la vista. El usuario opera con los datos de una vista como
si se tratara de una tabla, pudiendo modificar tales datos.
 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 repetidamente almacenando en
una vista el resultado de una consulta compleja que incluya información de varias tablas.
EJEMPLO
 Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla:

Deseamos crear una vista denominada Vista_Customer que


contiene sólo las columnas ContactName, City y Region de esta
tabla.

CREATE VIEW "NOMBRE_VISTA" AS "Instrucción SQL";

CREATE VIEW Vista_Customer AS


SELECT ContactName, City, Region
FROM Customer;
EJEMPLO
 Ahora tenemos una vista llamada Vista_Customer con la siguiente estructura:

SELECT * FROM Vista_Customer


Vista_Customer
INSTRUCCIÓN ALTER VIEW

 Permite modificar una vista

Alter View “Nombre_Vista” As “Instrucción Select”

Instrucción Drop View


 Permite eliminar una vista

Drop View “Nombre_Vista”


TIPOS DE VISTAS
 Horizontales o por Restricción: Son las que restringen el acceso de un usuario a únicamente
un conjunto de filas de una tabla.
 Las vistas horizontales son adecuadas cuando la tabla sobre la que se definen contiene datos
que relacionan a varias organizaciones o usuarios, proporcionando una “tabla privada” para
cada usuario compuesta únicamente de las filas necesarias para ese usuario en concreto.
Tipos de Vistas

 Verticales o por proyección: Son aquellas que restringen el acceso de un usuario sólo a
ciertas columnas de una tabla.
 El uso de estas vistas es aconsejable cuando los datos de la tabla son compartidos también por
varios usuarios diferentes. La diferencia está en que ahora solo necesitamos parte de los
campos, no todos.
VISTAS: VENTAJAS Y
DESVENTAJAS
VENTAJAS:
 Las consultas con selecciones complejas se simplifican.
 Permiten personalizar la BD para los distintos usuarios, de forma que presenten los
datos con una estructura lógica para los mismos.
 Control de acceso a la BD, haciendo que los usuarios vean y manejen solo
determinada información.
DESVENTAJAS:
 La caída del rendimiento cuando se construyen vistas con selecciones complejas.
TRABAJO EN CLASES
 Utilizando la base de datos NORTHWIND:
 Realizar una Vista sobre la tabla Employees llamada VistaTClase1 que muestre
“LastName” – “FirstName” (Concatenados) – “Address” – “City” de todos los
empleados que vivan en la ciudad de Londres (London).
 Crear una vista llamada Vista_TClase2 sobre las tablas Productos (Products) y
Categorías (Categorías) la cual muestre los campos Product Name, UnitPrice,
Categorízame y Descripción de los productos cuyo precio unitario sea mayor que
$50.00.
 Crear una vista llamada Vista_TClase3 sobre la tabla Empleados (Employees) que
muestre LastName, FirstName, Address y City de todos los empleados cuya ciudad
de origen sea Seattle.

También podría gustarte