martes, 16 de junio de 2015

SQL Orígenes y Evolución

SQL Orígenes y Evolución 


DDL Lenguajes de definición de datos creación e estructura de la base de datos
Integridad de los datos
create para crear la estructura de objetos  de la base de datos
alter modificar objetos
drop Elimina el objeto



DML data manipulation language Lenguaje de manipulación de Datos
recuperación de datos
Manipulación de datos
Insert : Guarda información que se inserta o se almacena datos  .Insertar, almacenar, guarda información.  
Update:Actualizar cualquier dato .
Delete:borrar datos .
select :consultar datos


DCL Data control language Lenguaje de control de datos
control acceso
Compartición de datos
Grand Doy permiso a los que ingresen
revoice quitar permisos .

Roles de Sql
Invocación directa o interactiva
     La sentencia es invocada desde el terminal.
     Los datos devueltos se presentan en pantalla
           El resultado puede ser :
               *Un valor  
               *Una lista de valores
               * Una tabla
                *Vacío
Invocación desde programa.
     *  La sentencia se invoca como parte de la ejecución del programa .
    * Los datos devueltos se recogen en una área de entrada del programa.

Ventajas de SQL
Independencia de los fabricantes
Portabilidad a cualquier plataforma .
SQL está estandarizado .
Basado en el modelo relacional.
Lenguaje de alto nivel.
Consultas interactivas ad-hoc.
Utilización en lenguaje de programación
multiples vista de datos
lenguaje de base de datos
definición dinámicas de datos
arquitectura cliente servidor


Tipos de datos


Creación de dominios


Los dominios se pueden utilizar como tipos de datos
permite cambiar simultáneamente un dato  
ejemplo
Char(15)default “ 99999”  = pepito
tipos de datos despliega pepito
Operadores



Creación De objetos : Tablas

Create table nombre tabla(Nombre_columna,Tipo_Columna Restricciones_Columna, restricciones_tabla)
Esquema
Nombre_esquema.nombe_tabla

Restricciones de columna:
*unique
*Not null
*default<valor_por_defecto>
check(condicion)
*primary key
*Refeences Nombre_tabla (nombre_atributo)
Restriccion de tabla
Unique (nombre_Atributo) que la combinación sea única
Primary Key (nombre_Atributo)
foreign Key(nombre_atributo)References
NOmbre_tabla(Nombre_atributo)accion_referencial
Check(condicion)
Acciones referenciales
on update accion
On delete accion
restrick

DBO propietario de la base datos esquema por defaul
sqlserver
win2003.sql123.mi_Database.mgalarza.cliente.estaba mal
win2003.sql123.mi_Database.aten_cliente.cliente.le hicieron haci

sherpoint


Consulta de datos
select lista_atributos
Se indican los atributos que se quieren obtener como respuesta a la consulta
select at1,at2,....atn..
se utiliza * si queremos todos los atributos de las tablas involucradas
select*..
 Pueden aparecer filas duplicadas
   para evitarlos se pueden utilizar DISTINCT
   SELECT DISTINCT lista_atributos..

*Los nombres de los atributos se pueden cambiar en el resultados de la tabla.
from lista_tablas
indica la tabla o tablas q son necesarias para obtener informacion.
*Lista de tabls que se utilizan en la consulta separadaspor comas
FROM tab1,tab2,tabn..
*Realiza el producto cartesiano (x) de las mismas
*Las condiciones (where,group by)se imponen sobre el producto el producto cartesiano

where condición
*Indica las condiciones que se deben cumplir las filas obtenidas como resultado  
condiciones que deben cumplir las tuplas

Operadores

*comparación
*lógicos
*matematicos
*otros como  Where
Reunion (join)
*No se realiza automaticamente
*Hay que escribir la condición de la consulta
*Si no se pone la conidion de join se obtiene el producto cartesiano
Group BY lista_atributos(hace agrupaciones )
having condición agrupados ( hace condiciones sobre lo agrupado)
Oreder By lista_atributos ( Ordenar de forma ascendente o descendente)

Ambigüedades
Cuando el mismo nombre de atributo aparece en más de una tabla  
*hay que distinguir a que atributo se refiere
*se cualifica el atributo con en el nombre de la tabla
nombre_tabla.nombre_atributo

select empleado.nombre, ci
from empleado ,departamento
where empleado.código=departamento.código

*cuando la misma relación se la usa más de una vez en la consulta
*En este caso se utiliza alias para las tablas

Select E.nombre,J.nombre
From empleado E,empleado j
where e.id_jefe=j.ID

Funciones de agregación o agrupación
*Son funciones que toman una colección de valores como entrada y producen un único valor  de salida .
Count
devuelve el número de tuplas o valores especificados en un consulta para el atributo indicado
Se puede utilizar como un atributo.

 Subconsultas
*En general se admiten  niveles de anidación
*Para evitar la ambigüedad los atributos sin cualificar siempre se referirán a las relaciones declaradas en la consulta más interna .
*Para evitar problemas es aconsejable calificar los atributos alias para las relaciones .
   SELECT nombre
FROM empleado
Where  sueldo >select sueldo
                           from empleado
                            Where dpto=5
Palabras Reservadas
*Exits Un valor lógico si la consulta tiene valores
*Devuelve true si la tabla no es vacía
*Not exits se utiliza para comprobar si el resultado de una consulta anidada no es vacio.
*devuelve false si la tabla no es vacía.

Group BY  
Se utiliza para formar agrupaciones de tuplas en función de los valores de uno o varios atributos .

ejemplo

SELECT dpto, count (*),AVG(sueldo)
FROM empleado
Group by dpto
Having
*Se utiliza siempre con group By
*Impone condiciones sobre los grupos formados previamente en group by

SELECT dpto,COUNT(*),AVG(sueldo)
from empleado
GROUP by
HAVING COunt(*)>2

Ejemplo en exel

ORDER BY
permite que el usuario ordene el resultado de una consulta por lo svalores de uno o mas atributos
*El orden puede ser ascendente(ASC)o Descendente (DSC)
Operadores de conjuntos
*Union
*ntersect
*minus

(consulta1) Operador _conjunto (consulta2)
(select id From alumnos)
Union
(select id
FROM empleados )

Vídeos relacionado Curso de sql https://www.youtube.com/watch?v=bW-NYf606fM 


Referencias Bibliográficas:
Coronel C., Morris S., Rob P. (2011). Bases de Datos Diseño, implementación y administración (Novena edición). México: Cengage Learning Editores. (Libro digital).




Álgebra Relacional

ÁLGEBRA RELACIONAL

 OPERACIÓN SELECCIÓN

        Álgebra Relacional Definición: Selecciona una relación de acuerdo a las condiciones .


          A esta operación se la denota con la letra griega σ(sigma).

Para hacer referencia a la tabla de la que estamos realizando la 
operación se pone el nombre de la relación en medio de paréntesis.  
          (relacion)


σ (profesor)     devuelve la tabla profesor

 

σ horarioatencion=´17:15-18:15´(Profesor) --->devuelve lo siguiente 


OPERACIÓN PROYECCIÓN    

             Definición : La operación proyección es una operación unitaria que devuelve ciertos                            atributos            deseados. 
        
 A esta operación se la denota con la  letra griega  π 




 π(Profesor)    devuelve la tabla profesor


 πcedula,nombre,apellido(Profesor)       de la tabla estudiante devuelve lo solicitado


Operación Producto Cartesiano

Definición:  Se la denota con la letra x. Se utiliza para multiplicar los registros de una relación con todos los registros de otra relación. 

Operación Producto Natural 

Definición: Se la denota de la siguiente manera |x|. Esta operación es equivalente al producto cartesiano solo que iguala las claves de cada relación.

Operación Resta

Definición: Se la denota con el signo (-). Entrega las tuplas que están en una relación pero en la otra no. 
Se cumple de acuerdo a las siguientes condiciones: 
  1. Las dos relaciones a compararse tienen el mismo número de campos.
  2. Si el dominio de la i-esima columna de una relación corresponde a la otra.
Operación Unión  

DefiniciónSe la denota con la letra U. Conjunto de tuplas que pertenecen a las dos relaciones. Se cumple de acuerdo a las mismas condiciones de la resta.



Referencias Bibliográficas:
Coronel C., Morris S., Rob P. (2011). Bases de Datos Diseño, implementación y administración (Novena edición). México: Cengage Learning Editores. (Libro digital) Recuperado 15/06/2015


lunes, 1 de junio de 2015

DBMS MS SQL Server y PostgresSQL


         
        DBMS MS SQL Server y PostgresSQL




Database management system (DBMS),  es un conjunto de programas que se encargan de manejar la creación y todos los accesos a las bases de datos, esta compuesto por:
DDL: Lenguaje de Definición de Datos
DML:Lenguaje de Manipulación de Datos
SQL: Lenguaje de Consulta.

 PostgreSQL : es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales.

Servicios del DBMS:


Un sistema manejador de base de datos (DBMS) es un sistema software generalizado para la manipulación de bases de datos. 



Especificación de la edición del DBMS en la que viene incluido el servicio:

Permite escoger entre múltiples motores de almacenamiento para cada tabla. En MySQL 5.0 éstos debían añadirse en tiempo de compilación, a partir de MySQL 5.1 se pueden añadir dinámicamente en tiempo de ejecución:

* Los hay nativos como MyISAM, Falcon, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example.

*Desarrollados por partners como solidDB, NitroEDB, ScaleDB, TokuDB, Infobright (antes Brighthouse), Kickfire, XtraDB, IBM DB2. InnoDB Estuvo desarrollado así pero ahora pertenece también a Oracle.Desarrollados por la comunidad como memcache, httpd, PBXT y Revision.

*Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo.


Bases de datos del sistema

Bases de datos del sistema y bases de datos que se cargan por defecto en la instalación del DBMS
Descripción de cada una de las bases de datos (funcionalidad o uso)

Master:  Almacena información de configuración de la instancia de SQL Server, como puede ser la definición de los inicios de sesión (Logins), de las bases de datos, de los errores del sistema, etc.
Model: Principalmente tiene la función de dar soporte al Agente de SQL Server, de tal modo que almacena la definición y planificación de JOBs, Planes de Mantenimiento, etc.
Msdb:Esta base de datos sirve de modelo. Siempre que se crea una nueva base de datos (CREATE DATABASE), se realiza una copia de la base de datos MODEL, heredando de ésta su configuración y contenido, salvo que se especifique lo contrario. Por ejemplo, es posible establecer el Modo de Recuperación o Modo de Registro de MODEL en SIMPLE (o sencillo), con el fin de evitar que al crear una base de datos por defecto se utilice el Modo de Recuperación FULL (completo).

TempdbAlmacena tanto los objetos temporales (tablas temporales, procedimientos almacenados temporales, etc.)

Proceso de instalación

Requerimientos de sw y hw mínimos


En las ediciones de 32 o de 64 bits de SQL Server 2008 se aplica lo siguiente:

Microsoft recomienda ejecutar SQL Server 2008 en equipos con el formato de archivo NTFS. Para las actualizaciones a SQL Server 2008, los sistemas de archivos FAT32 no se bloquearán.
La instalación de SQL Server bloqueará las instalaciones en unidades de disco de sólo lectura o comprimidas.
SQL Server no instala el kit de desarrollo de software (SDK) de .NET Framework 3.5. Sin embargo, el SDK contiene herramientas que son útiles cuando se usa .NET Framework para desarrollo de SQL Server.
Requisitos de reinicio de equipos durante la instalación de SQL Server: la instalación de .NET Framework requiere un reinicio del sistema operativo. Si la instalación de Windows Installer también requiere un reinicio, el programa de instalación esperará hasta que se hayan instalado los componentes de .NET Framework y Windows Installer antes de reiniciar
Descripción de proceso y captura de imágenes de instalación.

Proceso de Instalación

Ahora comenzaremos con un pasos a paso del proceso de instalación de SQL Server 2008 R2.

El instalador nos mostrará el siguiente mensaje, luego de lo cual hacemos click en OK para continuar con la instalación.
Se nos abrirá el centro de Instalación de SQL Server. Nos dirigimos a la sección de Instalación y seleccionamos la opción “New installation or add features to an existing installation”
En este punto el asistente realizara una revisión para identificar posibles problemas que eviten la instalación de los archivos de soporte para la instalación de SQL Server. Si todas las pruebas terminan correctamente, presionamos OK para continuar.
A continuación seleccionamos el Product Key de SQL Server. Como estamos en ambiente de laboratorio, seleccionamos la evaluación Enterprise (valida por 180 dias).
A continuación aceptamos los términos de licencia y comenzamos la instalación de los archivos de soporte de SQL Server.
Al finalizar la instalación de los archivos de soporte de SQL Server, hacemos click en siguiente para comenzar con el asistente de instalación de SQL Server 2008 R2.
El asistente analizará en caso de que existan problemas que eviten una instalación exitosa de SQL Server.
En caso de tener habilitado el Firewall de Windows nos aparecerá la siguiente alerta.
En este punto tenemos 3 opciones de instalación:
  • SQL Server Feature Instalation que permite seleccionar los distintos roles de SQL Server que se deseen instalar (Motor de BBDD, Analysis Services, Reporting Services, Integration Services, etc.)
  • Analysis Services with Sharepoint Integration, que instala Analysis Services como un servicio compartido en una granja nueva o existente para proveer almacenamiento de datos en memoria y procesamiento de una gran cantidad de datos en libros Excel. Incluye la instalación del servicio Gemini.
  • All Features With Defaults, que instala todas las funciones usando los valores por defecto para las cuentas de servicio.
Seleccionamos la primera opción, para poder seleccionar solo los componentes que deseamos instalar.
En nuestro caso instalaremos todos los componentes, exceptuando Reporting Service (este será vistos en un artículo posterior)
Una vez seleccionados los componentes y los directorios de instalación, ejecutamos las reglas de instalación para determinar si el proceso de instalación será bloqueado o se completará satisfactoriamente.
Si todas las pruebas se ejecutan sin inconvenientes, en la siguiente ventana debemos indicar el nombre de la instancia y el directorio donde se ésta se almacenará. En esta ventana además podremos ver las instancias instaladas previamente. En nuestro caso seleccionamos la instancia por Defecto y dejamos la ruta de instalación tal como está.
A continuación se nos indicará el espacio requerido para la instalación. Damos click en siguiente.
A continuación indicamos las cuentas con las que se ejecutarán los servicios de SQL. Debido a que esta instalación será utilizada más tarde en una instalación distribuida de Sharepoint Server, se utilizan cuentas de dominio para la ejecución de los servicios.
Adicionalmente, debemos seleccionar la Collation que será utilizada por SQL Server, tanto para el motor como para Analysis Services.
En nuestro caso seleccionaremos la Collation Latin1_General_100_CI_AS, que es la que se requiere para la posterior instalación de Sharepoint Server.
Para continuar con la instalación, se debe indicar la configuración del motor de Base de Datos. En este punto, en primer lugar debemos seleccionar el modo de autenticación y los administradores del motor de BBDD. En nuestro caso, inicialmente solo seleccionamos el usuario que estamos utilizando para la instalación.
Siguiendo con la configuración, seleccionamos los directorios donde se almacenarán los archivos de base de datos, los logs, los respaldos, etc. En nuestro caso dejamos todo por defecto.
A continuación indicamos si se habilitará el FILESTREAM para el acceso de Transact-SQL. En nuestro caso lo dejamos habilitado.
Para continuar con la instalación, se debe seleccionar los administradores de Analysis Services. En nuestro caso, inicialmente solo seleccionamos el usuario que estamos utilizando para la instalación.
Siguiendo con la configuración, seleccionamos los directorios donde se almacenarán los datos, logs, respaldos y archivos temporales de Analysis Services. En nuestro caso dejamos todo por defecto.
Para continuar, debemos ejecutar las reglas de Configuración para determinar cualquier conflicto en la configuración seleccionada hasta ahora. Si todas las pruebas se completan exitosamente, hacemos click en siguiente.
Finalmente se nos muestra el resumen de la configuración seleccionada. Si todo está correcto hacemos click en Install para comenzar la instalación de SQL Server.
Se realiza la instalación de SQL Server 2008 R2.
Con esto se completa el proceso de instalación de SQL Server 2008 R2.
Para ver la instancia instalada, accedemos a Microsoft SQL Server Management Studio. Aqui seleccionamos el tipo de servidor (en nuestro caso Database Engine), el nombre del servidor y la instancia, y el tipo de autenticación.
Ahora podemos ver la instancia instalada, con lo cual se da por terminado el proceso de instalación de SQL Server 2008 R2.


       Tipos numéricos: 

Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no. 

TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 

Bit ó Bool: un número entero que puede ser 0 ó 1 

SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. 

MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. 

Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.

BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. 

Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. 

xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 

Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena 
Tipo de Campo
Tamaño de Almacenamiento
TINYINT
1 byte
SMALLINT
2 bytes
MEDIUMINT
3 bytes
INT
4 bytes
INTEGER
4 bytes
BIGINT
8 bytes
FLOAT(X)
4 ú 8 bytes
FLOAT
4 bytes
DOUBLE
8 bytes
DOUBLE PRECISION
8 bytes
REAL
8 bytes
DECIMAL(M,D
M+2 bytes sí D > 0, M+1 bytes sí D = 0
NUMERIC(M,D)
M+2 bytes if D > 0, M+1 bytes if D = 0

2.  Tipos fecha: 

A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. 
Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia 

DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos 

TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo: 
Tamaño
Formato
14
AñoMesDiaHoraMinutoSegundo aaaammddhhmmss
12
AñoMesDiaHoraMinutoSegundo aammddhhmmss
8
AñoMesDia aaaammdd
6
AñoMesDia aammdd
4
AñoMes aamm
2
Año aa


Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS' 

Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos. 
Tipo de Campo
Tamaño de Almacenamiento
DATE
3 bytes
DATETIME
8 bytes
TIMESTAMP
4 bytes
TIME
3 bytes
YEAR
1 byte


3.  Tipos de cadena: 

Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. 

VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. 

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object) 

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. 

Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. 

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres. 

Blob y Text: un texto con un máximo de 65535 caracteres. 

MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. 

LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb. 

Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos 

Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores. 
Tipo de campo
Tamaño de Almacenamiento
CHAR(n)
n bytes
VARCHAR(n)
n +1 bytes
TINYBLOB, TINYTEXT
Longitud+1 bytes
BLOB, TEXT
Longitud +2 bytes
MEDIUMBLOB, MEDIUMTEXT
Longitud +3 bytes
LONGBLOB, LONGTEXT
Longitud +4 bytes
ENUM('value1','value2',...)
1 ó dos bytes dependiendo del número de valores
SET('value1','value2',...)
1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores


Diferencia de almacenamiento entre los tipos Char y VarChar 
Valor
CHAR(4)
Almace
namiento
VARCHAR(4)
Almace
namiento
''
''
4 bytes
"
1 byte
'ab'
'ab '
4 bytes
'ab'
3 bytes
'abcd'
'abcd'
4 bytes
'abcd'

'abcdefgh'
'abcd'
4 bytes
'abcd'
5 bytes






Bibliografía

1.       [1]Hernandez, M. J. (2013). Database Design for Mere Mortals®: A Hands-on Guide to Relational Database Design (3rd ed.). Ann Arbor, Michigan, Estados Unidos de América: Addison-Wesley Professional.

[2]Singh, S. K. (2011). Database Systems: Concepts, Design and Applications (2nd ed.). Noida, Uttar Pradesh, India: Pearson Education India.
 Recuperado el 1 de Junio de 2015

2.       [3http://mysql.softonic.com/ Recuperado el 1 de Junio de 2015
3.       [4] http://technet.microsoft.com/es-es/library/ms143506(v=sql.105).aspx.  Recuperado el 1 de Junio de 2015
4.       [5]http://patriciocerda.com/2010/05/sql-2008-r2-instalando-sql-server-2008-r2.html Recuperado el 1 de Junio de 2015