U2 - Creación de Bases de Datos y Manipulación de Datos

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

Introducción al SQL Server

Introducción al SQL Server

Las bases de datos son un almacén de datos e información


que se administra mediante el lenguaje SQL.

La empresa Microsoft ofrece el SQL Server, que es un


sistema que gestiona una base de datos relacional (SGBD).
Se usa principalmente para almacenar información de
aplicaciones.
Introducción al SQL Server

Sus ventajas son:


• Sencilla de aprender
• Tiene un entorno visual para trabajar y configurar
• Es un producto maduro con una gran comunidad
• Puede trabajar en la nube
Introducción al SQL Server

Sql Server como muchos SGBD usan un lenguaje


mayormente estandarizado o SQL, que es un acrónimo de
Structured Query Language (lenguaje de consultas
estructuradas). Este código de base de datos relacionales se
popularizo gracias a IBM y Oracle en los años 70, donde se
convirtió por excelencia en el lenguaje de los sistemas de
gestión de base de datos.
Introducción al SQL Server

Una base de datos contiene varias tablas, que podemos


imaginarlas como una hoja de Excel donde las columnas son
características de una entidad y las filas son los datos de
cada entidad. Ver tabla Empleado en imagen.

La palabra “relacional” se refiere a que los datos de una


tabla se pueden relacionar con otra.
Introducción al Modelo
Entidad Relación
Creación del Modelo Entidad Relación
(MER)
El Modelo de Entidad Relación, indica las relaciones entre las
entidades de una base de datos. Se representa gráficamente
mediante el Diagrama Entidad Relación.

El diseño de una Base de Datos tiene tres niveles.


• Conceptual, que es como un bosquejo de la relación entre
entidades.
• Lógico, el cual muestra los atributos, PK y FK de las tablas
aunque no los tipos de datos, por lo que no se puede
implementar en un SGBD.
• Físico, indica todo lo del lógico mas los tipos de datos de
cada atributo de un SGBD específico, listo para
implementarse.
Creación del Modelo Entidad Relación
(MER)
Creación del Modelo Entidad Relación
(MER)
• Recordemos que para diseñar una Base de Datos partimos
normalmente de un requerimiento del usuario de hacer un
sistema informático. Al diseñarlo también debemos diseñar
la base de datos

• Primero analizamos el diagrama de flujo y los documentos


involucrados para establecer la entidades. Una Entidad suele
representar un “objeto” del mundo real con existencia
independiente.

• Se establece relaciones como las 1 a 1 o 1 a N, entre las


entidades definidas creándose el MER conceptual.

• Tras revisar las pantallas y el resto de documentos de


análisis se definen los atributos necesarios por cada entidad.
Tendremos entonces el MER Lógico.

• Finalmente crearemos el MER físico indicando los tipos de


datos de cada atributo.
Introducción al Modelo Entidad
Relación
En resumen:

Un Modelo Entidad Relación es el mapa que nos permitirá


saber como llegar de un dato a otro para mostrarlo.
También nos indica donde está la información que debemos
modificar.
Un Modelo Entidad Relación se plasma en un diagrama el cual
se llama Diagrama Entidad Relación (DER)
Instalación e ingreso al SQL SERVER
Usaremos la versión developer de SQL Server, la cual
encontrará buscando en google con “SQL Server developer
descargar”.
Debe instalar dos softwares en su computadora:
1. El SGBD datos SQL Server. No olvide configurar el usuario sa
2. El entorno gráfico de trabajo o SQL Server Management
Studio (SSMS)

Ingrese al SSMS usando las credenciales del usuario sa

Video explicando todo:


https://www.youtube.com/watch?v=yasfZuou3zI
Creación de base de datos
Creación de una Base de Datos

Una base de datos es un espacio que contiene tablas y otros


objetos que suelen tener un fin común. Por ejemplo la base de
datos de Compras, o la de Administración. A espacios de este
tipo se les suele llamar también repositorios.

En el caso del SQL Server sus bases de datos se almacenan en el


disco duro en dos tipos de archivos:
1. Uno para guardar las estructuras de las tablas, otros objetos
y su contenido. Es el archivo de datos.
2. El segundo es opcional y sirve para guardar cada cambio en
los datos que ocurren, así no se perderán en caso de alguna
falla. Es el archivo de transacciones.
Creación de una Base de Datos: Ejemplo

Queremos guardar la información relacionada con nuestra


colección de libros, que incluyen novelas de varios géneros y
autores.

Presionamos el botón New Query para tener una hoja de


consultas donde escribir los comandos.

Primero crearemos una Base de Datos donde guardaremos


toda la información relacionada (tablas):
Nombre de la BD
CREATE DATABASE ColeccionDeLibros;
Creación de una Base de Datos: Ejemplo
Creación de una Base de Datos: Ejemplo

Debe saber también que el comando general para crear una


Base de Datos es:
Creando una Base de Datos
La segunda forma que tenemos para poder crear una Base de
Datos es mediante el uso del Wizard:

Paso 1: De click derecho en Databases y click en New


Database…
Creación de una Base de Datos
Paso 2: En la página General escriba el nombre de la base de
datos a crear (ColeccionDeLibros) en el campo Database name.

En Database files se puede especificar en que carpeta del disco


duro se guardarán el archivo de datos y los de transacciones
aunque en esta oportunidad no los modificaremos.
Creación de una Base de Datos
Paso 3: Haga click en la página Options y veremos opciones
como Recovery model, donde se indica si se usará el archivo de
transacciones o no. En Compatibility level se puede especificar
si la base de datos será compatible con versiones anteriores.

En esta oportunidad no modificaremos nada.

Ya logramos crear nuestra Base de Datos, ahora empezaremos


a crear las tablas donde se almacenarán la información de cada
uno de los libros de nuestra colección.
Creación de una Base de Datos
Creación de tabla
Crear una Tabla

Primero seleccionaremos la Base de datos creada previamente


para trabajar en ella, para eso en la hoja de consultas ejecute:

USE ColeccionDeLibros;

Ahora si crearemos la tabla para los Libros: El atributo que será


llave primaria no
CREATE TABLE Libro ( puede ser nulo
Codigo int not null,
Titulo varchar(250),
Autor varchar(250),
FechaCompra date,
Atributos Tipos de datos
Paginas int,
YearPublicacion int,
Descripcion varchar(500),
primary key (Codigo)
); Llave primaria
Creación de Tablas

Al igual que con la Base de Datos, para crear una tabla


podemos utilizar comandos, que es un camino rápido o utilizar
el Wizard del administrador de Base de Datos que es un camino
más amigable.

El comando general de creación de tablas es:


Creación de Tablas

Para crear una tabla, debemos indicar columnas (atributos) que


necesitaremos, especificando además el tipo de dato y el
tamaño de cada atributo.

Los tipos de datos más comunes son:


• tipo texto son los CHAR, VARCHAR(), TEXT
• tipo numéricos enteros: INT, BIGINT, SMALLINT
• tipo numéricos con decimales: DOUBLE, MONEY
• tipo fecha: DATE, DATETIME
• tipo lógico: BOOLEAN, BIT
Creación de Tablas

La segunda forma que podemos utilizar para crear una Tabla es


con el Wizard del administrador de la Base de Datos.

Paso 1: De click derecho en Tables y click en Table…


Creación de Tablas
Paso 2: En Column Name llene los nombres de los atributos de
la tabla. En Data type seleccione los tipos de datos.

En la parte de Properties, en la columna (Name) debe escribir


el nombre de la Tabla, es decir Libros
Creación de Tablas
Para indicar que una o varias columnas serán llaves primarias,
deles click derecho y en el menú contextual haga click en Set
Primary Key
Tablas - Ejemplos
• Crea tabla persona con dni como PK

• Crea tabla mascota con dni del dueño como FK. La tabla de
referencia es Persona. Si se actualiza o borra un dato y
generará incongruencia, entonces manda error y se impide
acción
Tablas - Ejemplos
• Crea tabla certificado con dni del propietario como FK. La
tabla de referencia es Persona. Si se actualiza o borra un
dato y generará incongruencia, entonces actualizará o
borrará datos para que no se pierda la congruencia

• Crea tabla teléfono. El dni del usuario es FK (Persona). Al


borrar se graba null las incongruencias, al actualizar se pone
el valor por defecto a las incongruencias
Carga de datos
Carga de Datos – Desde Excel

Para la carga de podemos utilizar los que están en una hoja de


Excel que tenga la misma estructura que la tabla destino.

Si son varias tablas a las que vamos a cargar datos, debemos


considerar el orden de llenado de las mismas en caso de existir
llaves foráneas.

Vea el siguiente link para aprender como cargar datos usando


excel e incluso como exportar esos mismos datos:
https://www.youtube.com/watch?v=pDewwJESlOY
Carga de Datos - Insert

Otra forma de ingresar es a través de un comando que se llama


INSERT, con el cual podremos llenar valores respetando el
orden de las columnas y de los tipos de datos utilizados.
Carga de Datos – Base Datos de Ejemplo

Descargue del aula virtual el archivo nothwind.zip,


descomprímalo, abra el contenido en el SSMS, cree una base
de datos llamada northwind y dentro ejecute todo el script.
Consultas Simples
Consultas Simples

Los datos de las tablas podemos consultarlos usando la


instrucción SELECT, la cual tiene la siguiente sintaxis:

SELECT * | {[DISTINCT] columna|expresion [as alias],...}


FROM tabla

• SELECT indica los atributos por mostrar. * significa todos.


Adicionalmente puede ponerle un alias a cualquier columna.
También puede mostrar valores calculados.
• FROM indica la tabla que provee los datos
Consultas Simples

Para empezar, seleccione la base de datos Northwind:

No olvide presionar en botón de ejecución


Y en el combo box aparecerá el nombre de Northwind

Haremos unas consultas, tras cada una presione Ejecutar.


• Seleccione todas las columnas de la tabla empleados.
Consultas Simples (alias, DISTINCT)

• Seleccione nombre y fecha de nacimiento de empleados

• Muestre apellido, nombre, salario y salario mensual


anualizado de los empleados

• Muestre apellido, nombre y salario al año pero llame a la


columna Total de los empleados.

• Muestre la lista de títulos de la tabla empleados sin que se


repitan los datos.
Consultas Simples (ORDER BY, TOP)
• Seleccione nombre y apellidos de los empleados ordenados
por apellido ascendentemente

• Seleccione nombre y apellidos de los 3 primeros empleados


ordenados por fecha de nacimiento descendentemente.

• Muestre el código de orden, código de cliente, y fecha de


orden de la tabla Ordenes, ordenados por código de cliente
ascendentemente y luego por fecha de orden
descendentemente.
Consultas Simples (WHERE, BETWEEN)

• Seleccione todos los atributos del detalle de la Orden


filtrando que la cantidad sea mayor igual a 20

• Seleccione todos los atributos del detalle de la Orden


filtrando que el precio unitario este entre 15 y 30

• Seleccione todos los atributos del detalle de la Orden


filtrando que el código de producto sea 5 o que tenga
descuento
Consultas Simples (concatenar)

• En la tabla de clientes, muestre juntos el nombre y apellido


pero separados por un guión. A esta columna llámele NomC

• En la tabla de clientes, muestre el nombre y salario


concatenados pero separados por S/. A esta columna
llámele Contacto

• En la tabla de clientes, muestre el nombre y salario


concatenados pero separados por S/. A esta columna
llámele Fec
Consultas Simples (INNER JOIN)
• El DER nos muestra como se relacionan las tablas y que
atributos me permiten transitar de una tabla a otra. Al lado
está una parte del DER de Northwind. ¿Qué tablas y como
las relacionarías si quieres saber a que clientes les genero
Ordenes el empleado con código 5?

• De Empleado a Cliente no hay relación directa, pero si


pasando por Ordenes (flechas roja y morada). Para Ir de
Empleado a Ordenes se necesita un atributo de relación
(flecha roja). Por el 1 a muchos sabemos que le PK de
Empleados es una FK en Ordenes, luego el atributo de
relación es EmployeeID (subrayados rojo). De Ordenes a
Cliente entonces el atributo es CustomerID de la tabla
Ordenes (fecha y subrayado morado).

• Para relacionar ambas tablas usaremos INNER JOIN


indicando los atributos de conexión. Para evitar confusiones
cada tabla tendrá un alias, por ejemplo empleado tendrá el
alias e, por ultimo filtraremos que se busque el empleado
con código 5.
Consultas Simples (INNER JOIN)
Consultas Simples (INNER JOIN)

Al usar INNER JOIN en las tres tablas se les une de manera


horizontal. En la siguiente consulta comprobará que en el
resultado aparecen todos los atributos de las tres tablas a la
vez:

Los INNER JOIN filtran mostrar los datos que existen en las
tablas pero que tienen equivalencia según los atributos de
conexión. Por ejemplo los empleados que no hicieron ordenes
no aparecerían.

Nótese que las relaciones (1 a 1, 1 a muchos) determinan que


entidades se mostrarán. Entre Empleados y Ordenes el 1-M
indica que Las Ordenes son más numerosas. Entre Clientes y
Ordenes el 1-M indica que Las Ordenes son más numerosas. En
resumen al unir las 3 tablas en realidad estamos mostrando
principalmente las Ordenes, por ser la más numerosa.
Consultas Simples (INNER JOIN)

Lo importante para el INNER JOIN es indicar un camino viable


con los atributos de conexión, luego estas son equivalentes:

Esta es como la 3ra, pero tiene un camino inviable. ¿Lo ves?


Consultas Simples (INNER JOIN)

Usted puede combinar el INNER JOIN con lo aprendido


anteriormente. Haga las siguientes consultas:
• Muestre el código, nombre de producto, nombre de la
categoría de las tablas producto y categorías, filtrando para
enseñar solo aquellos que están descontinuados. (verde)

• Muestre el código, nombre de empresa de los proveedores y


fecha de orden de los proveedores que han participado con
sus productos en Ordenes filtrado tal que solo se consideran
las fechas de Orden de Marzo. (naranja)
Consultas Simples (INNER JOIN)
Evitar mensaje de volver a
crear tabla
Evitar mensaje de volver a crear tabla

Cuando se hacen cambios en una tabla como:


• Agregar una nueva columna al centro de la tabla
• Soltar una columna
• Cambio de nulabilidad de columna
• Cambiar el orden de las columnas
• Cambiar el tipo de datos de una columna

El SQL Server podría mandar un mensaje de error y no permite


guardar los cambios. De permitirlo dichos cambios podrían
hacer perder datos. Tenga mucho cuidado.
Evitar mensaje de volver a crear tabla

Si desea que no se compruebe esto hacer:


1. Abra SQL Server Management Studio (SSMS).
2. En el menú Herramientas, haga clic en Opciones.
3. En el panel de navegación de la ventana Opciones, haga clic
en Diseñadores.
4. Seleccione o desactive la casilla de verificación Evitar
guardar cambios que requieren la recreación de la tabla y
luego haga clic en Aceptar.
Consultas Simples
Consultas Simples (IN, IS NULL)

• Seleccione todo de la tabla clientes cuyo país es USA o UK

• Seleccione todos los atributos de la tabla clientes cuya


región es NULL

• Seleccione todos los atributos de la tabla clientes cuya


región NO es NULL
Consultas Simples (LIKE)
• Seleccione todos los atributos de la tabla clientes con
nombre de compañía contiene las letras “por”

• Seleccione todos los atributos de la tabla clientes con


nombre de compañía que empiece con las letras “Fr”

• Seleccione todos los atributos de la tabla clientes con


nombre de compañía que la primera letra no importe cual
sea, pero la segunda sea “r” y el resto de letras que sea
cualquiera
Consultas Simples (BETWEEN)
• Seleccione todos los atributos de la tabla EMPLEADOS que
tienen su ID entre los valores 3 y 7

• Seleccione todos los atributos de la tabla EMPLEADOS que


nacieron entre el 01 de enero de 1950 y el 31 de diciembre
de 1960:
Consultas con agrupación
de datos
Consultas usando GROUP BY

Para mostrar resúmenes agrupados por una o varias columnas


• De la tabla de ordenes, mostrar la cantidad de ordenes para
cada país (campo ShipCountry).

• Muestre de la tabla de empleados la suma de salario por


país (Country)

• Muestre de la tabla de productos el máximo y mínimo precio


unitario por categoría.
Consultas usando GROUP BY

• De la tabla de ordenes, mostrar por cada mes del año según


la fecha de la orden (orderdate), cual es el promedio de
cobro de envío (freight). Ordene los resultados por número
de mes.

• De la tabla Clientes muestre la cantidad de registros, la


cantidad de registros según la columna país (country) que no
tiene nulos, la cantidad de registros según la columna región
(region) que tiene nulos.

Sin el group by acumula


todos los registros

• De empleados muestre la suma de todos los salarios


Consultas usando HAVING

Where no maneja agrupados. Having es como el Where pero


SOLO para agrupados como sum(), count(), avg(), min() y max().
• De la tabla de ordenes, mostrar por cada mes del año según
la fecha de la orden (orderdate), cual es el promedio de
cobro de envío (freight). Ordene los resultados por número
de mes. Esta es una consulta de la lámina anterior, pero
ahora deberá filtrar aquellos meses con promedio de cobro
de envío >= 80

• Repita la anterior consulta pero que además solo se


considere los empleados con cargo Representante de ventas
Consultas usando HAVING

• Muestre el código de Orden y la cantidad de detalles que


tiene cada una, pero filtrando que la cantidad de detalles
debe ser >= 3 y <= que 5.

• Muestre el código de Orden, la cantidad de detalles que


tiene cada una, la cantidad de diferentes códigos de
proveedor del producto, pero filtrando que la cantidad de
proveedores diferentes es menor a la cantidad de detalles.

Compruebe consultando una orden del resultado


Consultas usando CASE

Permite condicionales
• De la tabla de empleados, mostrar el titulo de la persona en
español y su apellido

• De la tabla empleados, muestre el apellido y una columna


que se llamara Situación y que retorne “Gringo con Dinero”
si es de USA y gana más de 3000, que retorne “Ingles con
Dinero” si es de UK y gana más de 3000. En cualquier otro
caso que retorne “Pobre”
Consultas usando CASE

• De la tabla ordenes, muestre por cada empleado el total de


envío por mes de enero a junio, con presentación tipo tabla
Subconsultas
Subconjuntos simples: En Select

Es una consulta dentro de otra consulta, Se debe pensar como


una tabla temporal. Las simples devuelven un solo valor.
Pueden estar en el Select
• Mostrar el código de cada orden y la cantidad de productos
diferentes de cada una de ellas. Hágalo sin un group by.

• Mostrar el código de cada orden, el nombre del cliente y el


apellido del empleado relacionado Hágalo sin inner joins.
Subconjuntos simples: <,>, <=, >=, =, <>

Las simples también pueden estar en el Where:


• Seleccione los empleados cuyo salario sea mayor que el
promedio del salario de todos

• Muestre los códigos de orden y costo de envío (Freight) tal


que el costo de envío sea menor que el mínimo costo de
envío de las ordenes del empleado con apellido “Davolio”
Subconsultas con grupo de datos: IN,
EXISTS, NOT EXISTS

• Mostrar los productos cuya categoría sean aquellas que


empiezan con las letras “Con”

Las dos tienen el mismo resultado


Subconsultas con grupo de datos: IN,
EXISTS, NOT EXISTS
• Mostrar los diferentes empleados (nombres y apellidos)
concatenados que en sus ordenes NO tienen al producto
“Tofu”

No funciona porque los <> “Tofu” elimina Detalles de


Ordenes en vez de Ordenes completas de la selección
Inner Join, Left Join, Right
Join, Full Join, Union,
Cross Join
Introducción

Los Joins combinan tablas horizontalmente, el Union


verticalmente. El Cross multiplica las tablas.

Right Join
Introducción

Mostrando como conjuntos con sus respectivas sentencias SQL:

• Inner join, left join, right join, full join requieren especificar
los atributos que conectan una tabla con otra, haciendo la
comparación al lado de la palabra ON
• Union requiere una consulta antes y otra despues. Su
version con “all” muestra los duplicados
• Cross join no requiere atributos de comparación
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Mostrar el código de orden (OrderID), la fecha de la orden


(OrderDate), el nombre y apellido del empleado
relacionado. Use los 4 joins y vea cuantos registros son el
resultado en cada caso. Analice y comente el porque.

824

830

826

832
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Mostrar el nombre de la categoría, su descripción, su stock


valorizado (Precio unitario x Unidades en stock), cantidad de
productos por categoría; todo agrupado por categoría. Debe
filtrar los datos para que solo se tome en cuenta
proveedores de estos países: USA, UK y Germany,
adicionalmente solo se considerarán categorías que su stock
valorizado es mayor a cero y que la cantidad de productos
de la categoría sea menor igual a 6. Los datos se ordenarán
por el stock valorizado priorizando los más valiosos.
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Detecte y muestre el apellido y nombre de los Empleados


que no tienen Ordenes relacionadas usando Join.

• Muestre los códigos de orden y el concatenado del nombre


con el apellido del empleado de aquellos registros con fecha
de envío mayor igual a 15/07/1996. Debe mostrar todas las
ordenes que cumplan con el filtro aún así no tengan
asociado un empleado.
UNION / UNION ALL

Puede combinar verticalmente dos o más tablas, pero cada una


debe tener en el select el mismo tipo, orden y número de
columnas.
• Una las columnas de País de la tabla de clientes y
proveedores. Use UNION y UNON ALL, vea la cantidad de
registros de resultado, analice y comente

25

37
UNION / UNION ALL

• Una en una tabla el código y nombre de los empleados,


clientes y proveedores. Los Clientes y proveedores deben
ser del país USA. Anteceda una letra en el código de cada
tabla para diferenciar las identificaciones: C-cliente, P-
Proveedor, E-Empleado
CROSS JOIN

Hace una multiplicación de registros de dos tablas.


• Muestre por cada Proveedor todas las categorías. Ordene
los resultados por proveedor

• Muestre por cada Proveedor todas las categorías e indique


por cada combinación proveedor-categoría cuantos
productos son de cada proveedor-categoría. Ordene por
proveedor y categoría
Gracias
Docente: Jorge Bojorquez

También podría gustarte