Historia del Sql Server Clase 20150310
martes, 10 de marzo de 2015
12:15 p. m.
1989 Inicio del Sql Server, Nuevo gestor de sofware
• Microsoft
• Sybase
• AshtonTate
1991 Primer versión de Sql Server (1.1)
1993 Primer versión comercial "Sql Server 4.21"
• Interfaz de ventas
• No más consolas de comandos
• Administración más amigable de la herramienta, se cambia la forma como se administra el software.
• Funciones revolucionarias.
1995 Sql Server 6.0
• Se mejora la interacción con usuarios finales
• Se mitigan errores críticos de las versiones anteriores
1996 Sql Server 6.5
• Funcionalidades para internet
• Nuevas utilidades para almacenamiento de datos
1998 Sql Server 7.0
• Mejor escalabilidad más flexible
• Nueva arquitectura
2000 Sql Server 2000
• Mejora el modelado de datos
○ RDB
○ OLAP
○ ETL
○ Reporting
• Failover Clustering
• Relational
• Blob
• XML
2005 Sql Server 2005
• Mitigación de errores críticos.
• Utilidadades para mejorar el desarrollo
2008 Sql Server 2008
• Resource Governor (Gestor de recursos)
• Data And Backup compression
• Policys-Based Managements (Gestiones basadas en políticas de los administradores)
2008 Sql Server R2
• Enfocada en la innovación y el futuro
• Diseña específicamente para el almacenamiento en la nube. (Sql Azure)
2012 Sql Server 2012
• Basada para plataformas en la nube.
Aspectos Básicos de la interfaz de SQL Server 2012
ITM - BD página 1
Transact-SQL I
martes, 24 de marzo de 2015
03:55 p.m.
Definición
Es un lenguaje que sirve para la definición, tratamiento y control de datos.
Tipos de instrucciones de Transact-SQL
• Instrucciones del Lenguaje de definición de datos (DDL), que se utilizan para crear objetos en
la base de datos.
○ Definen los objetos de la base de datos
CREATE nombreObjeto
ALTER nombreObjeto
DROP nombreObjetoUSE northwind
○ Deben tener los permisos adecuados
Únicamente los miembros de estas funciones pueden ejecutar sentencias DDL
□ Sysadmin
□ Dbcreator
□ db_owner
□ db_ddladmin
• Instrucciones del Lenguaje de control de datos (DCL), que se utilizan para determinar quién
puede ver o modificar los datos.
○ Establecer o cambiar los permisos
GRANT
Crea una entrada en el sistema de seguridad que permite a un usuario trabajar
con datos o ejecutar ciertas instrucciones de Transact-SQL.
DENY
Crea una entrada en el sistema de seguridad que deniega un permiso de una
cuenta de seguridad e impide que el usuario, grupo o función herede el permiso a
través de su pertenencia a grupos o funciones.
REVOKE
Quita un permiso concedido o denegado previamente.
○ Deben tener los permisos adecuados
Unicamente los miembros de estas funciones pueden ejecutar sentencias DCL
□ Sysadmin
□ Dbcreator
□ db_owner
□ db_securityadmin
○ Ejemplo
En este ejemplo se concede a la función public el permiso para consultar la tabla
products.
USE northwind
GRANT SELECT ON products TO public
GO
ITM - BD página 2
GO
• Instrucciones del Lenguaje de tratamiento de datos (DML), que se utilizan para consultar y
modificar los datos.taform
○ Las instrucciones de DML funcionan con los datos de la base de datos. Mediante estas
instrucciones puede cambiarlos o recuperar información. Las instrucciones de DML
incluyen:
SELECT
INSERT
UPDATE
DELETE
○ Deben tener los permisos adecuados
Unicamente los miembros de estas funciones pueden ejecutar sentencias DCL
□ Sysadmin
□ Dbcreator
□ db_owner
□ db_datawriter
○ Ejemplo
En este ejemplo se recupera el identificador de categoría, nombre de producto,
identificador de producto y precio por unidad de los productos de la base de datos
Northwind.
USE northwind
SELECT categoryid, productname, productid, unitprice FROM products
GO
ITM - BD página 3
Transact-SQL II
martes, 07 de abril de 2015
09:54 a.m.
Componentes del SQL
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.
1. Comandos
○ Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.
○ Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Comandos DCL
Establecer o cambiar los permisos
□ GRANT
Crea una entrada en el sistema de seguridad que permite a un usuario trabajar con datos o ejecutar ciertas instrucciones de
Transact-SQL.
□ DENY
Crea una entrada en el sistema de seguridad que deniega un permiso de una cuenta de seguridad e impide que el usuario,
grupo o función herede el permiso a través de su pertenencia a grupos o funciones.
□ REVOKE
Quita un permiso concedido o denegado previamente.
2. Clausulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.
3. Operadores
○ Logicos
ITM - BD página 4
○ Comparación
4. Funciones de agregado
ITM - BD página 5
Transact-SQL III
jueves, 23 de abril de 2015
03:41 p.m.
Artículos y encargos
Una base de datos para una pequeña empresa debe contener información acerca de clientes,
artículos y
pedidos. Hasta el momento se registran los siguientes datos en documentos varios:
• Para cada cliente: Número de cliente (único), Direcciones de envío (varias por cliente), Saldo,
Límite de
crédito (depende del cliente, pero en ningún caso debe superar los 3.000.000 pts), Descuento.
• Para cada artículo: Número de artículo (único), Fábricas que lo distribuyen, Existencias de ese
artículo
en cada fábrica, Descripción del artículo.
• Para cada pedido: Cada pedido tiene una cabecera y el cuerpo del pedido. La cabecera está
formada
por el número de cliente, dirección de envío y fecha del pedido. El cuerpo del pedido son varias
líneas, en
cada línea se especifican el número del artículo pedido y la cantidad.
Además, se ha determinado que se debe almacenar la información de las fábricas. Sin embargo,
dado el
uso de distribuidores, se usará: Número de la fábrica (único) y Teléfono de contacto. Y se desean ver
cuántos artículos (en total) provee la fábrica. También, por información estratégica, se podría incluir
información de fábricas alternativas respecto de las que ya fabrican artículos para esta empresa.
Nota: Una dirección se entenderá como Nº, Calle, Comuna y Ciudad. Una fecha incluye hora.
Se pide hacer el diagrama ER para la base de datos que represente esta información.
ITM - BD página 6
Transact-SQL IV
jueves, 30 de abril de 2015
02:24 p.m.
Tipos de Join en T-SQ
En SQL tenemos tipos de Join que funcionarán en Transact, propio de MS SQL Server, y que sólo
cambian ciertas partes de la sintaxis para los demás lenguajes ojo todos al final hacen lo mismo, las
bases son iguales, tenemos 2 tipos de Join (por definición almenos) los Joins Internos o de
Combinación interna (Inner Join) y los Joins Externos o Combinación externa (Outer Join) que a su
vez tienen sus diferencias dentro de cada uno de ellos.
Tipos de Join:
1. Internos (Inner Join)
• De Equivalencia (Equi – Join)
• Natural (Natural – Join)
• Cruzado (Cross – Join)
• En sí mismo (Self – Join)
2. Externos (Outer Join)
• De tabla Izquierda (Left Outer Join)
• De tabla Derecha (Right Outer Join)
• Combinación completa (Full Outer Join)
Creamos las tablas en nuestra Query de SQL Management Studio en una Base de datos que hayas
creado.
– Tabla1 (IdLetra, Valor1)
– Tabla2 (IdLetra, Valor2)
– Tabla3 (IdLetra, Valor3)
– Tabla4 (IdLetra, Valor4)
CREATE TABLE Tabla1 (IdLetra varchar(5), Valor1 int)
CREATE TABLE Tabla2 (IdLetra varchar(5), Valor2 int)
CREATE TABLE Tabla3 (IdLetra varchar(5), Valor3 int)
CREATE TABLE Tabla4 (IdLetra varchar(5), Valor4 int)
Agregamos algunos datos a las tablas
INSERT INTO TABLA1 VALUES ('A',1)
INSERT INTO TABLA1 VALUES ('B',2)
INSERT INTO TABLA1 VALUES ('C',3)
INSERT INTO TABLA1 VALUES ('D',4)
INSERT INTO TABLA1 VALUES ('E',5)
INSERT INTO TABLA1 VALUES ('F',6)
INSERT INTO TABLA2 VALUES ('A',10)
INSERT INTO TABLA2 VALUES ('B',20)
INSERT INTO TABLA2 VALUES ('C',30)
INSERT INTO TABLA2 VALUES ('D',40)
INSERT INTO TABLA2 VALUES ('E',50)
INSERT INTO TABLA2 VALUES ('F',60)
INSERT INTO TABLA3 VALUES ('A',7)
INSERT INTO TABLA3 VALUES ('B',8)
INSERT INTO TABLA3 VALUES ('C',9)
INSERT INTO TABLA3 VALUES ('D',10)
INSERT INTO TABLA3 VALUES ('E',11)
INSERT INTO TABLA3 VALUES ('F',100)
ITM - BD página 7
INSERT INTO TABLA3 VALUES ('F',100)
INSERT INTO TABLA3 VALUES ('G',200)
INSERT INTO TABLA4 VALUES ('A',12)
INSERT INTO TABLA4 VALUES ('B',13)
INSERT INTO TABLA4 VALUES ('C',14)
INSERT INTO TABLA4 VALUES ('D',15)
INSERT INTO TABLA4 VALUES ('E',16)
INSERT INTO TABLA4 VALUES ('H',300)
INSERT INTO TABLA4 VALUES ('I',400)
INNER JOIN
El Inner Join te permite combinar dos tablas mediante un campo en común para hacer relaciones y
consultas en este ejemplo vamos a utilizar un Inner Join para unir las tablas 1 y 2, Funciona así:
SELECT tabla.(campo que quieres mostrar)
FROM Tabla1 (Alias -opcional-) INNER JOIN Tabla2 (Alias – opcional-)
ON Tabla1(o Alias).NombreCampo(campo en común) <,>,= (comparación) Tabla2(o
Alias).NombreCampo(campo en común)
Inner Join Tabla 1 y Tabla2 (con alias)
--Con Alias
SELECT *
FROM Tabla1 T1 INNER JOIN Tabla2 T2
ON T1.IdLetra = T2.IdLetra
SELECT T1.Valor1,T2.Valor2,T2.IdLetra
FROM Tabla1 T1 INNER JOIN Tabla2 T2
ON T1.IdLetra =T2.IdLetra
Inner Join Tabla 1 y Tabla2 (sin alias)
--Sin Alias
SELECT *
FROM Tabla1 INNER JOIN Tabla2
ON Tabla1.IdLetra = Tabla2.IdLetra
OUTER JOIN
En el Outer Join la diferencia es que en este tipo de combinación se mantienen los valores que no
tienen equivalente en la otra tabla, esto no sucede en el Inner Join que cuando las tablas no tienen
valores equivalentes la relación botaría NULL en el resultado y este es omitido por defecto, hay
maneras de conservarlos usando Inner Join especificando IsNull o Null, pero no nos compliquemos
más, veamos los ejemplos del Outer Join para esto relacionaremos las tablas 3 y 4 que contiene
algunos valores sin equivalente en la otra, primero hagamos un Inner Join comprobando así que no
nos dá los valores Null:
Como verás los valores sin equivalente son omitidos
-De Tabla Izquierda (Left Outer Join)
El Left Outer Join nos permite hacer una mezcla y conservar todos los valores de la tabla izquierda (la
primera tabla que se menciona en la consulta) sin importar que no tengan equivalente con la de la
derecha, veamos el ejemplo:
--LEFT OUTER JOIN
SELECT *
FROM Tabla3 LEFT OUTER JOIN Tabla4
ITM - BD página 8
FROM Tabla3 LEFT OUTER JOIN Tabla4
ON Tabla3.IdLetra = Tabla4.IdLetra
-De Tabla Derecha (Right Outer Join)
El Right Outer Join nos permite hacer una mezcla y conservar todos los valores de la tabla derecha
(la segunda tabla que se menciona en la consulta) sin importar que no tengan equivalente con la
primera, el caso contrario como ven, vamos al ejemplo:
--RIGHT OUTER JOIN
SELECT *
FROM Tabla3 RIGHT OUTER JOIN Tabla4
ON Tabla3.IdLetra = Tabla4.IdLetra
-Combinación Completa (Full Outer Join)
Con esta útlima nos permitirá hacer una mezcla total y conservar todos los valores de ambas tablas,
los valores que no tengan equivalencia aparecerán acompañados de un Null y se mostrán todos
ellos, ejemplo:
--FULL OUTER JOIN
SELECT *
FROM Tabla3 FULL OUTER JOIN Tabla4
ON Tabla3.IdLetra = Tabla4.IdLetra
Tomado de <https://martinmsp.wordpress.com/2009/10/17/tipos-de-joins-en-t-sql-y-como-
usarlos/>
ITM - BD página 9