DDL (Lenguaje de manipulación de datos) : permiten crear y definir nuevas bases de datos, campos e índices.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "DDL (Lenguaje de manipulación de datos) : permiten crear y definir nuevas bases de datos, campos e índices."

Transcripción

1 Bases de Datos SQL

2 Introducción El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado. 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.

3 Implementación

4 Comandos Existen varios tipos de comandos SQL: DDL (Lenguaje de manipulación de datos) : permiten crear y definir nuevas bases de datos, campos e índices. CREATE Crea nuevas tablas, campos e índices. DROP Elimina tablas e índices. ALTER Modifica las tablas agregando campos o cambiando la definición de los campos. RENAME TRUNCATE DML (Lenguaje de manipulación de datos): permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Lenguaje de consulta de datos (DQL) SELECT Consulta registros de la base de datos que satisfagan un criterio determinado. INSERT Carga lotes de datos en la base de datos en una única operación. UPDATE Modifica los valores de los campos y registros especificados. DELETE Elimina registros de una tabla de una base de datos. Instrucciones de control de transacciones (DTL), administran las modificaciones creadas por las instrucciones DML. ROLLBACK COMMIT DCL (Lenguaje de control de datos): Administran los derechos y restricciones de los usuarios. GRANT REVOKE

5 Clausulas Son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. Comando Descripción FROM Especifica la tabla de la cual se van a seleccionar los registros. WHERE Especifica las condiciones que deben reunir los registros que se van a seleccionar. SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000; GROUP BY Separa los registros seleccionados en grupos específicos. SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo HAVING Expresa la condición que debe satisfacer cada grupo. SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BO%; ORDER BY Ordena los registros seleccionados de acuerdo con un orden específico.

6 Operadores Operadores Lógicos AND Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50; OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo =100; NOT Negación lógica. Devuelve el valor contrario de la expresión. SELECT * FROM Empleados WHERE NOT Estado = 'Soltero';

7 Operadores Operadores de Comparación < Menor que > Mayor que < > Distinto de <= Menor ó Igual que >= Mayor ó Igual que BETWEEN Especifica un intervalo de valores. SELECT * FROM Pedidos WHERE CodPostal Between And 28999; LIKE Comparación de un modelo SELECT NombreCliente FROM Cliente WHERE (NombreCliente LIKE '%e%') In Especifica registros de una base de datos SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla');

8 Funciones para manejo de fechas y de conversión

9 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. AVG Calcula el promedio de los valores de un campo determinado. SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100; COUNT Devuelve el número de registros de la selección. SELECT Count(FechaEnvío) AS Total FROM Pedidos; SUM Devuelve la suma de todos los valores de un campo determinado. SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido; MAX Devuelve el valor más alto de un campo especificado. MIN Devuelve el valor más bajo de un campo especificado. SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'España'; SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'España';

10 Consultas de Selección Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable. La sintaxis básica de una consulta de selección es la siguiente: SELECT Campos FROM Tabla En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos. SELECT Nombre, Teléfono FROM Clientes Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes. Se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la cláusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre; SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre; SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC, Nombre ASC;

11 Consultas con Predicado El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son: ALL Devuelve todos los campos de la tabla. Si no se incluye ninguno de los predicados se asume ALL. No conveniente abusar de este predicado. SELECT ALL FROM Empleados; SELECT * FROM Empleados; TOP Devuelve un determinado número de registros de la tabla. SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

12 Consultas con Predicado DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente SELECT DISTINCT Apellido FROM Empleados; DISTINCROW Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados. SELECT DISTINCTROW Apellido FROM Empleados;

13 Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto. Para ello se tiene la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;

14 Consultas de Acción DELETE: Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. DELETE * FROM Empleados WHERE Cargo = 'Vendedor' INSERT INTO: Agrega un registro en una tabla. INSERT INTO Cliente(IdCliente, NombreCliente) VALUES ( 1044, César ) UPDATE: Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico. UPDATE Empleados SET Grado = 5 WHERE Grado = 2 UPDATE Empleados SET Salario = Salario * 1.1

15 Tipos de Indice UNIQUE Genera un índice de clave única. Lo que implica que los registros de la tabla no pueden contener el mismo valor en los campos indexados. PRIMARY KEY Genera un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal. FOREIGN KEY Genera un índice externo (toma como valor del índice campos contenidos en otras tablas). Si la clave principal de la tabla externa consta de más de un campo, se debe utilizar una definición de índice de múltiples campos, listando todos los campos de referencia, el nombre de la tabla externa, y los nombres de los campos referenciados en la tabla externa en el mismo orden que los campos de referencia listados.

16 Tipos de Datos Numéricos exactos bigint int smallint tinyint bit decimal numeric money smallmoney Numéricos aproximados Fecha y hora datetime smalldatetime Cadena de caracteres char text varchar Cadena de caracteres Unicode nchar Cadenas binarias Otros binary image varbinary cursor timestamp sql_variant uniqueidentifier xml float ntext real nvarchar

17 Muchas Gracias

18 SQL.(Structure Query Language) SQL es el lenguaje de consulta universal para bases de datos. Vamos a tratar los temas relacionados con SQL ANSI 92, que es el standar SQL, ya que luego existen variantes como T-SQL (Transact-SQL) y PL/SQL (Procedure Language / SQL). SQL proporciona métodos para definir la base datos, para manipular la información y para gestionar los permisos de acceso a dicha información. Para que un gestor de bases de datos sea considerado como relacional, debe soportar SQL, independientemente de las características particulares que dicho gestor pueda aportar. Conocer SQL es conocer las bases de datos, y todo su potencial. SQL es el lenguaje de consulta universal para bases de datos. Los mandatos de SQL se dividen en tres grandes grupos diferenciados, los cuales serán tratados por separado y que únicamente se presentan aquí a modo introductorio. DDL (Data Definition Language), es el encargado de la definición de Bases de Datos, tablas, vistas e índices entre otros. Son comandos propios de este lenguaje: CREATE TABLE CREATE INDEX CREATE VIEW CREATE SYNONYM DML (Data Manipulation Language), cuya misión es la manipulación de datos. A través de él podemos seleccionar, insertar, eliminar y actualizar datos. Es la parte que más frecuentemente utilizaremos, y que con ella se construyen las consultas. Son comandos propios de este lenguaje: SELECT UPDATE INSERT INSERT INTO DELETE FROM DCL (Data Control Laguage), encargado de la seguridad de la base de datos, en todo lo referente al control de accesos y privilegios entre los usuarios.

19 Tipos de datos. Son comandos propios de este lenguaje: GRANT REVOKE Componentes del lenguaje SQL. SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos de datos pueden ser numéricos (con o sin decimales), alfanuméricos, de fecha o booleanos (si o no). Según el gestor de base de datos que estemos utilizando los tipos de datos varían, pero se reducen básicamente a los expuestos anteriormente, aunque en la actualidad casi todos los gestores de bases de datos soportan un nuevo tipo, el BLOB (Binary Large Object), que es un tipo de datos especial destinado a almacenar archivos, imágenes... Dependiendo de cada gestor de bases de datos el nombre que se da a cada uno de estos tipos puede variar. Básicamente tenemos los siguientes tipos de datos. Numéricos Alfanuméricos Fecha Lógico BLOB Integer char(n) Date Bit Image Numeric(n.m) varchar(n,m) DateTime Text Decimal(n,m) Float Más detalladamente tenemos: Tipos de datos numéricos Tipo Definición Bytes Integer Valores enteros con signo. 4 Numeric(n,m) Números reales de hasta 18 dígitos (con decimales), donde n 5-17 representa el total de dígitos admitidos (normalmente denominado precisión) y m el número de posiciones decimales (escala). Decimal(n,m) Igual que el tipo numeric Float Número de coma flotante, este tipo de datos se suele utilizar para los valores en notación científica. 4-8 Tipos de datos alfanuméricos Tipo Definición Bytes char(n) Almacena de 1 a 255 caracteres alfanuméricos. Este valor viene dado por n, y es el tamaño utilizado en disco para almacenar dato.

20 Es decir si defino un campo como char(255), el tamaño real del campo será de 255, aunque el valor solo contenga 100. varchar(n) Igual que el tipo char, con la salvedad que varchar almacena únicamente los bytes que contenga el valor del campo. Nota: El tamaño del campo varía en función de cada base de datos, siendo 255 el valor standart. En realidad el tamaño viene delimitado por el tamaño de las páginas de datos, para SQL Server el límite está en 8000 bytes (8000 caracteres), siempre y cuando tengamos definido el tamaño de la página de datos a 8K Tipos de datos fecha Tipo Definición Bytes Date Almacena fechas, con día, mes y año. 8 Datetime Almacena fechas con fecha y hora 4 Nota: La aparición de los tipos de datos de fecha supuso una auténtica revolución el mundo de la bases de datos, en realidad, la base de datos almacena internamente números enteros, de ahí que el tamaño sea de 4 bytes y 8 bytes (2 enteros), pero aporta la validación del dato introducido. Tipos de datos lógicos Tipo Definición Bytes Bit Tipo bit. Almacena un 0 ó no cero, según las bases de datos será 1 1 bit o -1. Se aplica la lógica booleana, 0 es falso y no cero verdadero. Tipos de datos BLOB Tipo Definición Bytes Image Almacena imágenes en formato binario, hasta un máximo de 2 Gb 0-2Gb de tamaño. Text Almacena texto en formato binario, hasta un máximo de 2 Gb de 0-2Gb tamaño. Operadores Los operadores se pueden definir como combinaciones de caracteres que se utilizan tanto para realizar asignaciones como comparaciones entre datos. Los operadores se dividen en aritméticos, relacionales, lógicos, y concatenación. Operadores SQL Aritméticos + Suma - Resta * Producto / División ** ^ Exponenciación

21 Relacionales < Menor que <= Menor o igual que > Mayor que >= Mayor o igual que <>!= Distinto!< No menor que!> No mayor que Lógicos AND Los operadores lógicos permiten comparar expresiones lógicas OR NOT devolviendo siempre un valor verdadero o falso. Los operadores lógicos se evalúan de izquierda a derecha. Concatenación + Se emplea para unir datos de tipo alfanumérico. Palabras Clave Las palabras clave son identificadores con un significado especial para SQL, por lo que no pueden ser utilizadas para otro propósito distinto al que han sido pensadas. SQL dispone de muy pocas órdenes, pero de múltiples palabras clave, lo que le convierten en un lenguaje sencillo pero tremendamente potente para llevar a cabo su función. Palabras Clave ALL AND ANY ASC AVG BEGIN BY CHAR CHECK CLOSE COUNT COMMIT CREATE CURSOR DECIMAL DECLARE DELETE DESC DISTINCT DEFAULT EXISTS FETCH FLOAT FOR FROM GRANT GROUP HAVING IN INDEX INSERT INTEGER INTO LIKE MAX MIN NOT NUMERIC ON OPEN OR ORDER REVOKE ROLLBACK SELECT SET SUM TABLE UNION UNIQUE UPDATE USER VALUES VIEW WHERE WITH Funciones Agregadas Las funciones agregadas proporcionan a SQL utilidades de cálculo sobre los datos de las tablas.

22 Estas funciones se incorporan en las consultas SELECT y retornan un único valor al operar sobre un grupo de registros. Las funciones agregadas son. Funciones Agregadas MAX() Devuelve el valor máximo. MIN() Devuelve el valor mínimo. SUM() Devuelve el valor de la suma de los valores del campo. COUNT() Devuelve el número de filas que cumplen la condición AVG() Devuelve el promedia de los valores del campo Predicados Los predicados son condiciones que se indican en cláusula WHERE de una consulta SQL. La siguiente tabla ilustra los predicados de SQL. Predicados SQL BETWEEN...AND Comprueba que al valor esta dentro de un intervalo LIKE Compara un campo con una cadena alfanumérica. LIKE admite el uso de caracteres comodines ALL Señala a todos los elementos de la selección de la consulta ANY Indica que la condición se cumplirá si la comparación es cierta para al menos un elemento del conjunto. EXISTS Devuelve un valor verdadero si el resultado de una subconsulta devuelve resultados. IN Comprueba si un campo se encuentra dentro de un determinado rango. El rango puede ser una sentencia SELECT. No se preocupe si no entiende el significado de alguno de los términos que hemos presentado aquí, pronto veremos ejemplos que nos aclararán las cosas, de momento nos vale con saber que existen. Tablas Lenguaje de Definición de datos El lenguaje de definición de datos (DDL, Data Definition Language) es el encargado de permitir la descripción de los objetos que forman una base de datos. El lenguaje de definición de datos le va a permitir llevar a cabo las siguientes acciones:

23 Creación de tablas, índices y vistas. Modificación de las estructura de tablas, índices y vistas. Supresión de tablas, índices y vistas. Pero antes de continuar vamos a comentar la nomenclatura que emplearemos, si tiene algún conocimiento de programación le resultará familiar. Nomenclatura La sintaxis empleada para la sentencias en las diferentes páginas está basada en la notación EBNF. Vamos a ver el significado de algunos símbolos. Símbolo Significado < > Encierran parámetros de una orden que el usuario debe sustituir al escribir dicha orden por los valores que queramos dar a los parámetros. [ ] Indica que su contenido es opcional. { } Indica que su contenido puede repetirse una o más veces. Separa expresiones. Indica que puede emplearse una u otra expresión pero no más de una a la vez. Además las palabras clave aparecen en mayúscula negrita y los argumentos en minúscula cursiva. La sintaxis de una sentencia tendrá un aspecto como este: CREATE TABLE <nombre_tabla> ( <nombre_campo> <tipo_datos(tamaño)>, { <nombre_campo> <tipo_datos(tamaño)>} ; Creación de tablas En el modelo relacional la información de una base de datos se almacena en tablas. Para saber más sobre las tablas y como se almacena la información el ellas vea la introducción a bases de datos.

24 La creación de la base de datos debe comenzar por con la creación de una o más tablas. Para ello utilizaremos la sentencia CREATE TABLE. La sintaxis de la sentencia es la siguiente: CREATE TABLE <nombre_tabla> ( <nombre_campo> <tipo_datos(tamaño)> [null not null] [default <valor_por_defecto>] {,<nombre_campo> <tipo_datos(tamaño)> [null not null] [default <valor_por_defecto>]} [, constraint <nombre> primary key (<nombre_campo>[,...n ])] [, constraint <nombre> foreign key (<nombre_campo>[,...n ]) references <tabla_referenciada> ( <nombre_campo> [,...n ] ) ] ) ; Ejemplo: Vamos a simular una base de datos para un negocio de alquiler de coches, por lo que vamos a empezar creando una tabla para almacenar los coches que tenemos. CREATE TABLE tcoches ( matricula char(8) not null, marca varchar(255) null, modelo varchar(255) null, color varchar(255) null, numero_kilometros numeric(14,2) null default 0, constraint PK_Coches primary key (matricula) ) ; En este ejemplo creamos una tabla llamada tcoches con cinco campos (matricula, marca, modelo, color, numero_kilometros). Nótese que se han omitido las tildes y los espacios a propósito. Nunca cree campos que contengan caracteres específicos de un idioma (tildes, eñes,...) ni espacios. Las claves primarias y externas (o foráneas) se pueden implementar directamente a través de la instrucción CREATE TABLE, o bien se pueden agregar a través de sentencias ALTER TABLE.

25 Cada gestor de bases de datos implementa distintas opciones para la instrucción CREATE TABLE, pudiendo especificarse gran cantidad de parámetros y pudiendo variar el nombre que damos a los tipos de datos, pero la sintaxis standart es la que hemos mostrado aquí. Si queremos conocer más acerca de las opciones de CREATE TABLE lo mejor es recurrir a la documentación de nuestro gestor de base de datos. Modificación de tablas En ocasiones puede ser necesario modificar la estructura de una tabla, comúnmente para añadir un campo o restricción. Para ello disponemos de la instrucción ALTER TABLE. ALTER TABLE nos va a permitir: Añadir campos a la estructura inicial de una tabla. Añadir restricciones y referencias. Para añadir un campo a una tabla existente: ALTER TABLE <nombre_tabla> ADD <nombre_campo> <tipo_datos(tamaño)> [null not null] [default <valor_por_defecto>] {, <nombre_campo> <tipo_datos(tamaño)> [null not null] [default <valor_por_defecto>]} ; Ejemplo: ALTER TABLE tcoches ADD num_plazas integer null default 5; En este ejemplo añadimos el campo num_plazas a la tabla tcoches que habíamos creado en el apartado anterior. Para añadir una clave primaria vamos a crear una tabla de cliente y le añadiremos la clave primaria ejecutando una sentencia alter table: CREATE TABLE tclientes ( codigo integer not null, nombre varchar(255) not null, apellidos varchar(255) null, nif varchar(10) null,

26 telefono varchar(9) null, movil varchar(9) null ); ALTER TABLE tclientes ADD CONSTRAINT PK_tClientes primary key (codigo); Creamos la tabla clientes y le añadimos una restricción primary key a la que damos el nombre PK_tClientes en el campo código. Solo podemos modificar una única tabla a la vez con ALTER TABLE, para modificar más de una tabla debemos ejecutar una sentencia ALTER TABLE por tabla. Para añadir una clave externa (o foránea) necesitamos una tercera tabla en nuestra estructura. Por un lado tenemos la tabla tcoches y la tabla tclientes, ahora vamos a crear la tabla talquileres que será la encargada de "decirnos" que clientes han alquilado un coche. CREATE TABLE talquileres ( codigo integer not null, codigo_cliente integer not null, matricula char(8) not null, fx_alquiler datetime not null, fx_devolucion datetime null ); ALTER TABLE talquileres ADD CONSTRAINT PK_tAlquileres primary key (codigo), CONSTRAINT FK_Clientes foreign key (codigo_cliente) references tclientes (Codigo), CONSTRAINT FK_Coches foreign key (matricula) references tcoches (matricula); Bien, en este código creamos la tabla talquileres, y luego mediante una sentencia ALTER TABLE añadimos una clave primaria llamada PK_tAlquileres en el campo codigo, una clave externa llamada FK_Clientes referenciada al codigo de la tabla tclientes, y por último otra clave externa llamada FK_Coches referenciada al campo matricula de la tabla tcoches. Nota: Cuando creamos una clave externa el campo referenciado y el que sirve de referencia deben ser del mismo tipo de datos. Si somos observadores nos daremos cuenta que los campos que sirven de referencia a las claves foráneas son las claves primarias de sus tablas. Sólo podemos crear claves externas que referencien claves primarias.

27 Al igual que ocurría con la sentencia CREATE TABLE cada gestor de bases de datos implementa sus mejoras, siendo la mejor forma de conocerlas recurrir a la documentación del gestor de bases de datos. En principio, para borrar columnas de una tabla debemos: 1. Crear una tabla con la nueva estructura. 2. Transferir los datos 3. Borrar la tabla original. y digo en principio, porque como ya hemos comentado según el gestor de bases de datos con el que trabajemos podremos realizar esta tarea a través de una sentencia ALTER TABLE. Eliminación de tablas. Podemos eliminar una tabla de una base de datos mediante la instruccion DROP TABLE. DROP TABLE <nombre_tabla>; La instrucción DROP TABLE elimina de forma permanente la tabla y los datos en ella contenida. Si intentamos eliminar una tabla que tenga registros relacionados a través de una clave externa la instrucción DROP TABLE fallará por integridad referencial. Cuando eliminamos una tabla eliminamos también sus índices. Definición de Índices Un índice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a través de un campo (o campos clave). Un índice permite un acceso mucho más rápido a los datos. Introducción a los índices. Para entender lo que es un índice debemos saber primero como se almacena la información internamente en las tablas de una base de datos. Cada tabla se divide en páginas de datos, imaginemos un libro, podríamos escribirlo en "una sola hoja enorme" al estilo pergamino egipcio, o bien en páginas a las que podemos acceder rápidamente a través de un índice. Está idea es la que se aplica en el mundo de las bases de datos, la información esta guardada en una tabla (el libro) que tiene muchas hojas de datos (las páginas del libro), con un índice en el que podemos buscar la información que nos interesa. Si queremos buscar la palabra zapato en un diccionario, qué hacemos?

28 Leemos todo el diccionario hasta encontrar la palabra, con lo que nos habremos leído el diccionario enterito ( seguro que aprenderíamos un montón!) Buscamos en el índice en que página está la letra z, y es en esa página donde buscamos. Ni que decir tiene que la opción dos es la correcta, y es de este modo como se utiliza un índice en las bases de datos, se define el índice a través de un campo (o campos) y es a partir de este punto desde donde se busca. Los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Este es un aspecto muy importante de cara al rendimiento de las operaciones de escritura, ya que además de escribir los datos en la tabla se escribirán también en el índice. Un número elevado de índices hará más lentas estas operaciones. Sin embargo, salvo casos excepcionales, el beneficio que aportan los índices compensa (de largo) esta penalización. Creación de índices La creación de índices, como ya hemos visto, permite acelerar las consultas que se realizan en la base de datos. Las sentencias de SQL para manipular índices son: CREATE INDEX; DROP INDEX; La sintaxis para la creación de indices es la siguiente: CREATE [UNIQUE] INDEX <nombre_indice> ON <nombre_tabla>( <nombre_campo> [ASC DESC] {,<nombre_campo> [ASC DESC]}) ); La palabra clave UNIQUE especifica que no pueden existir claves duplicadas en el índice. ASC DESC especifican el criterio de ordenación elegido, ascendente o descendente, por defecto es ascendente. Ejemplo: En el apartado dedicado a la definición de tablas creamos la tabla tclientes, este ejemplo crea un índice único en el campo NIF. Esto nos permitirá buscar mucho más rápido por el campo NIF y nos asegurará que no tengamos dos NIF iguales. CREATE UNIQUE INDEX UIX_CLIENTES_NIF ON tclientes (NIF);

29 Las claves primarias son índices. Los nombres de los índices deben ser únicos. Para eliminar un índice debemos emplear la sentencia DROP INDEX. DROP INDEX <nombre_tabla>.<nombre_indice>; Ejemplo: Para eliminar el índice creado anteriormente. DROP INDEX tclientes.uix_clientes_nif; Vistas En el modelo de datos relacional la forma de guardar la información no es la mejor para ver los datos Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. Dos son las principales razones por las que podemos crear vistas. Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla. Comodidad, como hemos dicho el modelo relacional no es el más cómodo para visualizar los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea. Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista. Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí. Creación de vistas. Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida.

30 CREATE VIEW <nombre_vista> AS (<sentencia_select>); Ejemplo:Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y apellidos del cliente en lugar de su código. CREATE VIEW valquileres AS ( SELECT nombre, apellidos, matricula FROM talquileres, tclientes WHERE ( talquileres.codigo_cliente = tclientes.codigo ) ) Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo haciamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista. ALTER VIEW valquileres AS ( SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion FROM talquileres, tclientes WHERE ( talquileres.codigo_cliente = tclientes.codigo ) ) Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se uitlizaría: DROP VIEW valquileres;

31 Una vista se consulta como si fuese una tabla. Sinónimos Un sinónimo es un nombre alternativo que identifica una tabla en la base de datos. Con un sinónimo se pretende normalmente simplificar el nombre original de la tabla, aunque también se suelen utilizar para evitar tener que escribir el nombre del propietario de la tabla. No todas las bases de datos soportan los sinónimos. Para crear un sinónimo hay que utilizar la sentencia CREATE SYNONYM especificando el nombre que deseamos utilizar como sinónimo y la tabla para la que estamos creando el sinónimo. CREATE SYNONYM <nombre_sinonimo> FOR <nombre_tabla>; Ejemplo: El siguiente ejemplo crea el sinónimo Coches para la tabla tcoches. CREATE SYNONYM Coches FOR tcoches; Para eliminar el sinónimo creado debemos emplear la sentencia DROP SYNONYM. DROP SYNONYM Coches; Consulta de datos. Lenguaje de manipulación de datos El proceso más impórtate que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada serviría una base de datos si no pudiéramos consultarla. Es además la operación que efectuaremos con mayor frecuencia. Para consultar la información SQL pone a nuestra disposición la sentencia SELECT. La sentencia SELECT La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos.

32 El formato de la sentencia select es: SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> <nombre_vista> [{,<nombre_tabla> <nombre_vista>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] [ORDER BY <nombre_campo> <indice_campo> [ASC DESC] [{,<nombre_campo> <indice_campo> [ASC DESC ]}]] Veamos por partes que quiere decir cada una de las partes que conforman la sentencia. SELECT Significado Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de selección. ALL Indica que queremos seleccionar todos los valores. Es el valor por defecto y no suele especificarse casi nunca. DISTINCT FROM Indica que queremos seleccionar sólo los valores distintos. Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE. WHERE Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admiten los operadores lógicos AND y OR. GROUP BY Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas. HAVING Especifica una condición que debe cumplirse para los datos. Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta.

33 Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condicion debe estar referida a los campos contenidos en ella. ORDER BY Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC. Para formular una consulta a la tabla tcoches (creada en el capítulo de tablas) y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los datos serán devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tcoches ORDER BY marca,modelo; La palabra clave FROM indica que los datos serán recuperados de la tabla tcoches. Podríamos haber especificado más de una tabla, pero esto se verá en el apartado de consultas combinadas. También podríamos haber simplificado la consulta a través del uso del comodín de campos, el asterisco "*". SELECT * FROM tcoches ORDER BY marca,modelo; El uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla. La cláusula WHERE La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente no deseamos obtener toda la información existente en la tabla,

34 sino que queremos obtener sólo la información que nos resulte útil es ese momento. La cláusula WHERE filtra los datos antes de ser devueltos por la consulta. En nuestro ejemplo, si queremos consultar un coche en concreto debemos agregar una cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo, para que la consulta devuelva sólo los datos del coche con matrícula M-1525-ZA debemos ejecutar la siguiente sentencia: SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tcoches WHERE matricula = 'M-1525-ZA'; Cuando en una cláusula where queremos incluir un tipo texto, debemos incluir el valor entre comillas simples. Además, podemos utilizar tantas condiciones como queramos, utilizando los operadores lógicos AND y OR. El siguiente ejemplo muestra una consulta que devolverá los coches cuyas matriculas sean M-1525-ZA o bien M-2566-AA. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tcoches WHERE matricula = 'M-1525-ZA' OR matricula = 'M-2566-AA' ; Además una condición WHERE puede ser negada a través del operador lógico NOT. La siguiente consulta devolverá todos los datos de la tabla tcohes menos el que tenga matrícula M-1525-ZA. SELECT matricula, marca, modelo, color, numero_kilometros,

35 num_plazas FROM tcoches WHERE NOT matricula = 'M-1525-ZA' ; Podemos también obtener las diferentes marcas y modelos de coches ejecutando la consulta. SELECT DISTINCT marca, modelo FROM tcoches; Para ver los valores distintos. En el caso anterior la palabra clave DISTINCT indica que sólo queremos os valores distintos del par formado por los campos marca y modelo. La cláusula ORDER BY Como ya hemos visto en los ejemplos anteriores podemos especificar el orden en el que serán devueltos los datos a través de la cláusula ORDER BY. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tcoches ORDER BY marca ASC,modelo DESC; Como podemos ver en el ejemplo podemos especificar la ordenación ascendente o descendente a través de las palabras clave ASC y DESC. La ordenación depende del tipo de datos que esté definido en la columna, de forma que un campo numérico será ordenado como tal, y un alfanumérico se ordenará de la A a la Z, aunque su contenido sea numérico. De esta forma el valor 100 se devuelve antes que el 11. También podemos especificar el en la cláusula ORDER BY el índice numérico del campo dentro de la sentencia SELECT para la ordenación, el siguiente ejemplo ordenaría los datos por el campo marca, ya que aparece en segundo lugar dentro de la lista de campos que componen la SELECT. SELECT matricula, marca, modelo,

36 color, numero_kilometros, num_plazas FROM tcoches ORDER BY 2; El resto de opciones que podemos especificar al construir sentencias SELECT se irán presentando en los siguientes capítulos de este tutorial. Insertar datos. Hasta ahora hemos visto como se almacenan los datos en una base de datos y como consultar esos datos almacenados, pero no hemos visto como almacenar dichos datos. Para almacenar datos en una base de datos debemos insertar filas en las tablas. Para ellos SQL pone a nuestra disposición la sentencia INSERT. Inserción de filas El proceso de inserción de filas consiste en añadir a una tabla una o más filas y en cada fila todos o parte de sus campos. Podemos distinguir dos formas de insertar filas: Inserción individual de filas. Inserción múltiple de filas. La sintaxis de la sentencia INSERT es diferente según cual sea nuestro propósito. Sólo podremos omitir un campo al efectuar una inserción cuando este acepte valores nulos. Inserción individual de filas Para realizar la inserción individual de filas SQL posee la instrucción INSERT INTO. La inserción individual de filas es la que más comúnmente utilizaremos. Su sintaxis es la siguiente: INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] values (<valor1>,<valor2>,...);

37 Como se puede observar la sentencia tiene dos partes claramente diferenciadas, por un lado la propia INSERT INTO seguida de la lista de campos en los que queremos insertar los datos, y por otro la lista de valores que queremos insertar en los campos. La mejor forma de ver esto es a través de un ejemplo. INSERT INTO tcoches (matricula, marca, modelo, color, numero_kilometros) values ('M1111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE', 78000); Nota: Hemos utilizado el color rojo para los datos de tipo texto, entrecomillados con la comilla simple, y el azul para los numéricos. Con esta sentencia INSERT creamos un registro en la tabla tcoches con los valores especificados, es decir, la matricula tendrá el valor M-1111-CA, la marca será RENAULT y así sucesivamente. Qué ocurriría si ya existiera un coche con la matrícula M-1111-CA? Se producirá un error, porque hemos definido la clave primaria en el campo matricula, y como hemos visto la clave primaria debe ser única. Si omitimos algún par " campo-valor " en la sentencia INSERT, pueden ocurrir varias cosas: Que se produzca un error, si el campo no acepta valores nulos. Que se grave el registro y se deje nulo el campo, cuando el campo acepte valores nulos. Que se grave el registro y se tome el valor por defecto, cuando el campo tenga definido un valor por defecto. Que hacer en cada momento dependerá del programa. Por ejemplo, la siguiente sentencia creará un registro en la tabla tcoches con el campo numero_kilometros cero, ya que este es su valor por defecto. INSERT INTO tcoches (matricula,

38 marca, modelo, color) values ('M1111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE'); Inserción múltiple de filas La sentencia INSERT permite tambien insertar varios registros en una tabla. Pare ello se utiliza una combinación de la sentencia INSERT junto a una sentencia SELECT. El resultado es que se insertan todos los registros devueltos por la consulta. INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] SELECT [(<campo1>[,<campo2>,...])] FROM <nombre_tabla_origen>; Para poder utilizar la inserción múltiple de filas se deben cumplir las siguientes normas: La lista de campos de las sentencias insert y select deben coincidir en número y tipo de datos. Ninguna de las filas devueltas por la consulta debe infringir las reglas de integridad de la tabla en la que vayamos a realizar la inserción. Pongamos un ejemplo, vamos a crear una tabla con las diferentes marcas que tenemos en la base de datos. La sentencia SQL para crear la tabla es la siguiente: CREATE TABLE tmarcas ( codigo integer not null identity(1,1), marca varchar(255), constraint PK_Marcas primary key (codigo) ); Nota: Hemos incluido la función identity para el campo código, esta función es propia de SQL Server e indica que el código se genera automáticamente cada vez que se inserta un registro con un valor auto numérico. Prácticamente todos los gestores de bases de datos

39 dan la opción del campo auto numérico o incremental, si bien el modo varias. Para SQL Server utilizaremos la función identity, para ORACLE las secuencias... Una vez que tenemos creada la tabla de marcas vamos a insertar otro par de registros en la tabla de coches, para ello utilizamos una sentencia insert into para una única fila. INSERT INTO tcoches (matricula, marca, modelo, color) values ('M2233FH', 'SEAT', 'LEON FR', 'ROJO'); INSERT INTO tcoches (matricula, marca, modelo, color) values ('M1332FY', 'FORD', 'FIESTA', 'GRIS PLATA'); Ahora tenemos tres marcas diferentes en la tabla tcoches, y queremos insertarlas en la tabla de marcas, para ello podemos realizar tres inserciones individuales, pero que pasaría si no supiéramos de antemano el número de marcas? y si fueran unas cincuenta marcas?. Nos podríamos pasar el día entero escribiendo sentencias insert into. Afortunadamente podemos realizar una inserción múltiple del siguiente modo: INSERT INTO tmarcas (marca) SELECT DISTINCT marca FROM tcoches;

40 Como resultado obtenemos un registro en la tabla tmarcas por cada marca de la tabla tcoches. El campo código se ha generado automáticamente ya que está definido como identidad. CODIGO MARCA 1 FORD 2 RENAULT 3 SEAT Demoños cuenta de que el orden de generación no ha sido el mismo que el de inserción, sino que se ha aplicado el orden en el que han sido devueltos los datos por la sentencia SELECT. Ahora deberíamos cambiar los datos de la tabla tcoches, para guardar el código de la marca en lugar de su descripción, pero para ello necesitamos saber cómo modificar un dato grabado... Es momento de pasar al siguiente punto, la actualización de datos. Borrado de datos. La sentencia DELETE. Para borrar datos de una tabla, debemos utilizar la sentencia DELETE. La sintaxis de la sentencia DELETE es la siguiente: DELETE FROM <nombre_tabla> [ WHERE <condicion>]; El siguiente ejemplo ilustra el uso de la sentencia DELETE. Es buena idea especificar en la sentencia WHERE los campos que forman la clave primaria de la tabla para evitar borrar datos que no queramos eliminar. DELETE FROM tcoches WHERE marca = 'SEAT'; La sintaxis de DELETE varia en Access, siendo necesario el uso del comodín *. DELETE * FROM <tcoches> Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las siguientes consideraciones: Solo podemos borrar datos de una única tabla.

41 Cuando borramos datos de una vista, los estamos borrando también de la tabla. Las vistas son solo una forma de ver los datos, no una copia. Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la sentencia DELETE fallará. La sentencia TRUNCATE Para realizar un borrado completo de tabla debemos considerar la posibilidad de utilizar la sentencia TRUNCATE, mucho más rápida que DELETE. La sintaxis de la sentencia TRUNCATE es la siguiente: TRUNCATE TABLE <nombre_tabla>; El siguiente ejemplo muestra el uso de la sentencia TRUNCATE. TRUNCATE TABLE tcoches; Cuando trabajemos con la sentencia TRUNCATE debemos tener en cuenta las siguientes consideraciones. La sentencia TRUNCATE no es transaccional. No se puede deshacer. La sentencia TRUNCATE no admite clausula WHERE. Borra toda la tabla. No todos los gestores de bases de datos admiten la sentencia TRUNCATE. Actualización de datos. La sentencia UPDATE. Para la actualización de datos SQL dispone de la sentencia UPDATE. La sentencia UPDATE permite la actualización de uno o varios registros de una única tabla. La sintaxis de la sentencia UPDATE es la siguiente UPDATE <nombre_tabla> SET <campo1> = <valor1> {[,<campo2> = <valor2>,...,<campon> = <valorn>]} [ WHERE <condicion>]; Las siguientes sentencias actualizan los datos de la tabla tcoches con los valores de la tabla tmarca obtenidos anteriormente en la página dedicada a la inserción de datos.

42 UPDATE tcoches SET marca = '1' WHERE marca = 'FORD'; UPDATE tcoches SET marca = '2' WHERE marca = 'RENAULT'; UPDATE tcoches SET marca = '3' WHERE marca = 'SEAT'; Nótese que los valores para el campo marca aparecen entrecomillados, ya que es un campo de tipo varchar. Los valores con los que actualicemos los datos deben ser del tipo del campo. Un aspecto a tener en cuenta es que los campos que forman la primary key de una tabla sólo se podrán modificar si los registros no están referenciados en ninguna otra tabla. En nuestro caso sólo podremos modificar la matrícula de un coche si no tiene registros asociados en la tabla talquileres. Esto puede causar problemas, ya que podríamos habernos equivocado al dar de alta el coche en la tabla tcoches y detectar el error después de alquilar el coche. En tal caso tendríamos dar de alta un nuevo coche con la matrícula correcta, actualizar los registros de la tabla alquileres y por último borrar el registro erróneo de la tabla tcoches. Este proceso puede ser bastante complicado en el caso de que existirán más relaciones con la tabla. Se podría considerar que la clave primaria de la tabla está mal definida y que la matrícula no debe ser el elemento que identifique el coche. Una alternativa seria crear un código auto numérico para la tabla tcoches que realizará las veces de clave primaria y crear un índice único para la matrícula, este diseño también tiene sus "pegas", por lo que debemos decidir que modelo utilizar, y seleccionar las claves primarias con sumo cuidado. Uso de subconsultas con UPDATE El uso de subconsultas es una técnica avanzada de consulta que veremos con detalle más adelante, pero que tratamos aquí de forma introductoria. Hasta ahora hemos actualizado los datos con valores que conocemos de antemano, pero qué ocurre cuando esos datos deben tomarse de otra tabla de la base de datos? Podríamos diseñar un programa que recorriera toda la tabla y buscará el valor adecuado para cada registro y lo actualizase. Sin duda es una solución, y en ocasiones casi la única, pero es una solución cara y compleja que además exige que conozcamos algún otro lenguaje de programación. Para estos casos podemos utilizar subconsultas con la sentencia UPDATE.

43 La sintaxis es la siguiente: UPDATE <nombre_tabla> SET <campo1> = <valor1> <subconsulta1> {[,<campo2> = <valor2> <subconsulta2>,..., <campon> = <valorn> <subconsultan>]} [ WHERE <condicion>]; Como puede verse la sintaxis es prácticamente igual a la sintaxis de la sentencia UPDATE, con la salvedad de que podemos utilizar subconsultas en lugar de valores al asignar los campos. De forma genérica podemos decir que las subconsultas son consultas SELECT incluidas dentro de otra sentencia SQL. Las siguientes sentencias UPDATE son equivalentes: Utilizando sentencias UPDATE normales: UPDATE tcoches SET marca = '1' WHERE marca = 'FORD'; UPDATE tcoches SET marca = '2' WHERE marca = 'RENAULT'; UPDATE tcoches SET marca = '3' WHERE marca = 'SEAT'; Utilizando sentencias UPDATE combinadas con subconsultas: UPDATE tcoches SET marca = (SELECT CODIGO FROM tmarcas WHERE tmarcas.marca = tcoches.marca ) WHERE marca IN ('FORD','RENAULT','SEAT'); Por cada registro de la tabla tcoches se ejecutará la subconsulta, actualizando el campo marca al valor del código de la marca en la tabla tmarcas. El uso de subconsultas para actualizar datos tiene algunas limitaciones: La subconsulta sólo puede devolver un único campo. La subconsulta sólo puede devolver un sólo registro.

44 El tipo de datos devuelto por la subconsulta debe ser del mismo tipo que el campo al que estamos asignando el valor. No todos los sistemas de bases de datos permiten usar subconsultas para actualizar datos (Access) aunque si una buena parte de ellos (ORACLE, SQL Server, Sybase...) Pero en nuestro ejemplo el campo código de la tabla tmarcas es numérico y el campo marca de la tabla tcoches es texto. Por qué funciona? Muy fácil, el motor de la base de datos es capaz de convertir el valor numérico a un valor texto de forma automática, si bien esta es una excepción. Ahora que ya tenemos modificado el valor de la marca de los registros, es conveniente modificar su tipo de datos y crear una foreign key contra la tabla tmarcas. Para ello ejecutaremos las siguientes sentencias. ALTER TABLE tcoches alter column marca int not null; La opción alter column es propia de SQL Server. Para modificar el tipo de datos de una tabla debemos consultar la ayuda del gestor de bases de datos. ALTER TABLE tcoches add constraint FK_Coches_Marcas foreign key (marca) references tmarcas (codigo); Si no recuerda como modificar tablas o crear foreing key. Consultas combinadas. JOINS Consultas combinadas. Habitualmente cuando necesitamos recuperar la información de una base de datos nos encontramos con que dicha información se encuentra repartida en varias tablas, referenciadas a través de varios códigos. De este modo si tuviéramos una tabla de ventas con un campo cliente, dicho campo contendría el código del cliente de la tabla de cliente. Sin embargo está forma de almacenar la información no resulta muy útil a la hora de consultar los datos. SQL nos proporciona una forma fácil de mostrar la información repartida en varias tablas, las consultas combinadas o JOINS. Las consultas combinadas pueden ser de tres tipos: Combinación interna Combinación externa Uniones

45 Combinación interna. La combinación interna nos permite mostrar los datos de dos o más tablas a través de una condición WHERE. Si recordamos los ejemplos de los capítulos anteriores tenemos una tabla de coches, en la que tenemos referenciada la marca a través del código de marca. Para realizar la consulta combinada entre estas dos tablas debemos escribir una consulta SELECT en cuya cláusula FROM escribiremos el nombre de las dos tablas, separados por comas, y una condición WHERE que obligue a que el código de marca de la tabla de coches sea igual al código de la tabla de marcas. Lo más sencillo es ver un ejemplo directamente: SELECT tcoches.matricula, tmarcas.marca, tcoches.modelo, tcoches.color, tcoches.numero_kilometros, tcoches.num_plazas FROM tcoches, tmarcas WHERE tcoches.marca = tmarcas.codigo La misma consulta de forma "visual"... Démonos cuenta que hemos antepuesto el nombre de cada tabla a el nombre del campo, esto no es obligatorio si los nombres de campos no se repiten en las tablas, pero es aconsejable para evitar conflictos de nombres entre campos. Por ejemplo, si para referirnos al campo marca no anteponemos el nombre del campo la base de datos no sabe si queremos el campo marca de la tabla tcoches, que contiene el código de la marca, o el campo marca de la tabla tmarcas, que contiene el nombre de la marca. Otra opción es utilizar la cláusula INNER JOIN. Su sintaxis es idéntica a la de una consulta SELECT habitual, con la particularidad de que en la cláusula FROM sólo aparece una tabla o vista, añadiéndose el resto de tablas a través de cláusulas INNER JOIN.

46 SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{INNER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] [ORDER BY <nombre_campo> <indice_campo> [ASC DESC] [{,<nombre_campo> <indice_campo> [ASC DESC ]}]] El ejemplo anterior escrito utilizando la cláusula INNER JOIN quedaría de la siguiente manera: SELECT tcoches.matricula, tmarcas.marca, tcoches.modelo, tcoches.color, tcoches.numero_kilometros, tcoches.num_plazas FROM tcoches INNER JOIN tmarcas ON tcoches.marca = tmarcas.codigo La cláusula INNER JOIN permite separar completamente las condiciones de combinación con otros criterios, cuando tenemos consultas que combinan nueve o diez tablas esto realmente se agradece. Sin embargo muchos programadores no son amigos de la cláusula INNER JOIN, la razón es que uno de los principales gestores de bases de datos, ORACLE, no la soportaba. Si nuestro programa debía trabajar sobre bases de datos ORACLE no podíamos utilizar INNER JOIN. A partir de la versión ORACLE 9i oracle soporta la cláusula INNER JOIN. Combinación Externa La combinación interna es excluyente. Esto quiere decir que si un registro no cumple la condición de combinación no se incluye en los resultados. De este modo en el ejemplo anterior si un coche no tiene grabada la marca no se devuelve en mi consulta. Según la naturaleza de nuestra consulta esto puede ser una ventaja, pero en otros casos significa un serio problema. Para modificar este comportamiento SQL pone a nuestra disposición la combinación externa. La combinación externa no es excluyente. La sintaxis es muy parecida a la combinación interna,

47 SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{LEFT RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] [ORDER BY <nombre_campo> <indice_campo> [ASC DESC] [{,<nombre_campo> <indice_campo> [ASC DESC ]}]] La combinación externa puede ser diestra o siniestra, LEFT OUTER JOIN o RIGHT OUTER JOIN. Con LEFT OUTER JOIN obtenemos todos los registros de en la tabla que situemos a la izquierda de la cláusula JOIN, mientras que con RIGHT OUTER JOIN obtennos el efecto contrario. Como mejor se ve la combinación externa es con un ejemplo. SELECT tcoches.matricula, tmarcas.marca, tcoches.modelo, tcoches.color, tcoches.numero_kilometros, tcoches.num_plazas FROM tcoches LEFT OUTER JOIN tmarcas ON tcoches.marca = tmarcas.codigo Esta consulta devolverá todos los registros de la tabla tcoches, independientemente de que tengan marca o no. En el caso de que el coche no tenga marca se devolverá el valor null para los campos de la tabla tmarcas. Visualmente (la consulta devuelve los datos en azul)... El mismo ejemplo con RIGHT OUTER JOIN.

48 SELECT tcoches.matricula, tmarcas.marca, tcoches.modelo, tcoches.color, tcoches.numero_kilometros, tcoches.num_plazas FROM tcoches RIGHT OUTER JOIN tmarcas ON tcoches.marca = tmarcas.codigo Esta consulta devolverá los registros de la tabla tcoches que tengan marca relacionada y todos los registros de la tabla tmarcas, tengan algún registro en tcoches o no. Visualmente (la consulta devuelve los datos en azul)... Union La cláusula UNION permite unir dos o más conjuntos de resultados en uno detras del otro como si se tratase de una única tabla. De este modo podemos obtener los registros de mas de una tabla "unidos". La sintaxis corresponde a la de varias SELECT unidas a través de UNION, como se muestra a continuación: SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{LEFT RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] { UNION [ALL DISTINCT ] SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>

49 [{LEFT RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] } [ORDER BY <nombre_campo> <indice_campo> [ASC DESC] [{,<nombre_campo> <indice_campo> [ASC DESC ]}]] Para utilizar la cláusula UNION debemos cumplir una serie de normas. Las consultas a unir deben tener el mismo número campos, y además los campos deben ser del mismo tipo. Sólo puede haber una única clausula ORDER BY al final de la sentencia SELECT. El siguiente ejemplo muestra el uso de UNION SELECT tcoches.matricula, tmarcas.marca, tcoches.modelo, tcoches.color, tcoches.numero_kilometros, tcoches.num_plazas FROM tcoches INNER JOIN tmarcas ON tcoches.marca = tmarcas.codigo UNION SELECT tmotos.matricula, tmarcas.marca, tmotos.modelo, tmotos.color, tmotos.numero_kilometros, 0 FROM tmotos INNER JOIN tmarcas ON tmotos.marca = tmarcas.codigo; Puede observarse el uso de la constante cero en la segunda lista de selección para hacer coincidir el número y tipo de campos que devuelve la consulta UNION. Consultas agregadas La cláusula GROUP BY

50 La cláusula GROUP BY combina los registros con valores idénticos en un único registro. Para cada registro se puede crear un valor agregado si se incluye una función SQL agregada, como por ejemplo Sum o Count, en la instrucción SELECT. Su sintaxis es: SELECT [ALL DISTINCT ] <nombre_campo> [{,<nombre_campo>}] [{,<funcion_agregado>}] FROM <nombre_tabla> <nombre_vista> [{,<nombre_tabla> <nombre_vista>}] [WHERE <condicion> [{ AND OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND OR <condicion>}]] [ORDER BY <nombre_campo> <indice_campo> [ASC DESC] [{,<nombre_campo> <indice_campo> [ASC DESC ]}]] GROUP BY es opcional. Si se utiliza GROUP BY pero no existe una función SQL agregada en la instrucción SELECT se obtiene el mismo resultado que con una consulta SELECT DISTINCT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas. Todos los campos de la lista de campos de SELECT deben incluirse en la cláusula GROUP BY o como argumentos de una función SQL agregada. SELECT marca, modelo, SUM(numero_kilometros) FROM tcoches GROUP BY marca, modelo La cláusula HAVING Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula HAVING. Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados. HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuáles de ellos se van a mostrar. HAVING permite el uso de funciones agregadas. SELECT marca, modelo, SUM(numero_kilometros) FROM tcoches WHERE marca <> 'BMW'

51 GROUP BY marca, modelo HAVING SUM(numero_kilometros)> En el ejemplo anterior, no se cuentan los datos para todas las marcas menos "BMW", una vez que se han contado, se evalúa HAVING, y el conjunto de resultados devuelve solo aquellos modelos con más de km. AVG Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente AVG(<expr>) En donde expr representa el campo que contiene los datos numéricos para los que se desea calcular la media o una expresión que realiza un cálculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmética (la suma de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null en el cálculo. SELECT marca, modelo, AVG(numero_kilometros) FROM tcoches GROUP BY marca, modelo Count Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente: COUNT(<expr>) En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin tener en cuenta qué valores se almacenan en los registros. La función

52 Count no cuenta los registros que tienen campos null a menos que expr sea el carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente más rápida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). SELECT COUNT(*) FROM tcoches; SELECT marca, COUNT(modelo) FROM tcoches GROUP BY marca; SELECT marca, COUNT(DISTINCT modelo) FROM tcoches GROUP BY marca; Max, Min Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: MIN(<expr>) MAX(<expr>) En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT marca, modelo, MIN(numero_kilometros), MAX(numero_kilometros) FROM tcoches GROUP BY marca, modelo Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: SUM(<expr>)

53 En donde expr respresenta el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT marca, modelo, SUM(numero_kilometros) FROM tcoches GROUP BY marca, modelo

54 Practicas Creación de una base de datos usando la herramienta de SQL SERVER Para crear una base de datos, se deben seguir los siguientes pasos: a) Expanda un grupo de servidores y, a continuación, un servidor. b) Con el botón secundario del mouse (ratón) en bases de datos y, a continuación, en nueva base de datos. Escriba un nombre para la nueva base de datos. c) Haga clic Observación: Los archivos de registro de transacciones y de la base de datos principal se crean utilizando el nombre de base de datos que ha especificado como prefijo, por ejemplo, newdb_data.mdf y newwdb_log.ldf. Los tamaños iniciales de estos archivos son los

55 mismos que los tamaños predeterminados especificados para la base de datos MODEL. El archivo principal contiene las tablas del sistema para la base de datos. 1. Para cambiar los valores predeterminados del nuevo archivo de base de datos principal, haga clic en la ficha General. Para cambiar los valores predeterminados correspondientes al nuevo archivo de registro de transacciones, haga clic en la ficha Registro de transacciones. 2. Para cambiar los valores predeterminados proporcionados en las columnas Nombre de archivo, Ubicación, Tamaño inicial (megabytes) y Grupo de archivos (no aplicable para el registro de transacciones), haga clic en la celda apropiada para cambiar y escribir el nuevo valor. 3. Para especificar cómo debe crecer el archivo, haga clic en una de estas opciones: a. Para permitir que el archivo actualmente seleccionado crezca cuando sea necesario más espacio para los datos, haga clic en Crecimiento automático del archivo. b. Para especificar que el archivo debe crecer en incrementos fijos, haga clic en megabytes y especifique un valor. c. Para especificar que el archivo debe crecer en un porcentaje de su tamaño actual, haga clic en por porcentaje y especifique un valor. d. Para especificar el límite de tamaño del archivo, haga clic en una de estas opciones: i. Para que el archivo crezca tanto como sea necesario, haga clic en No limitar el crecimiento de los archivos. ii. Para especificar el tamaño máximo que se debe permitir que alcance el archivo, haga clic en Limitar crecimiento de archivo a (megabytes) y especifique un valor. Nota: El tamaño máximo de una base de datos está determinado por la cantidad de espacio de disco disponible y los límites de licencia establecidos por la versión de SQL Server que utilice. Cómo crear una base de datos usando TRANSACT/SQL? ACTIVIDAD 1 Crear una base de datos sin especificar los archivos Este ejemplo crea una base de datos llamada bd_ejemplo, automáticamente se crean los archivos principal y de registro de transacciones correspondientes en la carpeta asignada por defecto, por ejemplo en: C:\Program Files\Microsoft SQL Server\MSSQL\Data Debido a que la instrucción no tiene elementos <filespec>, el archivo principal dela base de datos toma el tamaño del archivo principal de la base de datos MODEL. El registro de transacciones toma el tamaño del archivo del registro de transacciones de la base de datos MODEL. Como no se ha especificado el prámetro MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco. CREATE DATABASE bd_ejemplo Go NOTA: Puede usar el comando sp_ helpdb para presentar información acerca de la base de datos especificada o de todas las bases de datos.

56 Sintaxis: SP_HELPDB [Nombre de la base de datos] Ejemplo: SP_HELPDB bd_ejemplo ESPECIFICANDO LAS PROPIEDADES PARA CADA ARCHIVO QUE CONFORMA UNA BASE DE DATOS: Para el archivo primario, los archivos secundarios y los archivos de registro de transacciones se pueden especificar las siguientes propiedades: NAME: Nombre lógico del archivo. FILENAME: Nombre físico, en el cual se debe especificar la ruta (ubicación) donde será creado el archivo. SIZE: Tamaño inicial, por defecto está dado en megabytes. MAXSIZE: Tamaño máximo. FILEGROWTH: Crecimiento del archivo. ACTIVIDAD 1: Crear una base de datos individual En este ejemplo se crea una base de datos llamada DEPARTAMENTOS en la carpeta D:\Data\ y se especifica un único archivo. El archivo especificado se convierte en el archivo principal y se crea automáticamente un archivo de registro de transacciones de 1 megabytes. Como no se especifican la unidad en el parámetro SIZE del archivo principal, se asigna por defecto en megabytes. Ya que no existe <filespec> para el archivo de registro de transacciones, éste no tiene el parámetro MAXSIZE y puede crecer hasta llenar todo el espacio disponible en el disco. CREATE DATABASE Departamentos ON ( NAME = Departamentos_Data, FILENAME = 'D:\Data\Departamentos_Data.mdf',

57 SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO ACTIVIDAD 2: Crear una base de datos sin especificar tamaño (size), ni máximo tamaño (maxsize), ni crecimiento (filegrowth) Esta actividad crea una base de datos llamada Departamentos2. El archivo departamentos2_data se convierte en el archivo principal, con un tamaño igual al tamaño del archivo principal de la base de datos MODEL. El archivo de registro de transacciones se crea automáticamente y es un 25 por ciento del tamaño del archivo principal, o 512 kilobytes, el que sea mayor. Como no se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco. CREATE DATABASE Departamentos2 ON (NAME = Departamentos2_Data, FILENAME = 'D:\ Data \Departamentos2_Data.mdf' ) GO ACTIVIDAD 3: Crear una base de datos especificando dos archivos, archivo de datos y archivo de transacciones Esta actividad crea una base de datos llamada Departamentos3 en la carpeta D:\Data\, su archivo principal contará con un tamaño inicial de 40 megabytes, un tamaño máximo de 100 megabytes y un crecimiento de 1 megabytes. Su archivo de registro contará con un tamaño inicial de 5 megabytes, un tamaño máximo de 40 megabytes y un crecimiento de 10%. CREATE DATABASE Departamentos3 ON (NAME = Departamentos3_Data, FILENAME = 'D:\ Data \Departamentos3_Data.mdf', SIZE = 40, MAXSIZE = 100, FILEGROWTH = 1 ) LOG ON (NAME = Departamentos3_Log, FILENAME = 'D:\ Data \Departamentos3_Log.ldf', SIZE = 5, MAXSIZE = 40, FILEGROWTH = 10% ) GO

58 ACTIVIDAD 4 Crear una base de datos especificando el archivo de datos, un archivo secundario y un archivo de transacciones: Esta actividad crea una base de datos llamada Departamentos3 en la carpeta D:\DATA\, su archivo principal contará con un tamaño inicial de 15MB, un tamaño máximo de 200 megabytes y un crecimiento de 20%. Su archivo secundario contará con un tamaño inicial de 10 megabytes, un tamaño máximo de 80 megabytes y un crecimiento de 2 megabytes. Su archivo de registro contará con un tamaño inicial de 10 megabytes, un tamaño máximo de 70 megabytes y un crecimiento de 5 megabytes. CREATE DATABASE Departamentos4 ON (NAME = Departamentos4_Data, FILENAME = 'D:\ Data \Departamentos4_Data.mdf', SIZE = 15, MAXSIZE = 200, FILEGROWTH = 20% ), (NAME = Departamentos4_Sec, FILENAME = 'D:\ Data \Departamentos4_Sec.ndf', SIZE = 10, MAXSIZE = 80, FILEGROWTH = 2 ) LOG ON (NAME = Departamentos4_Log, FILENAME = 'D:\ Data \Departamentos4_Log.ldf', SIZE = 10, MAXSIZE = 70, FILEGROWTH = 5 ) GO TIPOS DE DATOS Los tipos de datos definen el valor de datos que se permite en cada columna. SQL Server proporciona varios tipos de datos diferentes. Ciertos tipos de datos comunes tienen varios tipos de datos de SQL Server asociados. Se debe elegir los tipos de datos adecuados que permitan optimizar el rendimiento y conservar el espacio en el disco. Categorías de tipos de datos del sistema La siguiente tabla asocia los tipos de datos comunes con los tipos de datos del sistema proporcionados por SQL Server. La tabla incluye los sinónimos de los tipos de datos por compatibilidad con ANSI.

59 ACTIVIDADES A DESARROLLAR EN CLASE Usando TRANSACT/SQL, cree las siguientes bases de datos: 1. VENTAS2009_1, en la carpeta D:\DATABASE\, considerando que el archivo principal tiene tamaño de 20 megabytes, un tamaño máximo de 80 megabytes y un incremento de 10 megabytes. 2. VENTAS2009_2, en la carpeta D:\MSSQL\DATA\, considerando que el archivo principal tiene tamaño de 20 megabytes, un tamaño máximo de 80 megabytes y un incremento de 10 megabytes. Por otro lado, considere que el archivo de transacciones tiene tamaño de 3 megabytes, un tamaño máximo de 13 megabytes y un incremento del 15%. 3. VENTAS2009_3, en la carpeta D:\CIBERMARANATA\DATOS\, con la siguiente configuración: Archivo de datos: un tamaño inicial de 20 megabytes, máximo de 120 megabytes y un factor de crecimiento de 5%,

60 Archivo secundario: un tamaño inicial de 10 megabytes, máximo de 50 megabytes y un factor de crecimiento de 2 megabytes, Archivo de transacciones: un tamaño inicial de 4 megabytes, máximo de 75 megabytes y un factor de crecimiento de 2%. ACTIVIDADES PROPUESTAS Caso: VENTAS Se ha diseñado una base de datos para el control de las ventas realizadas en una empresa, como se detalla en el siguiente diagrama: 1. Cree la base de datos Ventas indicando propiedades para el archivo primario, un archivo secundario y un archivo de registro. 2. Identificar los tipos de datos que le corresponde a los campos de las tablas EMPLEADO, BOLETA y PRODUCTO. 3. Cree la base de datos para su proyecto de investigación, el cual tendrá definida la ruta para la creación de los archivos y la especificación de los tres (3) archivos (archivo de registro, archivo secundario y archivo de transacciones). ACTIVIDADES ADICIONALES Los ejemplos mostrados a continuación han sido tomados de la Ayuda en Línea del Microsft SQL A. Cree una base de datos sin especificar archivos

61 En este ejemplo se crea la base de datos mytest, y el archivo principal y de registro de transacciones correspondientes. Debido a que la instrucción no tiene elementos <filespec>, el archivo de la base de datos principal tiene el tamaño del archivo principal de la base de datos model. El registro de transacciones se establece en el mayor de estos valores: 512 KB o el 25% del tamaño del archivo de datos principal. Como no se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco. USE master; GO IF DB_ID (N'mytest') IS NOT NULL DROP DATABASE mytest; GO CREATE DATABASE mytest; GO -- Verify the database files and sizes SELECT name, size, size*1.0/128 AS [Size in MBs] FROM sys.master_files WHERE name = N'mytest'; GO B. Cree una base de datos que especifica los archivos de datos y de registro de transacciones: En el ejemplo siguiente se crea la base de datos Sales (Ventas). Debido a que no se utiliza la palabra clave PRIMARY, el archivo (Sales_dat) se convierte en el archivo principal. Como no se especifica megabytes ni kilobytes en el parámetro SIZE del archivo Sales_dat, se utiliza megabytes y el tamaño se asigna en megabytes. El tamaño del archivo Sales_log se asigna en megabytes porque el sufijo MB se ha indicado explícitamente en el parámetro SIZE. USE master; GO IF DB_ID (N'Sales') IS NOT NULL DROP DATABASE Sales; GO -- Get the SQL Server data path nvarchar (256); = (SELECT SUBSTRING (physical_name, 1, CHARINDEX(N'master.mdf', LOWER (physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- execute the CREATE DATABASE statement EXECUTE ('CREATE DATABASE Sales ON (NAME = Sales_dat, FILENAME = + 'saledat.mdf'', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5) LOG ON (NAME = Sales_log, FILENAME = + 'salelog.ldf'',

62 SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB)' ); GO C. Cree una base de datos mediante la especificación de múltiples archivos de datos y de registro de transacciones: En el ejemplo siguiente se crea la base de datos Archive, que tiene tres archivos de datos de 100 megabytes y dos archivos de registro de transacciones de 100 megabytes. El archivo principal es el primer archivo de la lista y se especifica explícitamente con la palabra clave PRIMARY. Los archivos de registro de transacciones se especifican a continuación de las palabras clave LOG ON. Tenga en cuenta las extensiones usadas para los archivos en la opción FILENAME:.mdf se usa para archivos de datos principales,.ndf para archivos de datos secundarios y.ldf para archivos de registro de transacciones. USE master; GO IF DB_ID (N'Archive') IS NOT NULL DROP DATABASE Archive; GO -- Get the SQL Server data path nvarchar(256); = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- execute the CREATE DATABASE statement EXECUTE ('CREATE DATABASE Archive ON PRIMARY (NAME = Arch1, FILENAME = + 'archdat1.mdf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch2, FILENAME = + 'archdat2.ndf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch3, FILENAME = + 'archdat3.ndf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) LOG ON (NAME = Archlog1, FILENAME = + 'archlog1.ldf'', SIZE = 100MB, MAXSIZE = 200,

63 FILEGROWTH = 20), (NAME = Archlog2, FILENAME = + 'archlog2.ldf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)' ); GO Al ejecutar el código anterior, se mostrará lo siguiente: D. Traduzca al español el siguiente texto, resuma y envié al profesor copia de la actividad.

64 Best Practices for Backup and Restore in SQL Server 2005 By Javier Loria Edited with permission from SQL Server Magazine. Copyright 2008 Penton Media, Inc. All rights reserved. Third-party information brought to you courtesy of Dell. THIS WHITE PAPER IS FOR INFORMATIONAL PURPOSES ONLY, AND MAY CONTAIN TYPOGRAPHICAL ERRORS AND TECH- NICAL INACCURACIES. THE CONTENT IS PROVIDED AS IS, WITHOUT EXPRESS OR IMPLIED WARRANTIES OF ANY KIND.

65 Contents Introduction... 1 Audience: Who should read this... 1 Introduction to the Data Recovery Plan... 2 Threat Analysis (What can happen, and what you can afford to lose)... 2 Source... 2 Business Requirements... 2 Operational Requirements... 2 Backup Objectives... 3 Backup Strategies (What you are willing to pay)... 3 Backup Types... 3 Full Backup... 3 Differential Backup... 4 Log Backup... 4 Backup Targets... 4 Database Backup... 4 File Backup... 5 Filegroup Backup... 5 Partial Backup... 5 Backup Strategies... 5 Full Backup Simple Mode... 5 Log & Full Backup... 6 Full & Log Backup... 6 Full Differential Log... 6 Full File/Filegroup Log Backup... 7 Service Level Agreement... 7 Operational Best Practices... 8 Performance... 8 Security... 8 Other Best Practices Summary of Backup Best Practices Best Practices for Backup and Restore in SQL Server 2005 Introduction In an ideal world, hard drives and other hardware never fail, software is never defective, users do not make mistakes, and hackers are never successful. However, we live in a less than perfect world and we should plan and prepare to handle adverse events. In our database environment, that plan is called the Data Recovery Plan (DRP). The DRP is the set of actions that database administrators (DBAs) take to handle adverse events that may affect the availability of their database environments. Microsoft SQL Server 2005 has a variety of different technologies that can help DBAs build a DRP. These technologies include: Failover Cluster, Database Mirroring, Database Replication and Log Shipping. In spite of the advantages these technologies might offer, DBAs should always plan backups and restores as the last line of defense of the DRP. In this whitepaper, we will discuss some of the best practices in Backup and Restore operations when using SQL Server In this whitepaper, we will cover: What types of Backup and Restore options SQL Server offers How to combine Backup and Restore types in a DRP Best practices you should follow in your backup and restore strategy Audience: Who should read this This whitepaper is intended for DBAs involved in the design, plan and execution of the backup and restore operations in the Microsoft SQL Server 2005 platform. This paper assumes some knowledge of SQL Server commands and a basic foundation in administering the Microsoft Windows platform. 1 BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER 2005 courtesy of Dell

66 Introduction to the Data Recovery Plan The first best practice for Backups and Restores in SQL Server 2005 is to have a DRP. DRPs are like insurance plans for your database. When you buy an insurance policy, you have to consider two main factors: how much can I afford to lose in case of an adverse event; and how much am I willing to pay to protect from it, even when nothing wrong happens. How much you can afford to lose is the Threat Analysis. You should begin designing your plan with a threat analysis. How much you are willing to pay is the backup and restore strategy. Obviously these two components are tightly related and influence each other. Threat Analysis (What can happen, and what you can afford to lose) Following the insurance paradigm, the first factor to consider in your DRP is what coverage your insurance policy must have. You should plan and design a strategy according to the events you want to take preventive actions about. Source The threats that menace your data can be classified according to the source: Hardware, Software, People and Environment. Hardware: Hardware is always the first source of threats to consider in a database environment. Some events you should consider in your plan: Hard drive failure. Other I/O component failures. CPU, memory and video malfunction. Total server collapse. Software: Some of the software vulnerabilities you should consider: Risks related to software upgrades or patches. A faulty software component may inadvertently delete or damage information in the database. Software bugs may inadvertently damage data. Malware (Virus, Trojans) may also delete or damage data. People: Some of the people-related vulnerabilities you should consider: Users may accidentally delete or incorrectly update information in your database, even when they do not have administrative rights. Database administrators may intentionally or unintentionally delete or wrongly update data in the database. For example a delete without a WHERE statement. Database administrators may intentionally or unintentionally drop a database or database objects. A non-user (hacker) may gain access to your database server and delete or destroy data or database objects. Environment: The last source of events, which too often database administrators forget, is environment vulnerabilities. Your database DRP should also consider: Fire and Flood in the data center. Earthquake, Tornado. Theft and Civil disorder. Make sure your plan handles threats from all sources: Hardware, Software, People and Environment. Business Requirements After considering all the possible events that may affect your database, it is time to analyze the Business Requirements. Some of the elements you should consider: 1) Value: The first question you should answer when designing your plan, is how much is your data worth? How much money the company will lose if you lose one day of transactions? How much money if you lose one hour of information? Answers to these questions are important because they also tell you how much you should invest in protecting the database. 2) Volatility: The second element to consider is how volatile is the database? Some databases are read only and change only sporadically, while others handle millions of transactions per minute. Volatile databases often require frequent backups. 3) Size: the third element to take into account is the size of the database. Obviously, large databases take longer to back up and restore than small databases. Very Large Databases (VLDB) may take weeks to restore in case of a total server collapse. 4) Usage: the final factor to consider is database usage in order to minimize the impact of the backup procedures. For example: if the database is used only 8x5 (eight hours, five days a week) you can adopt a backup plan to be executed when users are not working. Such a plan will take more time to execute but will take less time to restore in the eventuality of a failure. If, however, the database is heavily used 24x7 (twenty-four hours, seven days a week) you may need to adopt a backup plan that have the lowest impact to the system. Such a plan will take less time to execute but will take more time to restore in the eventuality of a failure. You should consider the value, volatility, size and usage of your database when designing your data recovery plan. Operational Requirements As any other system, the DRP should also take into account operational requirements. The most relevant operational requirements of data recovery plans are 2 BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER 2005 courtesy of Dell

67 security, performance and manageability. Make sure your plan considers these requirements. The most relevant requirement to consider is security. Security is the most sensitive operational requirement to contemplate, because backups are more exposed to physical attacks than the databases they hold. Consider the following examples 1 : 1) Someone takes the backup and makes a copy. This is a confidentiality threat. 2) Someone overwrites the content of the backup. This is an integrity threat. 3) Someone steals the tapes. This is an availability threat. We will discuss later in this white paper some of the measures you may take to reduce these threats. Backup Objectives There are three main objectives of performing backups: 1) To recover lost data: This is the most obvious objective of a backup/restore plan. In case of an event, you will be able to recover the data that is lost. 2) To minimize the data loss: Sometimes it is inevitable to lose some data. Your plan should also try to minimize the amount of data that is lost. For example, if you back up databases daily, your system may lose up to 24 hours of data. You will reduce this number if you perform other backups during the day. 3) To minimize the downtime cost: Another factor to consider is how difficult and lengthy it will be to restore the system, and how to reduce the downtime cost. If you need to restore one Full and forty-five transaction log backups, the downtime cost is probably higher than restoring one Full, one differential, and three transaction log backups. Backup Strategies (What you are willing to pay) After performing the threat analysis, the DBA should create a plan for handling backup and restores. To create such strategy you need to understand the different backup types and backup options available. Backup Types SQL Server 2005 offers three basic types of backups: Database (Full), Differential, and Log backups. Full Backup A full backup makes a copy of all used database pages in the database, meaning it copies all the information (Data and indexes) of the database, and excludes all empty data pages. Full backups also duplicate the part of the transaction log that includes all open transactions and transactions that occurred during the backup process. This allows the restore process to achieve transactional integrity. The following code is an example of Full Database Backup command: BACKUP DATABASE AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak You may also create backups using SQL Server Management Studio (SSMS). To create a database backup using SSMS (Figure 1), follow these steps: 1) Open SSMS 2) Connect to the SQL Server instance that holds the database. 3) Navigate to the Server\Databases folder. 4) Right click the database you want to backup. 5) From the shortcut menu, select Tasks, Backup. 6) In the Database Backup dialog box, select the type of backup you want the server to perform, the backup destination path and the backup options. 7) Select OK to backup the database or press the script button if you want to generate a script to generate a Backup with the selected options. 1 This example was authored by the Application Consulting & Engineering (ACE) Team (http://blogs.msdn.com/threatmodeling/). The ACE Team created the Threat Analysis and Modeling Tool, that can be downloaded from courtesy of DELL BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER

68 Figure 1 Backup Database Window in SSMS 2005 Differential Backup Differential backups are designed to reduce the amount of time it takes to perform full backups. Instead of copying all used pages, the differential backup copies only pages that have changed since the last full backup. Similar to the Full Backup, differential backups also copy a part of the transaction log to maintain the transactional integrity when the backup is restored. The following code is an example of how to create a Differential Backup. BACKUP DATABASE AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak WITH DIFFERENTIAL Log Backup The only type of backup that does not actually copy database pages is the Log backup. The Log backup copies the transaction log of the database. After it copies the log, the backup truncates the part of the log that is not required by active transactions or transactional replication. The syntax to back up the Log is: BACKUP LOG AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak Backup Targets Besides the backup type, SQL Server allows four different backup targets: Database, Filegroup, File and Partial. These targets only apply to the Full and Differential Backup types; they do not apply to the log backup. Database Backup A database backup makes a copy of the entire database. If you are using a Full database backup it includes all used database pages in the database; if you are using a Differential Database backup, it includes all changed database pages of the database that have changed since the last full backup. Some examples of how to perform a Full and Differential Database backup are: -- Full Database Backup BACKUP DATABASE AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak -- Differential Database Backup BACKUP DATABASE AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak WITH DIFFERENTIAL 4 BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER 2005 courtesy of Dell

69 File Backup File backups do not copy the database; instead the file backup aim is to back up only one or more files that are part the database. Databases in SQL server 2005 have three different types of files: Primary, Secondary, or Log Files. Primary and Secondary files hold database pages; in contrast, Log files hold the transaction log. File backups can make copies of pages from Primary and Secondary Files. This type of backup can be used to speed up the restoration process, when the device that stores one of the files fails but the rest of the devices are working correctly. In this case, there is no need to restore the full database; only the affected file. The following SQL code performs Full and Differential File backups: -- Full File Backup BACKUP DATABASE AdventureWorks FILE= AdventureWorks_Data TO DISK = N C:\Backup\AdventureWorks.bak -- Differential File Backup BACKUP DATABASE AdventureWorks FILE= AdventureWorks_Data TO DISK = N C:\Backup\AdventureWorks.bak WITH DIFFERENTIAL One important element to remember when using File Backups is that they should either be read only (the filegroup they belong to) or combined with Log Backups to restore transactional integrity of the database. File backups do not automatically back up the transaction log. Filegroup Backup You can group Primary and Secondary files in two different types of Filegroups: Primary and Secondary filegroups. The main difference between primary and secondary filegroups is that the Primary filegroup holds the Primary file, where system tables are stored. Similar to File backups, Filegroup backups do not copy the entire database; they copy only pages from files that belong to the filegroup. Some examples of how to perform Filegroup backups are: -- Full Filegroup Backup BACKUP DATABASE AdventureWorks FILEGROUP= PRIMARY TO DISK = N C:\Backup\AdventureWorks.bak -- Differential Filegroup Backup BACKUP DATABASE AdventureWorks FILEGROUP= PRIMARY TO DISK = N C:\Backup\AdventureWorks.bak WITH DIFFERENTIAL Partial Backup Partial backup is similar to File and Filegroup backups; they do not back up the entire database. Partial backups always back up the Primary Filegroup and every Read and Write Filegroup that is part of the database. Besides the fact that partial backups simplify the backup statement to back up only read and write filegroups, they also offer the advantage of allowing this type of backup when using a simple recovery model in the database. To perform a partial backup, use the Read_Write_Filegroups option of the Backup command as the following example does: -- Full Partial Backup BACKUP DATABASE AdventureWorks Read_Write_Filegroups TO DISK = N C:\Backup\AdventureWorks.bak -- Differential Partial Backup BACKUP DATABASE AdventureWorks Read_Write_Filegroups TO DISK = N C:\Backup\AdventureWorks.bak WITH DIFFERENTIAL Backup Strategies Combine different backup types to create a backup strategy. Full Backup Simple Mode When you follow this strategy, the DBA configures the database recovery model to simple, and performs periodic Full Database backups. This is the simplest backup strategy, and the simplest to restore. But it is also the one that takes the longest to back up and is not feasible in most scenarios. You can use this strategy in the following cases: Development Databases: Databases used in developing or testing environments, if you can afford to lose daily work, otherwise consider a Full and Log Backup strategy. Stage Databases: Databases used in Data Warehouse to stored intermediate data extracted from source systems. Read Only Databases: Databases that have only read only information, for example subscriber databases that store information for reporting purposes. System Databases: master, msdb and distribution. Do not back up tempdb. And unless you plan to change its contents, do not back up the model database. Backing up Master also backs up the ResourceDB. Because the transaction log is never backed up and it is never truncated; the recovery mode should be changed to simple mode to avoid the continuing growth of the database. Use the Full Backup simple mode strategy only on development, read only, stage or system databases. For example, you can schedule daily backups every night or every weekend of all system databases. courtesy of DELL BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER

70 A diagram of Full-Backup and Simple Mode strategy: 2 A diagram of a Log & Full backup strategy: Log & Full Backup This strategy is similar to the previous one; however, instead of changing the recovery model of the database, you back up the log just before the full backup. This approach has the advantage of capturing not only the data, but also the changes that occurred since the last backup. The benefits of a Full & Log backup strategy are: 1) If Database files and Log are physically separated and the database hard drive fails, you may back up the Log and not lose any data. 2) In case of a software failure, human error (end user or DBA) or security breach; the DBA can first backup the transaction log first and then restore the database to a point in time, reducing the amount of loosed data. Leaving the full recovery model on, allows you to backup the transaction log first and restore the database and the part of the transactions up to the last known good reliable state. 3) If the database has multiple files and one fails, you can first backup the tail of the transaction log (that include the transactions that occurred since the last log backup), and using the last full backup restore only the failed file and the transactional log to restore transactional integrity. 4) The transactional log backups can be used in forensic analysis. There is some additional space involved in having the transaction log backup on a daily basis; however, in most databases this is not a relevant factor to consider. Schedule the Log backup before the full backup. This approach will speed up the recovery process. If you schedule the Log backup before the full backup, you will only need to restore the last full backup and one transaction log to recover the database. Scheduling after the full backup will demand the restoration of the last full backup and two transaction logs backups. Use the Log & Full backup strategy in 8x5 databases where you can afford to lose up to one day of work. Full & Log Backup In this scenario, the DBA schedules one full backup and multiple Log backups, between full backups. This plan has the advantage of reducing the amount of lost information in case of total server collapse, because you can schedule log backups more regularly than you can schedule full backups. A diagram of a Full & Log backup strategy: Consider the use of the Full & Log backup strategy in 8x5 databases, and non-volatile 24x7 databases. For example, you may schedule nightly Full Database backups and Log backups every four hours. Full Differential Log Sometimes the information stored in a database is so valuable that you want to back up the information very often. However, relying on backup logs is not feasible because, in case of failure, you will have to restore every log backup since the last full backup. In this case, the Full Differential and Log strategy may help. When using Full, Differential, and Log Backups the DBA schedules a Full Backup occasionally, differential backups often, and Logs very often. In this case, occasionally means as frequently as needed, to minimize the impact of a full backup, but enough to avoid differential backups to grow too much; often means as frequently as needed, to minimize the impact of restoring too many log backups; and very often means as frequently as needed to minimize data loss exposure. Some implementations of this strategy may be: 1) Full backup every month, differential backups every night, and log backups every two hours. 2 The scale on the Backup strategies diagrams is deliberately abstracted. Some databases will require weekly full database backups; more often business should choose daily backups; and finally others will required multiple daily full backups. Take into account the business requirements: value, volatility, size and usage, when defining your backup plan. 6 BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER 2005 courtesy of Dell

71 2) Full backup every week, differential backups every 6 hours, and logs every fifteen minutes. A diagram of a Full Differential Log backup strategy: Use the Full, Differential and Log strategy in volatile 24x7 databases, when the value or your data requires very frequent log backups, and in non-partitioned Data marts. Full File/Filegroup Log Backup In some databases the impact of a full backup is so large that you want to avoid it as much as possible; at the same time your database is most likely large enough to consider the use of multiple file and filegroups. In that scenario, most likely you don t want to back up the complete database at once, you only want to back up parts of it. To create a backup strategy when using Filegroups, you have to be aware of the two main patterns that DBAs often use to create filegroups. The first pattern is used to maximize performance and the other to maximize availability. In the first approach, to maximize performance, the DBA assigns every Filegroup to one or more files in each hard drive or I/O subsystem. Using this schema the performance is increased because the server can use all the devices in parallel. The following diagram may help how understand how filegroups are assigned when their purpose is to maximize performance. On the contrary, to maximize availability, Filegroups are assigned to one or more files in a single hard drive or I/O subsystem. The benefit of using this approach is that if one of the hard drives fails, you will only have to restore that Filegroup. The following diagram may help you understand how filegroups are assigned when their purpose is to maximize availability. Backup filegroups partitioned by I/O System (High availability), is simple because you only have to back up one filegroup every time. However, when the filegroups are partitioned across I/O systems (to increase performance) you have to back up every file of each filegroup that resides in the same hard drive I/O System. Finally you may consider flagging a Filegroup as read only to eliminate or reduce the frequency of the backups of that filegroup. The following code marks a Filegroup as read only: ALTER DATABASE AdventureWorks MODIFY FILEGROUP AdventureWorks2001 READONLY Consider the use of a Full - File/Filegroup Log Backup strategy in Very Large Databases (VLDB) or partitioned Data marts/data warehouses. For example, you may back up a Full Database once a year, a Filegroup (assuming that the filegroups are designed with High availability in mind) backup every day, and Log backups every hour. A diagram of a Full Partial Log backup strategy: Service Level Agreement Based on the analysis of the business and operational requirements, the possible threats, and the options that SQL Server 2005 provides to protect the data; the DBA should write a Service Level Agreement (SLA). The SLA is an agreement between customers and users on one side and service providers on the other side. The SLA is written like a contract and describes a set of operational goals that the IT Department promises to achieve. The following example is the part of an SLA 3 regarding disaster recovery and backup and restores plans: In case of the following incidents that disrupt the database service, the IT department will resolve the problem under the following conditions: In case of I/O system failure or human error, the database service will be available within 4 hours of the first report of the incident, and no more than 15 minutes of data will be lost. 3 A short SLA template can be found in courtesy of DELL BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER

72 In case of a server breakdown due to software or hardware issues, the database service will be available within 12 hours of the first report of the incident and no more than 15 minutes of data will be lost. In case of data center breakdown due to fire, flood, earthquake or other environment or civil disasters, the database service will be available within 24 four hours and no more than 4 hours of data will be lost. To set unambiguous expectations of users, write an SLA that describes the response time the IT Department will provide in case of each type of event. Operational Best Practices Beside the backup and restore strategy, the DBA should also consider different options and practices to handle backup and restore activities. The following guidelines may help you take some decisions about backup and restore procedures: Performance Schedule Backup Operations When Database Activity Is Low: Database operation may have an important impact on the server; avoid backup operation when the activity of the server is high, especially full database backups. Back up first to disk, whenever possible. Consider using a File Server to store the backups. Backing up to disk will greatly increase the performance of the backup process and free the resources of SQL Server. Using file backups also simplifies the restoration process. When backing up to a remote share, use UNC paths and do not use mapped drives. When using a File server to store backups, consider using a private LAN trunk to avoid general network congestion. A private trunk requires that both the File and the Database Servers have an additional network card connected to a private LAN. This practice also increases the security of the backup process. Back up to tape or other devices for long run storage. Tapes and other media types offer an economical option to store the information for the long run. Do not use the same physical disk that hold the database files or Log files for backup purposes. Using the same physical disk not only affects the performance, but also may reduce the recoverability of the plan. Security The following measures will help you reduce or handle security threats: Confidentially Do not use the Password option of the Backup statement: The password option of the backup statement provides weak protection and does not prevent reading of the data. The password option is also deprecated and will be removed in future releases of SQL Server. When using the file system for backups, grant file and folder access to the SQL Service account and DBA only. The SQL Service account will require Read and Write access to the folder or shared folder and the DBA will required Full Control and should be the owner of the folder. Restring access to the backup files will prevent users from copying the files and restore them in a server where they have administrative rights. Consider establishing an Auditing Policy on the Backup Folder. Enabling file access auditing to the Backup Folder will monitor user access to the backups. After the database is back up in a file or files, compress and encrypt the files before moving the contents to tape backups or other forms of long term storage. Encrypting the backup files will help you protect the confidentiality of the information if somebody gains physical access to the media. Physically secure backup media. Do not rely only on encryption to secure the media, make sure that the media is always physically secure to avoid someone to copy the media, and use brute force attacks to decrypt the file and eventually restore the database in another server. Sanitize the backup media before disposal. Do not throw tape media in the trash, unless you are absolutely certain that the data has been erased. Deleting the files or overwriting the files may not be enough. Consider the use of specialized software or magnetic methods to erase the information. Integrity Use the CHECKSUM option of the Backup command. This option, new in SQL Server 2005, essentially performs two types of verifications on database backups. The first one is that it stores a CHECKSUM of the backup that can help you verify if the backup is corrupt. The second verification only works if the PAGE_VERIFY option of the database is in CHECKSUM or TORN_PAGE_DETECTION mode. If one these modes are enabled, the BACKUP statement will verify that the pages are reliable before they are backed up. The default of the PAGE_VERIFY option is CHECKSUM; however the CHEKSUM option of the Backup command is not enabled by default. The following exemplifies the CHECKSUM option of the backup command: BACKUP DATABASE AdventureWorks TO DISK = N C:\Backup\AdventureWorks.bak WITH CHECKSUM Test Backup files periodically using the RESTORE VERIFYONLY command. The following code is an example of how to use RESTORE VERIFYONLY command: RESTORE VERIFYONLY FROM DISK = N C:\Backup\AdventureWorks.bak WITH CHECKSUM 8 BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER 2005 courtesy of Dell

73 Availability Use the Mirror option of the Backup command to backup to a local hard drive and a backup server simultaneously. Having a local copy of the backup increases the response time of the restoration process and having a remote copy makes the copy available in case of a server collapse. The following command is an example on how to use the MIRROR clause of the BACKUP command: BACKUP DATABASE AdventureWorks TO DISK= C:\Backup\AdventureWorks.bak MIRROR TO DISK= \\ILUVATAR\Backup\AdventureWorks.bak WITH FORMAT Perform trial restorations frequently. Frequently you should verify that the backup system is properly copying the database and that the backup hardware and process is working correctly. Trial restorations should use test server and should never be performed in a production environment. Perform Fire Drills periodically. A fire drill is a procedure that tests if the backup and restore plan will help the IT department to be compliant with the SLA. In a fire drill not only the backup is restored to verify the integrity, the whole recovery plan is executed to verify readiness in case of an event. A fire drill will assume that the production server or data center is down and the recovery team will test their ability to configure an alternate environment ready for production. Manageability Use SQL Server Agent to automate the Backup process. Automating the backup process will facilitate the backup process and reduce the likelihood of human errors. The SQL Server agent will help DBAs automate administrative tasks, which include the backup process. To create a Job to backup a database use the following procedure: 1) Open SSMS 2) Connect to the SQL Server instance that holds the database. 3) Navigate to the Server\Databases folder. 4) Right click the database you want to backup. 5) From the shortcut menu, select Tasks, Backup. 6) In the Database Backup dialog box, select the type of backup you want the server to perform, the backup destination path and the backup options. 7) Press Crl+Shift+M or select Script to Job option in the Backup Database window to create a Job. 8) Select Schedules in the Select a Page listbox. 9) Press new to create a schedule for the backup. 10) Configure the backup schedule (Figure 2) and select Ok to confirm your selection. Figure 2 New Schedule Window courtesy of DELL BEST PRACTICES FOR BACKUP AND RESTORE IN SQL SERVER

ANSI SQL El lenguaje SQL...2 Componentes del lenguaje SQL...3 Tablas...7 Índices...11 Vistas...13 Consultar datos. SELECT...15

ANSI SQL El lenguaje SQL...2 Componentes del lenguaje SQL...3 Tablas...7 Índices...11 Vistas...13 Consultar datos. SELECT...15 ANSI SQL El lenguaje SQL...2 Componentes del lenguaje SQL...3 Tipos de datos. Operadores Palabras Clave Funciones Agregadas Predicados Tablas...7 Nomenclatura Creación de tablas Modificación de tablas

Más detalles

TUTORIAL SQL. Aprendiendo SQL

TUTORIAL SQL. Aprendiendo SQL TUTORIAL SQL Aprendiendo SQL El propósito de esta Guía de referencia SQL es enseñar a los principiantes la estructura básica del lenguaje de base de datos SQL. Ing. Herik Robles Huerta 13/07/2010 ÍNDICE

Más detalles

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

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Lenguaje de manipulación de datos

Lenguaje de manipulación de datos Lenguaje de manipulación de datos Insertar datos. Hasta ahora hemos visto como se almacenan los datos en una base de datos y como consultar esos datos almacenados, pero no hemos visto como almacenar dichos

Más detalles

1. SQL.(Structure Query Language).

1. SQL.(Structure Query Language). 1. SQL.(Structure Query Language). SQL es el lenguaje de consulta universal para bases de datos. Desde esta opción vamos a tratar los temas relacionados con SQL ANSI 92, que es el standar SQL, ya que luego

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

MANUAL BÁSICO DEL LENGUAJE SQL

MANUAL BÁSICO DEL LENGUAJE SQL MANUAL BÁSICO DEL LENGUAJE SQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. COMANDOS... 4 1.1 Comandos DLL... 4

Más detalles

Bases de Datos Relacionales

Bases de Datos Relacionales 2da. Parte Bases de Datos Relacionales Objetivos de la Clase SQL. Tipos de sentencias SQL Describir los tipos de dato que se pueden utilizar al especificar la definición de columnas. Sentencias SQL Select.

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera) SQL Lenguaje de Consulta Estructurado Curso básico de SQL (Leire Urcola Carrera) Indice de contenidos Introducción Consultas de Selección Criterios de Selección Agrupamiento de Registros y funciones agregadas

Más detalles

Crear BD en. Isis Bonet Cruz, PhD

Crear BD en. Isis Bonet Cruz, PhD Crear BD en Isis Bonet Cruz, PhD SQL Server Microsoft SQL Server es un sistema de administración y análisis de bases de datos relacionales de Microsoft para soluciones de comercio electrónico, línea de

Más detalles

CONSULTAS BASICAS EN SQL SERVER

CONSULTAS BASICAS EN SQL SERVER CONSULTAS BASICAS EN SQL SERVER CONSULTAS DE SELECCION Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta

Más detalles

Tema 4. SQL. Juan Ignacio Rodríguez de León

Tema 4. SQL. Juan Ignacio Rodríguez de León Tema 4. SQL Juan Ignacio Rodríguez de León Resumen Este tema se centra exclusivamente en el estudio del lenguaje de consultas SQL (Structured Query Language). SQL usa una combinación de álgebra relacional

Más detalles

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos: CONTENIDO. 1. INTRODUCCIÓN 2. TIPOS DE SENTENCIAS SQL 3. TIPOS DE DATOS 4. SQL PLUS 5. CONSULTAS DE DATOS 6. RESTRICCIÓN Y CLASIFICACIÓN DE LOS DATOS 7. FUNCIONES A NIVEL DE FILA 8. VISUALIZACIÓN DE DATOS

Más detalles

SINTAXIS DE SQL-92. ::= CREATE SCHEMA [ ... ]

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ] SINTAXIS DE SQL-92 Introducción: Se presenta brevemente un resumen de la sintaxis de SQL según el estándar ISO 9075 (SQL- 92), dividido en tres partes: - Lenguaje de Definición de Daots (LDD), - Lenguaje

Más detalles

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

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. SQL (Lenguaje de Consulta Estructurado): Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. ANSI (Instituto

Más detalles

Tema 33. El lenguaje SQL

Tema 33. El lenguaje SQL Tema 33. El lenguaje SQL Introducción... 1 Modos de uso... 2 Ejecución de las sentencias SQL... 2 Instrucciones DDL Data Definition Language-... 3 Instrucciones DML Data Manipulation Language-... 4 Instrucciones

Más detalles

MANUALITO MS-SQL SERVER

MANUALITO MS-SQL SERVER MANUALITO MS-SQL SERVER Contenido 1. Crear Store Procedures en MS SQL Server... 1 2. Crear Triggers en MS SQL Server... 5 3. Crear Vistas en MS SQL Server... 9 1. Crear Store Procedures en MS SQL Server

Más detalles

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1 Introducción... XIII Capítulo 1. Novedades de Access 2013... 1 Nuevas posibilidades de cifrado, compactación y reparación de archivos... 1 Trabajo en la nube... 2 Compartir la información... 3 Guardar

Más detalles

8 SQL SERVER 2008 RA-MA

8 SQL SERVER 2008 RA-MA ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo... 17 1.1 Novedades en SQL Server 2008... 17 1.2 Instalación de Microsoft SQL Server 2008... 19 1.3 Versiones de Microsoft SQL Server

Más detalles

SENTENCIAS Y CONSULTAS EN SQL SERVER

SENTENCIAS Y CONSULTAS EN SQL SERVER SENTENCIAS Y CONSULTAS EN SQL SERVER En esta sección nos preocuparemos por conocer, las consultas en SQL que describiremos aquí. Para eso haremos un pequeño de las palabras claves que se utilizan en SQL,

Más detalles

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

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

SQL básico. SQL básico http://idesweb.es/ 1. Contenido

SQL básico. SQL básico http://idesweb.es/ 1. Contenido SQL básico http://idesweb.es/ 1 SQL básico El presente documento no tiene más aspiraciones que servir de recordatorio mínimo para las órdenes más básicas y en su mínima expresión. No es un manual de SQL

Más detalles

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc). LENGUAJE SQL Un manejador de base de datos debe de contener lenguajes que permitan definir el modelos de los datos, este mismo es que permite crear la estructura de la base de datos. Lenguaje de Definicion

Más detalles

SQL Server 2000. FEMEPA SQL Server 2000

SQL Server 2000. FEMEPA SQL Server 2000 FEMEPA Partes del SQL El lenguaje SQL está compuesto de varios sub-lenguajes, entre los cuales destacan los tres siguientes: DML. Lenguaje de definición de datos. Todas las sentencias de manipulación de

Más detalles

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA ÍNDICE CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN SQL SERVER 2008 R2...17 1.2 INSTALACIÓN DE MICROSOFT SQL SERVER 2008 R2...18 1.3 VERSIONES DE MICROSOFT SQL SERVER

Más detalles

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO LENGUAJE DE CONSULTA ESTRUCTURADO - SQL 1. TIPOS DE DATOS 2. COMANDOS DDL 2.1 Créate 2.2 Drop 2.3 Alter 3. COMANDOS DML 3.1 Select 3.2 Insert 3.3 Update 3.4 Delete 4. CLAUSULAS 4.1 From 4.2 Where 4.3 Having

Más detalles

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

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h L1. ANSI SQL SQL, STANDS STRUCTURED QUERY LANGUAGE ANSI SQL 9 2 ESTANDARD SQL LENGUAJE DBMS RELACIONALES SQL SERVER 2005/2008, DBMS MICROSOFT TRANSACT SQL (T-SQL) LENGUAJE SQL SERVER 2005/2008 T-SQL SE

Más detalles

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.

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. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Temario. Índices simples Árboles B Hashing

Temario. Índices simples Árboles B Hashing Temario Introducción y fundamentos Introducción a SQL Modelo Entidad / Relación Modelo relacional Diseño relacional: formas normales Consultas Cálculo relacional Álgebra relacional Implementación de bases

Más detalles

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

2- Creación de tablas y manejos de datos. 2- Creación de tablas y manejos de datos. Objetivos: Crear tablas completas. Identificar qué tipo de datos a usar en cada campo Recursos: SQL SERVER 2012 Guías de práctica. http://msdn.microsoft.com/es-es/library/ms187752.aspx

Más detalles

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011 Structured Query Language () Fundamentos de Bases de Datos InCo - Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más

Más detalles

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

BASE DE DATOS TIPOS DE DATOS, VARIABLES, OPERADORES Y CONTROLES EN SQL SERVER BASE DE DATOS TIPOS DE DATOS, VARIABLES, OPERADORES Y CONTROLES EN SQL SERVER 2005 3 C O N T E N I D O 1. Tipos de datos 2. Variables 3. Operadores 4. Controles O B J E T I V O S Proporcionar al lector

Más detalles

SQL Los fundamentos del lenguaje

SQL Los fundamentos del lenguaje Introducción 1. Un poco de historia 11 2. Las normas SQL 12 3. Descripción rápida del modelo relacional 14 3.1 Principales conceptos del modelo relacional 15 3.2 Principales reglas 16 4. Los operadores

Más detalles

TEMA. Sistema de Gestión de Bases de Datos. Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009

TEMA. Sistema de Gestión de Bases de Datos. Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009 TEMA Sistema de Gestión de Bases de Datos Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009 Jorge Morato Lara Sonia Sánchez- Índice 1. Tema - Recuperación de la Información en Internet

Más detalles

SQL. Orígenes y Evolución

SQL. Orígenes y Evolución SQL 1 SQL. Orígenes y Evolución 2 SQL: Estándar oficial 3 Funciones de SQL DDL Data Definition Language Creación n de estructuras de la base de datos Integridad de los datos DML Data Manipulation Language

Más detalles

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción:

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción: Guía de MySQL Contenidos: 1.- Introducción: 2.- Creación de una base de datos. CREATE DATABASE. 3.- Creación de una tabla y mostrar sus campos (CREATE TABLE - SHOW TABLES - describe - DROP TABLE) 4.- Instrucción

Más detalles

Bases de Datos 2. Teórico

Bases de Datos 2. Teórico Bases de Datos 2 Teórico Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina

Más detalles

SQL SQL. Índice. Componentes. Objetivos

SQL SQL. Índice. Componentes. Objetivos Estándar En 1986, ANSI (American National Standard Institute) definión un estándar para (Structured Query Language) que fue posteriormente adoptado en 1987 como estándar internacional por ISO (International

Más detalles

SERVICIO NACIONAL DE APRENDIZAJE SENA

SERVICIO NACIONAL DE APRENDIZAJE SENA SERVICIO NACIONAL DE APRENDIZAJE SENA GUÍA DE APRENDIZAJE SISTEMA INTEGRADO DE GESTIÓN Proceso Gestión de la Formación Profesional Integral Procedimiento Ejecución de la Formación Profesional Integral

Más detalles

Bases de datos: Sistemas de bases de datos:

Bases de datos: Sistemas de bases de datos: Bases de datos: Sistemas de bases de datos: Un sistema de bases de datos es básicamente un sistema para archivar en computador, es decir, es un sistema computarizado cuyo propósito general es mantener

Más detalles

Grupo Kybele, http://www.kybele.es/ Pág. 1

Grupo Kybele, http://www.kybele.es/ Pág. 1 Bases de Datos APUNTES PARA EL MANEJO DE SQL*Plus Para cualquier consulta a la sintaxis de las órdenes SQL o SQL*PLUS puede consultarse cualquier libro de ORACLE, o los manuales gratuitos en pdf o en línea

Más detalles

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Motores de Bases de Datos MySQL (Oracle) SQL Server (Microsoft) PostgreSQL Oracle (Oracle) DB2 (IBM) Informix (IBM) Instalación

Más detalles

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1 TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1. Definición de SQL. Características 2. Selección del origen de los datos. Cláusula FROM 3. Selección de columnas. Columnas calculadas 4.

Más detalles

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

Base de datos I Facultad de Ingeniería. Escuela de computación. Base de datos I Facultad de Ingeniería. Escuela de computación. 1 2 Base de datos I, Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Bases de datos I en el desarrollo de

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

Acceso a bases de datos MySQL con PHP

Acceso a bases de datos MySQL con PHP GESTIÓN Y ADMINISTRACIÓN WEB Acceso a bases de datos MySQL con PHP Ing. CIP Fabián Silva Alvarado fsilvasys@hotmail.com DEFINICIÓN DE BASE DE DATOS Base de Datos es un conjunto de datos relacionados entre

Más detalles

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. En este

Más detalles

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 1 SQL Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 2 Structured Query Language Lenguaje de consulta para bases de datos comerciales. Originalmente llamado

Más detalles

ÍNDICE PRIMERA PARTE... 17

ÍNDICE PRIMERA PARTE... 17 ÍNDICE PREFACIO... xv PRIMERA PARTE... 17 CAPÍTULO 1. BASES DE DATOS... 19 BASE DE DATOS RELACIONAL... 20 ESTRUCTURA MÍNIMA DE ALMACENAMIENTO... 21 EJEMPLO DE TABLA... 22 RESUMEN... 23 CAPÍTULO 2. CONSULTAS

Más detalles

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

CONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes

Más detalles

Tipos de datos de campo disponibles en Access (MDB)

Tipos de datos de campo disponibles en Access (MDB) Tipos de datos de campo disponibles en Access (MDB) Nota La información recogida en este tema sólo se aplicará a bases de datos de Microsoft Access (.mdb). La siguiente lista resume todos los tipos de

Más detalles

Bases de Datos: Structured Query Language (SQL)

Bases de Datos: Structured Query Language (SQL) Structured Query Language (SQL): Introducción Bases de Datos: Structured Query Language (SQL) Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Más detalles

Introducción a las bases de datos.

Introducción a las bases de datos. Introducción a las BBDD 1 Centro de Referencia Linux UAM-IBM Introducción a las bases de datos. Carmen B. Navarrete Navarrete carmen_navarrete@telefonica.net Introducción a las BBDD 2 Qué vamos a ver?

Más detalles

CURSO DE SQL SERVER 2005

CURSO DE SQL SERVER 2005 CURSO DE SQL SERVER 2005 Una vez finalizado el curso, el alumno estará preparado para: Instalar y configurar SQL Server 2005. Comprender los conceptos más importantes del diseño de bases de datos. Crear

Más detalles

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas LENGUAJE SQL Que es SQL? SQL es un estándar un lenguaje estructurado para consultas SQL te permite acceder y manejar bases de datos SQL es un Estándar (ANSI American National Standards Institute) Que puede

Más detalles

INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE INTRODUCCIÓN AL SQL. TRANSACT SQL CONCEPTOS BÁSICO DE SQL SQL (Structured Query Language),

Más detalles

Objetos de la Base de Datos

Objetos de la Base de Datos 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

Más detalles

Procedimientos para agrupar y resumir datos

Procedimientos para agrupar y resumir datos Procedimientos para agrupar y resumir datos Contenido Introducción Presentación de los primeros n valores Uso de funciones de agregado 4 Fundamentos de GROUP BY 8 Generación de valores de agregado dentro

Más detalles

El lenguaje SQL es un lenguaje estándar para el acceso y

El lenguaje SQL es un lenguaje estándar para el acceso y 1. INTRODUCCIÓN El lenguaje SQL es un lenguaje estándar para el acceso y manipulación de bases de datos relacionales como SQL Server. Esto quiere decir que aprender SQL es algo indispensable para cualquier

Más detalles

ADMINISTRACION DE BASES DE DATOS EN ORACLE

ADMINISTRACION DE BASES DE DATOS EN ORACLE SQL LENGUAJE ESTRUCTURADO DE CONSULTA El nacimiento del lenguaje SQL data de 1970 cuando E. F. Codd publica su libro: "Un modelo de datos relacional para grandes bancos de datos compartidos". Ese libro

Más detalles

CONSULTAS SIMPLES SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS SIMPLES SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS SIMPLES SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS SIMPLES Vamos a empezar por la instrucción que más se utiliza en SQL, la sentencia SELECT. La

Más detalles

Unidad. Lenguaje SQL. (Structured Query Language)

Unidad. Lenguaje SQL. (Structured Query Language) Unidad Lenguaje SQL (Structured Query Language) 1 SQL Definición DDL Consulta y Actualización DML Create Alter Drop Select Insert Update Delete 2 SQL DDL CREATE TABLE nombre_tabla (nombre_columna tipo_dato/dominio

Más detalles

ÍNDICE INTRODUCCIÓN...13

ÍNDICE INTRODUCCIÓN...13 ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. EL MODELO RELACIONAL. LENGUAJE SQL...17 1.1 INTRODUCCIÓN AL MODELO RELACIONAL...17 1.2 RELACIONES...19 1.2.1 Definición formal de relación...21 1.2.2 Propiedades y

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

SQL: Lenguaje de acceso a bases de datos

SQL: Lenguaje de acceso a bases de datos SQL: Lenguaje de acceso a bases de datos Israel Herraiz Universidad Politécnica de Madrid Israel Herraiz, UPM SQL: Lenguaje de acceso a bases de datos 1/88 Contenidos 1 Introducción a las bases de datos

Más detalles

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación

Más detalles

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional PROGRAMAS DE ESTUDIO FORMATO 7 NOMBRE DE LA ASIGNATURA INTRODUCCIÓN A SQL CICLO, AREA O MODULO Área de Formación Profesional CLAVE DE LA ASIGNATURA IT222 OBJETIVOS GENERALES DE LA ASIGNATURA Al final del

Más detalles

Sql Basico. Seminar Introduction

Sql Basico. Seminar Introduction Sql Basico Seminar Introduction SQL Basico Sobre el modelo anterior de datos haremos un repaso de las consultas sql mas comunes. Devolver todos los datos de una tabla sin filtrar. Select campo_1, campo_2,

Más detalles

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Práctica preliminar Crear la siguiente base de datos de prácticas

Más detalles

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete Taller SQL - SUP Introducción al Lenguaje SQL. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete Claúsula Where Condiciones de Búsqueda Operadores de Comparación Rangos Listas Patrones

Más detalles

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com. Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DDL Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy Agenda SQL DDL Lenguaje SQL Sub-lenguajes Dialectos Agenda SQL DDL Esquemas

Más detalles

SQL: Lenguaje de acceso a bases de datos

SQL: Lenguaje de acceso a bases de datos SQL: Lenguaje de acceso a bases de datos Israel Herraiz Universidad Politécnica de Madrid Israel Herraiz, UPM SQL: Lenguaje de acceso a bases de datos 1/92 Contenidos 1 Introducción a las bases de datos

Más detalles

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. Comandos SQL Existen dos tipos de comandos SQL: 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

Más detalles

APÉNDICE SQL (Structures Query Language)

APÉNDICE SQL (Structures Query Language) SQL 1 / 7 APÉNDICE SQL (Structures Query Language) SQL se ha establecido como lenguaje de bases de datos relacionales estándar, y se pueden distinguir tres partes: DDL (Data Definition Language) permite

Más detalles

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales * Definición de datos en SQL * Consulta de datos en SQL - Estructura básica de una sentencia

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

Manual Práctico de SQL. ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com

Manual Práctico de SQL. ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com ÍNDICE INTRODUCCIÓN 3 PASOS PARA IMPLEMENTAR UNA BD 5 CREAR UNA BD 6 SENTENCIA CREATE 8 LIGADURAS 9 ELIMINACIÓN DE TABLAS 14 SENTENCIA

Más detalles

BREVE INTRODUCCIÓN AL SQL Aplicación al Programa Escuela Última actualización: 17/10/2000

BREVE INTRODUCCIÓN AL SQL Aplicación al Programa Escuela Última actualización: 17/10/2000 Secretaría General de Educación y Formación Profesional Dirección General de Educación, Formación Profesional e Innovación Educativa Subdirección General de Acción Educativa BREVE INTRODUCCIÓN AL SQL Aplicación

Más detalles

Lenguaje SQL para Novatos

Lenguaje SQL para Novatos Lenguaje SQL para Novatos Conceptos básicos SQL (Structured Query Language) es un lenguaje estructurado para la consulta de los datos organizados en una base de datos. Una consulta es una instrucción que

Más detalles

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1 UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEM LABORATORIO DE BES DE DATOS 1 Prof. Marco Aedo Práctica de Laboratorio Nº 6 I. OBJETIVOS

Más detalles

Tema 4. Lenguajes de consulta comerciales

Tema 4. Lenguajes de consulta comerciales Tema 4. Lenguajes de consulta comerciales 4.1. Introducción En el tema anterior hemos estudiado las operaciones del álgebra relacional y el cálculo relacional, imprescindibles para entender las consultas

Más detalles

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA. BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA. La creación y manipulación de tablas Tipos de datos en SQL Operadores y condiciones lógicas La sentencia CREATE TABLE Estructura general Uso simplificado

Más detalles

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: Bases de Datos Introducción a ORACLE Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: o Tradicionales como INTEGER, VARCHAR2, DATE,..., etc. o Nuevos y complejos:

Más detalles

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas. Vistas. El resultado de una consulta en el caso de SQL siempre es una tabla, ésta se puede hacer permanente dentro de la base de datos. En este caso se dice que esta tabla resultado es una vista o una

Más detalles

CURSO TRANSACT SQL MANUAL TÉCNICO CURSO TRANSACT SQL MANUAL TÉCNICO 1

CURSO TRANSACT SQL MANUAL TÉCNICO CURSO TRANSACT SQL MANUAL TÉCNICO 1 CURSO TRANSACT SQL MANUAL TÉCNICO CURSO TRANSACT SQL MANUAL TÉCNICO 1 Introducción... 3 Consultas Básicas... 3 Consultas de Selección... 3 Consultas de Modificación... 7 Consultas de Combinación... 9 Consultas

Más detalles

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

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo: TEMA 7.- EL ESTANDAR SQL. El Sublenguaje de Manipulación. El Sublenguaje de Definición. El Sublenguaje de Control. El Sublenguaje Huésped. 1. El Sublenguaje de Manipulación. (Se verá en la clase de problemas)

Más detalles

Guía práctica de SQL

Guía práctica de SQL Guía práctica de SQL Francisco Charte Ojeda Agradecimientos Introducción Qué es SQL? Aplicaciones de SQL Intérpretes de SQL Tipos de RDBMS Cómo usar este libro Convenciones tipográficas 1. El modelo relacional

Más detalles

Consulta y manipulación de datos. El lenguaje SQL

Consulta y manipulación de datos. El lenguaje SQL Bloque 2 Consulta y manipulación de datos. El lenguaje SQL Como ya hemos visto en el bloque anterior, una base de datos relacional consiste en un conjunto de tablas, a cada una de las cuales se le asigna

Más detalles

Curso de SQL. Introducción. Breve Historia. Componentes del SQL. Comandos

Curso de SQL. Introducción. Breve Historia. Componentes del SQL. Comandos Curso de SQL Introducción El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones

Más detalles

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127 I. DATOS INFORMATIVOS Carrera Especialidad Curso Código Ciclo : Tercero Requisitos Duración Horas Semana : 06 horas Versión : v.0110 II. SUMILLA : COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería

Más detalles

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

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA Tema 2 Modelos de Base de Datos Profesor Luis Gmo. Zúñiga Mendoza UMCA Introducción Como hemos visto la base de datos consiste en una colección de datos estructura, que finalmente permite ser accedida

Más detalles

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008 TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008 ESTRUCTURA DEL SEMINARIO Modulo 1: Crear y administrar una base de datos SQL Server Métodos para crear una base de datos SQLServer.

Más detalles

3. El catálogo 26. Laboratorio de Bases de Datos

3. El catálogo 26. Laboratorio de Bases de Datos ÍNDICE Continuación SQL Índice 1. Continuación del SQL como DML (Lenguaje de Manipulación de Datos) 1 1.1. Inserción de datos................................. 1 1.2. Borrado de datos..................................

Más detalles

MANUAL BÁSICO DE ORACLE

MANUAL BÁSICO DE ORACLE MANUAL BÁSICO DE ORACLE ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. TIPOS DE DATOS... 4 1.1 TIPOS DE DATOS ALFANUMÉRICOS...

Más detalles

SQL (Structured Query Language)- DML

SQL (Structured Query Language)- DML SQL (Structured Query Language)- DML Data Manipulation Language: Data Definition Language: Control Commands: Authorization Commands: SELECT, UPDATE, INSERT, DELETE CREATE: TABLE, INDEX, VIEW DROP: TABLE,

Más detalles

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva INDICE Prólogo XXIII Por qué este libro es para usted XXVII Primera Parte. Panorámica general de SQL 1 1. Introducción 3 El lenguaje SQL 3 El papel de SQL 6 Características y beneficios de SQL 7 Independencia

Más detalles