Objetos de la Base de Datos



Documentos relacionados
2- Creación de tablas y manejos de datos.

Procedimientos para agrupar y resumir datos

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Base de datos en Excel

Base de datos I Facultad de Ingeniería. Escuela de computación.

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

CONSULTAS BASICAS EN SQL SERVER

5- Uso de sentencias avanzadas

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

Trabajos de Ampliación. Bases de datos NoSQL.

A.1. Definiciones de datos en SQL

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

T12 Vistas y tablas temporales

Consultas con combinaciones

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Tipos de datos de campo disponibles en Access (MDB)

Bases de Datos Relacionales

Charla N 6: Utilidades de Consulta de datos.

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Nociones de performance

SQL (Structured Query Language)

Tablas y Campos Nuevos

Base de datos Procedimientos Almacenados y Funciones

Análisis de los datos

Curso SQL Nivel Avanzado 1. Miguel Jurado García

SENTENCIAS Y CONSULTAS EN SQL SERVER

Crear BD en. Isis Bonet Cruz, PhD

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

Comisión Nacional de Bancos y Seguros

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Mantenimiento Limpieza

La ventana de Microsoft Excel

Bases de datos relacionales y el modelo entidad-relación

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

COMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

Creación de tipos de datos y tablas

Formato para prácticas de laboratorio

Creación y administración de grupos de dominio

SIIGO Pyme. Informes de Saldos y Movimientos de Inventarios. Cartilla I

Práctico. Excel para la toma de decisiones. Ayudante : César Villalobos Luengo Profesora : Dra. Angélica Urrutia

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO

Colegio Salesiano Don Bosco Academia Reparación Y Soporte Técnico V Bachillerato Autor: Luis Orozco. Subneteo

Sub consultas avanzadas

Formularios. Formularios Diapositiva 1

MANUAL DE CS-ALMACENES

Guía de uso del Cloud Datacenter de acens

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

15 CORREO WEB CORREO WEB

28.- Manejo de los Feriados

BASES DE DATOS AVANZADAS Transacciones en MYSQL

INSTALACIÓN DEL MÓDULO... 3 CONFIGURACIÓN DEL MÓDULO... 4 ACTIVACIÓN DEL MÓDULO EN LA ADMINISTRACIÓN:... 4 CONFIGURACIÓN DEL MÓDULO:...

Resumen. Funcionamiento. Advertencia

Tutorial de Subneteo Clase A, B, C - Ejercicios de Subnetting CCNA 1

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Procedimiento para realizar la configuración de Internet Explorer y usar el Sistema de reservaciones Go! Res versión 4.x

Guía de implementación Softland en SQL Server Versión 1.0

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

Tecnología de la Información y la Comunicación. Base de datos. Consultas

2. ESTUDIO DE INDICES

PS.Vending Almacén Pocket PC

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!)

Operación Microsoft Access 97

1. DML. Las subconsultas

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Manual de instalación Actualizador masivo de Stocks y Precios

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

MANUAL DE FACTURACIÓN TOUCH SCREEN

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Tema: CREACIÓN DE TABLAS DE RDBMS (RELATIONAL DATA BASE MANAGEMENT SYSTEM).

A- CREAR COPIA FÍSICA Y HEREDAR REGISTRO DE CONFIGURACIÓN

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Entender y aprender el concepto de Índice en Visual FoxPro así como crear los índices necesarios para la aplicación que se está desarrollando.

Operación de Microsoft Word

Base de Datos Práctica 1.

WINDOWS : COPIAS DE SEGURIDAD

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

BASE DE DATOS TIPOS DE DATOS, VARIABLES, OPERADORES Y CONTROLES EN SQL SERVER

Toda base de datos relacional se basa en dos objetos

FICHERO DE AYUDA DEL PROGRAMA MEGAPRIMI

MANUAL DE USUARIO PANEL DE CONTROL Sistema para Administración del Portal Web.

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

USANDO SQL. EN BASE DE Ooo.

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Manual CMS Mobincube

Transcripción:

Objetos de la Base de Datos Todos los datos de una base de datos de Microsoft SQL Server 2005/8 están contenidos en objetos llamados tablas. Cada tabla representa algún tipo de objeto con significado para los usuarios. Por ejemplo, en una base de datos de una escuela podríamos encontrar una tabla de clases, una tabla de profesores y una tabla de alumnos. Las tablas de SQL Server tienen dos componentes principales: Columnas Cada columna representa algún atributo del objeto representado por la tabla, por ejemplo, una tabla de piezas tendría columnas para Id., color y peso. Rows Cada fila representa una única aparición del objeto representado por la tabla. Por ejemplo, la tabla de piezas tendría una fila por cada una de las piezas comercializadas por la empresa. 1

Objetos de la Base de Datos Como cada columna representa un atributo de un objeto, los datos de cada aparición de la columna son similares. Una de las propiedades de las columnas es su tipo de datos, que define el tipo de datos que la columna puede alojar. SQL Server tiene varios tipos de datos base que se pueden especificar para las columnas: Binary Bigint bit Char datetime decimal Float image Ent Money Nchar Ntext nvarchar Numérico Real smalldatetime smallint smallmoney sql_variant sysname Text timestamp tinyint varbinary varchar uniqueidentifier 2

Objetos de la Base de Datos Además, los usuarios pueden crear sus propios tipos de datos definidos por el usuario ejemplo: -- Crea un tipo de datos Cumpleaños que permite nulos EXEC sp_addtype cumpleaños, datetime,'null' GO -- Crea una tabla que utiliza el mismo tipo de datos CREATE TABLE empleado ( emp_id char(5), emp_first_nameemp_first_name char(30), emp_last_nameemp_last_name char(40), emp_birthdayemp_birthday cumpleaños ) 3

Objetos de la Base de Datos Aquí se puede observar los valores del nuevo tipo generado, a continuación se insertan datos en esta nueva tabla: insert into empleado values ('1','apellido1','apellido2','1776-7-4'); 4

Leemos los resultados: Objetos de la Base de Datos SELECT TOP 1000 [emp_id],[emp_first_nameemp_first_name],[emp_last_nameemp_last_name],[emp_birthdayemp_birthday] FROM [AdventureWorks].[dbo].[empleado] 5

Ejemplo: Objetos de la Base de Datos A la misma base de datos, se agregará otro tipo de datos, llamado imss, el cual debe ser tipo varchar y tener una longitud de 11 dígitos, la columna no puede ser NULL. Este tipo de dato después se agregará a la tabla empleado. EXEC sp_addtype IMSS, 'varchar(11)', 'NOT NULL'; GO Posteriormente agregaremos una columna llamada IMSS, la cual utilizará el mismo tipo de dato IMSS ALTER TABLE empleado ADD IMSS IMSS GO Finalmente se introducirán datos en la tabla empleado usando la columna IMSS: insert into empleado values('2','apellido1','apellido2','2-21-1923','12345678901') go 6

Revisemos los valores insertados: Select * from empleado; GO Objetos de la Base de Datos 7

Objetos de la Base de Datos Ejercicio: 1.- Crear 2 tipos de datos nuevos: telefono: el cual debe ser de tipo INT y no puede ser NULL descripcion: Este tipo de dato debe ser de tipo varchar y con longitud de 54 caracteres y puede ser NULL. 2.- Agregar a la tabla empleado dos columnas nuevas llamadas TELEFONO y descripción, cada una de su tipo correspondiente: TELEFONO Descripcion Columna telefono Tipo_de_dato descripcion 3.- Finalmente introducir 2 registros y mostrar la salida de la query: Select * from empleado; 8

Objetos de la Base de Datos Los tipos de datos definidos por el usuario hacen que la estructura de las tablas tenga mayor significado para los programadores y contribuyen a asegurar que las columnas que almacenan clases de datos similares tengan el mismo tipo de datos base Cuando se ha asignado un tipo de datos a una columna, todos los valores que se coloquen en la columna deben ser de ese tipo de datos. Las instrucciones SQL pueden especificar que se utilicen valores de distintos tipos de datos como valor de origen sólo si SQL Server puede convertir implícitamente el tipo de datos del valor de origen al tipo de datos de la columna. Por ejemplo, SQL Server admite la conversión implícita de valores int a decimal; por tanto, las instrucciones SQL pueden especificar valores int como el valor que se va a asignar a una columna decimal. 9

Entendiendo las Estadísticas en SQL SERVER Las estadísticas de SQL Server son información sobre la distribución de los datos existentes en las columnas de las tablas de nuestra base de datos. A través de las estadísticas, el servidor conoce como es la información de una columna, como por ejemplo, si varía mucho, si todos los datos son iguales y los niveles de variación que hay. 10

Entendiendo las Estadísticas en SQL SERVER Esta información la utiliza cuando nosotros le pedimos datos de ciertas tablas que cumplan con ciertas condiciones (select.. from.. where). Las condiciones que especificamos en el where de una consulta son analizadas por el optimizador de consultas para determinar cual es la forma más rápida de obtener la información requerida. 11

Entendiendo las Estadísticas en SQL SERVER Suponiendo que tenemos una consulta con varias condiciones en el where, el servidor examina las estadísticas asociadas a las columnas referenciadas en el where, como también los índices existentes en la tablas, y donde participan esas columnas. Para el caso de los índices, SQL Server maneja un conjunto de estadísticas de forma similar que para una columna de una tabla, independiente del tipo de índice (agrupado o no agrupado). Si hay un índice sobre la columna en que estamos buscando, en la mayoría de los casos lo usará (dependerá de las estadísticas y de otros factores) y en caso contrario, realizará un SCAN sobre la tabla o el índice agrupado (en caso de tener). 12

Cómo se consultan los catálogos internos? Algunas de las tablas a las que hacemos referencia en las consultas no necesariamente existen físicamente y muchas de ellas, o son vistas solamente o se construyen al momento de ejecutar Los objetos (tablas, procedimientos, etc.) rara vez están almacenados por el nombre que nosotros le damos, sino que por un identificador interno. Para obtener el identificador interno de un objeto, existe una función llamada object_id('objeto') que lo retorna, pudiendo usarse en una consulta o una instrucción set. El catálogo donde se almacena la información de los índices y estadísticas de una tabla se llama sysindexes. Para consultarlo se debe entonces filtrar la información por el id de la tabla HumanResources.Employee, como se muestra en la siguiente consulta: use AdventureWorks select * from sysindexes where id = object_id('humanresources.employee') go 13

Cómo se consultan los catálogos internos? Como resultado de esta consulta se obtiene lo siguiente: El resultado indica que para esta consulta, se han creado 7 índices con diferentes tamaños (dpages) 14

EJEMPLO 1 Se creará la siguiente tabla dentro de la base de datos AdventureWorks: use AdventureWorks CREATE TABLE [dbo].[test] ( [identificador] [int] IDENTITY (1, 1) NOT NULL, [nombre] [varchar] (50) NOT NULL, [apellido] [varchar] (50) NOT NULL, [direccion] [varchar] (50) NOT NULL, [fechanacimiento] [datetime] NOT NULL, [login] [varchar] (20) NOT NULL ) ON [PRIMARY] GO 15

Insertemos algunos registros en la base tabla de prueba, copiándolos de la tabla HumanResources.Employee en la base de la misma base de datos. use AdventureWorks --SET IDENTITY_INSERT Test ON --GO insert into Test (identificador, nombre, apellido, direccion, fechanacimiento) (select EmployeeID,NationalIDNumber,LoginID, Title, BirthDate from AdventureWorks.HumanResources.Employee) GO 16

Verificando que la tabla se encuentre con datos: 17

Ahora tenemos nuestra tabla, con un índice agrupado (cluster) en la columna de identidad, y con un cantidad de registros pequeña. Para el objetivo de nuestro ejemplo no es necesario tener gran cantidad de registros. Existen dos formas tradicionales de ver las estadísticas. Una de ellas es consultando el catálogo interno de SQL Server o la otra es a través de la interfaz gráfica asociada al plan de ejecución de una consulta. 18

Si realizamos ahora una consulta simple sobre la tabla buscando por la columna apellido, que sabemos no está considerada en ningún índice, se realizarán cambios sobre sysindexes. Por ejemplo, si la siguiente consulta retorna o no registros, las estadísticas serán creadas (por que nuestras base de datos está configurada para que las cree automáticamente). select * from test where apellido = 'gonzález' 19

Haciendo nuevamente la consulta sobre sysindexes, el resultado cambia, obteniéndose un nuevo registro. Se sabe que es una estadística ya que la cantidad de paginas (dpages = 0) y el grupo (groupid=0) son cero. 20

Ahora, si se quiere conocer que hay en la estadística, existe una instrucción de administración llamada dbcc showstatistics (tabla, indice estadística) para hacerlo. El resultado de la ejecución de dbcc show_statistics (test, Nombre_de_la_estadistica) se despliega ahora. El nombre de la estadística se muestra a continuación 21

22

El resultado se divide en tres grupos: El primer grupo nos entrega información general de la estadística. Acá encontramos el nombre, fecha de actualización, la cantidad de filas de la tabla (Rows = 290), la cantidad de filas que se consideraron para obtener la muestra (Rows Sampled = 290), la cantidad de pasos (steps = 188) (explicado más adelante), la densidad y el largo promedio de los datos de la columna en el caso de una estadística o el largo promedio de los datos del índice en caso de ser un índice. 23

El segundo grupo muestra datos específicos asociados a la columna. En este caso, la densidad (0.003448276), el largo promedio y la columna. Para el caso de un índice, presenta varias líneas con información y densidades para las columnas del índice, mostrando desde la primera columna hasta todas las columnas juntas. La densidad se obtiene de calcular la siguiente ecuación: Densidad = 1 / (cardinalidad de la llave del índice) 24

La cardinalidad de la llave corresponde a la cantidad de datos únicos de la columna o columnas. Lo importante es que la densidad sea el valor más chico posible. Mientras más pequeño, SQL Server obtendrá mejores resultados en las búsquedas. Por ejemplo, si la densidad de un índice es 0,3, significa que sólo se puede filtrar hasta un 30% de los datos con ese índice, resultado que puede considerarse muy malo. Un buen valor debe estar por debajo del 5%. En nuestro ejemplo, un densidad de 0.003448276 (3%) significa que en la tabla hay 1/0.0034 valores diferentes, o bien 294.11. La consulta select count(distinct(apellido)) from test confirma el resultado: 25

Recordemos que Distinct devuelve el número de valores diferentes dentro de una tabla El tercer bloque corresponde a la distribución de los datos de la columna en la tabla. Para un índice de varias columnas se considera sólo al valor de la primera columna. La información se segmenta por rangos (los pasos = 188), donde en cada línea se encuentran los valores correspondientes a los datos que están entre el RANGE_HI_KEY de esa línea y son menores a RANGE_HI_KEY de la línea de más abajo. 26

En el resultado desplegado antes, se obtiene que entre adventure-works\alan0 y adventure-works\alex0, no hay más valores (RANGE_ROWS = 0), hay 1 valor igual (EQ_ROWS = 1), no hay valores diferentes en el rango sin considerar el mismo valor administrador (DISTINCT_RANGE_ROWS = 0), y para finalizar, el promedio de filas (cantidad) por cada valor distinto en el rango es uno (AVG_RANGE_ROWS = 1). Corresponde notar que DISTINCT_RANGE_ROWS no incluye las filas que son iguales a RANGE_HI_KEY ya que estas están incluidas en EQ_ROWS. 27

Toda esta información le permite saber al optimizador de consultas como es la información de la columna o índice, sin necesidad de "tocar" los datos. Y por el mismo motivo, si queremos que el analizador siempre encuentre la mejor opción y el servidor responda al máximo, debemos proveer a éste de las estadísticas actualizadas. 28

Por lo tanto, podemos decir que las estadísticas pueden actualizarse o eliminarse manualmente a través de la interfaz gráfica o de consultas sql (drop statistics). Para borrar las estadísticas se utiliza el siguiente comando: use AdventureWorks DROP STATISTICS dbo.test._wa_sys_00000002_7abc33cd Además, conviene saber que SQL Server se encarga de actualizarlas y eliminarlas cuando estima que es necesario, pero también puede agregarse una tarea de mantención que las actualice cada cierto tiempo. 29

Observemos el comportamiento de las estadísticas gráficamente Se realiza la siguiente consulta: select * from Test where nombre='136%' Al final de la consulta se puede Observar la creación de nuevas estadísticas 30

De la misma manera se pueden generar estadísticas a la medida: create statistics Stats_apellido on dbo.test(apellido) with FULLSCAN 31

Se muestran los resultados: Estadísticas en SQL SERVER DBCC SHOW_statistics('dbo.Test','Stats_apellido') with histogram La configuración de las estadísticas automáticas se realizan de la siguiente manera: 32

Set Statistics IO, con esta opción podemos observar, cuantos scans fueron realizados, cuantas lecturas lógicas y físicas fueron realizadas y cuantas páginas fueron colocadas en cache anticipadamente: use AdventureWorks SET STATISTICS IO ON GO select COUNT(*) From dbo.test GO SET STATISTICS IO OFF Resultados: Table 'Test'. Scan count 1, logical reads 4, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 33

Set Statistics Time: Regresa tiempos concernientes a la query ejecutada: use AdventureWorks SET STATISTICS TIME ON GO select COUNT(*) From dbo.test GO SET STATISTICS TIME OFF Resultados SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. (1 row(s) affected) SQL Server Execution Times: CPU time = 0 ms, elapsed time = 11 ms. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. 34