db admin fund full

223
¿Cómo se almacenan los datos en las tablas?

Upload: jorge-ivan-pincay-ponce

Post on 24-Jan-2015

450 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Db admin fund full

¿Cómo se almacenan los

datos en las tablas?

Page 2: Db admin fund full

Perspectiva general de la lección

1.1 Comprender cómo se almacenan los datos en las tablas.En esta lección repasarán:CampoColumnaFilaRegistroTablaVariable

Page 3: Db admin fund full

CampoSe refiere a la ubicación en un registro en el cual se almacena un tipo específico de

datos.Por ejemplo, el REGISTRO-EMPLEADO puede contener campos para almacenar elApellido, Nombre, Dirección, Ciudad, Estado, CP, Fecha-Contratación, Salario-

Actual,Puesto, Departamento, etc. Los campos individuales se caracterizan por su

longitudmáxima y el tipo de datos (por ejemplo, alfabético, numérico o financiero) que

puedencontener. La facilidad para crear estas especificaciones se encuentra contenidageneralmente en el lenguaje de definición de datos (DDL- Data Definition

Language). Enun sistema administrador de bases de datos relacionales (RDMS – Relational

DatabaseManagment System) a los campos se les conoce como columnas.

Un campo es un punto en una tablaUn campo=dato=algún valor

Page 4: Db admin fund full

ColumnaUn RDMS (sistema administrador de bases de datos relacionales ) se

refiere al nombre deun atributo. A la colección de los valores de una columna que forman la

descripción deuna entidad en particular se le llama tupla o fila. Una columna equivale a

un campo de unregistro en un sistema de archivos no relacionales.Una columna es un grupo de elementos que se encuentran enlistados

hacia arriba y abajo,es decir, de forma vertical.

Page 5: Db admin fund full

FilaSe refiere a una serie de elementos organizados de forma horizontal

dentro de un tipo deestructura, por ejemplo, una serie continua de celdas colocadas de

izquierda a derecha enuna hoja de cálculo; una línea horizontal de píxeles en una pantalla de

video o unconjunto de valores alineados horizontalmente en una tabla.Una fila es un grupo de elementos que se encuentran enlistados de un

extremo a otro (deizquierda a derecha, es decir, horizontalmente).

Page 6: Db admin fund full

Registro

Se refiere a una estructura de datos que es un conjunto de campos (elementos), cada uno

con su propio nombre y tipo.Un registro es un grupo de campos en una fila.

Page 7: Db admin fund full

Tabla

En un RDMS, se refiere a una estructura de datos caracterizada por filas y columnas que contiene datos en las celdas dadas en las intersecciones de las filas y las columnas. La tabla es la estructura subyacente de una relación.

Una tabla es un conjunto de filas y columnas.

Page 8: Db admin fund full

Variable

El nombre de una variable es la etiqueta que se le asigna a una columna.Nota: Esta es tal vez una definición ligeramente diferente de la que ha

aprendido en una clase de programación. En programación, una variable se define como una ubicación de almacenamiento con un nombre capaz de contener datos que se pueden modificar durante la ejecución de un programa.

Page 9: Db admin fund full

Reporte de calificaciones – Proyecto estudiantil

Nombre-

Docente

ID-Alumn

o

Nombre-

Alumno

Calificación

Número-

Sección

Pérez

López campo campo

Martínez

campo

R e g i s t r o

Page 10: Db admin fund full

Tarea

Cree una tabla/base de datos que contenga todos los registros de su reporte de

calificaciones.

Page 11: Db admin fund full

Conceptos de bases de datos

relacionales

Page 12: Db admin fund full

Perspectiva general de la lección

1.2 Comprender conceptos de bases de datos relacionales.En esta lección aprenderán:Modelo relacionalLos tres fundamentos de una base de datos modernaRelación uno a unoRelación varios a variosRelación padre/hijoClaves

Page 13: Db admin fund full

Modelo relacionalModelo de datos en el cual éstos se encuentran organizados en relaciones

(tablas). Este es el modelo implementado en la mayoría de los sistemas administradores de bases de datos modernos.

Page 14: Db admin fund full

Los tres fundamentos de una base de datos moderna

Registros – Datos.Atributos/campos – Características.Relaciones/claves – Cómo se enlazan las bases de datos.

Page 15: Db admin fund full

Relación uno a unoAsociación entre dos tablas en la cual el valor de la clave principal de cada

registro en la tabla primaria corresponde al valor en el campo o campos coincidentes de uno y sólo un registro en la tabla relacionada.

Page 16: Db admin fund full

Relación varios a variosAsociación compleja entre dos conjuntos de parámetros en la cual muchos

de los del primer conjunto se pueden relacionar con muchos otros del segundo. Es común utilizar una relación varios a varios para describir una asociación entre dos tablas en la cual un registro de cualquiera de las tablas se puede relacionar con muchos registros de la otra tabla.

Page 17: Db admin fund full

En una relación varios a varios, las relaciones pueden ser complejas.Las tablas en una relación varios a varios tienen varios datos únicos en

común.

Por ejemplo, un alumno puede tomar una o muchas clases, las clases pueden tener uno o muchos alumnos y los profesores pueden impartir una o muchas clases.

En estos ejemplos, el vínculo podría incluir:Alumno a claseClase a profesorProfesor a alumno

Page 18: Db admin fund full

Relación padre/hijoConcerniente o referente a una relación entre los nodos de un árbol

(estructura de datos), en la cual el padre se encuentra un paso más cercano a la raíz (es decir, en un nivel superior) que el hijo.

Page 19: Db admin fund full

Claves

Una clave principal define una o más columnas que identifican de forma única cada fila de la tabla.

De igual manera que con una clave principal, una restricción única (Unique) define que los valores dentro de una columna deben ser únicos. Sin embargo, a diferencia de la clave primaria, es posible tener más de una restricción única en una tabla.

Las relaciones (o vínculos) entre las tablas se almacenan como restricciones de claves foráneas/externas.

Page 20: Db admin fund full

TareaLos alumnos reunirán datos utilizando la información de sus clases del día

con el fin de crear una tabla con una relación varios a varios.

Page 21: Db admin fund full

Lenguaje de manipulación de datos (DML – Data

Manipulation Language)

Page 22: Db admin fund full

Perspectiva general de la lección

1.3 Comprender el lenguaje de manipulación de datos (DML).En esta lección repasarán:La relación entre SQL, DML y DDLDMLSELECTUPDATEDELETE

Page 23: Db admin fund full

La relación entre SQL, DML y DDL

SQL es un lenguaje diseñado para utilizarse sólo con bases de datos.Lenguaje de consulta estructurado (SQL – Structured Query Language). Es

un sublenguaje de base de datos utilizado para realizar consultas, actualizaciones y administrar bases de datos relacionales. Es el estándar para los productos de bases de datos, el acrónimo utilizado es SQL.

DML-DDL: son las dos herramientas de lenguaje principales de SQL.Lenguaje de manipulación de datos (DML). En un sistema de gestión de

bases de datos (DBMS) es un lenguaje utilizado para insertar datos, actualizarlos y realizar consultas en una base de datos. El lenguaje DML es capaz de realizar cálculos matemáticos y estadísticos que facilitan la creación de reportes, el acrónimo utilizado es DML.

El lenguaje DML se utiliza para manipular los datos de una base de datos.

Page 24: Db admin fund full

DML-DDL (continuación)Lenguaje de definición de datos (DDL). Lenguaje que define todos los

atributos y propiedades de una base de datos, especialmente la presentación de los registros, la definición de campos, claves, ubicaciones de archivos y estrategias de almacenamiento, el acrónimo utilizado es DDL.

El lenguaje DDL se utiliza para crear la estructura para la base de datos, el esquema de la base de datos o ambos. Se cubrirá este tema a mayor detalle en la lección 1.4.

Page 25: Db admin fund full

DMLEl lenguaje DML se utiliza para recuperar y modificar la información de una

base de datos. Estos comandos se utilizan por todos los usuarios de la base de datos durante un día normal.

A continuación se presenta un repaso básico de algunos de los comandos más comunes del lenguaje DML.

Page 26: Db admin fund full

SELECT

El comando SELECT es el más utilizado en DML. Permite a los usuarios recuperar información específica de la base de datos.

SELECT *FROM Beca_infoWHERE beca_cantidad >

36000Con este código, hemos seleccionado todos los alumnos

becados con más de $36,000 en la tabla Beca_info.

Page 27: Db admin fund full

INSERT

El comando INSERT se utiliza para agregar registros a una tabla existente.

INSERT INTO Beca_info VALUES (‘Juan’, ‘Pérez’,12345,2200)

A través de este código hemos creado a Juan Pérez, se le ha asignado un ID de alumno así como una beca con el valor de $2200.

Hay cuatro valores especificados para este registro los cuales corresponden a los atributos/campos en la tabla en el orden en el cual se definieron: nombre, apellido, id_alumno y beca_cantidad.

Page 28: Db admin fund full

UPDATE

El comando UPDATE se puede utilizar para modificar información contenida en una tabla, ya sea datos individuales o grupos de datos.

UPDATE Beca_infoSET beca_cantidad = beca_cantidad + 4000WHERE id_alumno = 12345

El comando UPDATE llama a la tabla Beca_info y le suma $4,000 al valor de la beca del alumno 12345.

Page 29: Db admin fund full

DELETE

El comando DELETE se utiliza para eliminar registros de una tabla existente.

DELETE FROM Beca_infoWHERE id_alumno = 12345

Puesto que estamos borrando todos los campos de este registro en particular de la tabla, no necesitamos especificar los nombres de los campos como lo hicimos cuando insertamos el registro. Con este procedimiento se elimina el registro con el id_alumno=12345.

Page 30: Db admin fund full

Lenguaje de definición de datos (DDL - Data

Definition Language)

Page 31: Db admin fund full

Perspectiva general de la lección

1.4 Comprender el lenguaje de definición de datos (DDL).En esta lección repasarán:

Relación entre DDL y DMLDDLEsquemaCREATEALTERDROP

Page 32: Db admin fund full

Relación entre DDL y DMLDML

Lenguaje de manipulación de datos (DML). Un sistema de gestión de bases de datos (DBMS) es un lenguaje utilizado para insertar datos, actualizarlos y realizar consultas en una base de datos. El lenguaje DML es capaz de realizar cálculos matemáticos y estadísticos que facilitan la creación de reportes. El acrónimo utilizado es DML.

El lenguaje DML se utiliza para manipular los datos de una base de datos. Puede encontrar más información referente a este tema en la lección 1.3.

Page 33: Db admin fund full

Relación entre DDL y DML (continuación)

DDLLenguaje de definición de datos (DDL). Lenguaje que define todos los

atributos y propiedades de una base de datos, especialmente la presentación de los registros, la definición de campos, claves, ubicaciones de archivo y estrategias de almacenamiento. El acrónimo utilizado es DDL.

El lenguaje DDL se utiliza para crear la estructura para la base de datos, el esquema de la base de datos o ambos. El lenguaje DDL trabaja al nivel de la tabla de la base de datos.

Page 34: Db admin fund full

Esquema

El esquema describe la estructura de la base de datos a un DBMS en el lenguaje proporcionado por el DBMS. Un esquema define aspectos de la base de datos como sus atributos (campos) así como los dominios y parámetros de los mismos. Los esquemas se definen generalmente utilizando comandos de un lenguaje DDL que sea compatible con el sistema de base de datos.

Page 35: Db admin fund full

CREATE

Hay dos modalidades de la sentencia CREATE.La siguiente sentencia crea una base de datos llamada Alumnos.

CREATE DATABASE AlumnosLa siguiente sentencia crea una tabla con cuatro

atributos/campos en la base de datos actual. Todos los campos deben tener datos cuando se rellenen debido al atributo not null.CREATE TABLE beca_info(nombre char(20) not null,apellido char(20) not null,id_alumno int not null,beca_cantidad int not null)

Page 36: Db admin fund full

ALTER

• ALTER cambia la estructura de la tabla, en este ejemplo cambiamos la estructura de la tabla Beca_info. Añadimos un campo numérico como referencia a un programa federal. El campo puede estar vacío o puede contener un valor null.

ALTER TABLE Beca_infoADD Federal int null

También es posible modificar atributos. En el siguiente ejemplo modificamos la estructura de la tabla Beca_info, campo apellido a un tipo de dato VARCHAR (tamaño).

ALTER TABLE Beca_info ALTER apellido VARCHAR(35)

Page 37: Db admin fund full

DROP

La sentencia DROP TABLE elimina la tabla y todos sus datos.En el siguiente código se elimina la tabla Beca_info y todo el contenido de

la tabla.

DROP TABLE Beca_info

Page 38: Db admin fund full

DML

El lenguaje DML se utiliza para recuperar y modificar la información de una base de datos. Estos comandos se utilizan por todos los usuarios de la base de datos durante un día normal.

A continuación se presenta un repaso básico de algunos de los comandos más comunes del lenguaje DML:• SELECTEl comando SELECT es el más utilizado en DML. Permite a los usuarios recuperar información específica de

la base de datos.

SELECT *FROM Beca_infoWHERE beca_cantidad > 36000

Con este código, hemos seleccionado todos los alumnos becados con más de $36,000 en la tabla Beca_info.

Page 39: Db admin fund full

INSERTEl comando INSERT se utiliza para agregar registros a una

tabla existente.INSERT INTO Beca_infoVALUES (‘Juan’, ‘Pérez’,12345,2200)

Hay cuatro valores especificados para este registro los cuales corresponden a los atributos/campos en la tabla en el orden en el cual se definieron: nombre, apellido, id_alumno y beca_cantidad.

A través de este código hemos creado a Juan Pérez, se le ha asignado un ID de alumno así como una beca con el valor de $2200.

Page 40: Db admin fund full

UPDATE

El comando UPDATE se puede utilizar para modificar información contenida en una tabla, ya sea datos individuales o grupos de datos.

UPDATE Beca_infoSET beca_cantidad = beca_cantidad + 4000WHERE id_alumno = 12345

El comando UPDATE llama a la tabla Beca_info y le suma $4,000 al valor de la beca del alumno 12345.

Page 41: Db admin fund full

DELETE

El comando DELETE se utiliza para eliminar registros de una tabla existente.

DELETE FROM Beca_infoWHERE id_alumno = 12345

Puesto que estamos borrando todos los campos de este registro en particular de la tabla, no necesitamos especificar los nombres de los campos como lo hicimos cuando insertamos el registro. Con este procedimiento se elimina el registro con el id_alumno=12345.

Page 42: Db admin fund full

Selección de tipos de datos

Page 43: Db admin fund full

Perspectiva general de la lección

2.1 Selección de tipos de datos.Comprender lo que son los tipos de datos, el por qué de su importancia y

cómo es que afectan los requerimientos de almacenamiento. (Esta lección se enfoca en tipos de datos de Microsoft Access, MySQL y Microsoft SQL Server).

En esta lección repasarán:Tipos de datos.La importancia de los tipos de datos.Cómo es que los tipos de datos afectan los requerimientos de

almacenamiento.

Page 44: Db admin fund full

Tipo de dato (definición de un conjunto de datos)

• En programación, se refiere al conjunto de datos que especifican el rango posible de valores del mismo, las operaciones que se pueden llevar a cabo con los valores y la forma en la cual se almacenan los valores en memoria.

La definición de un tipo de dato permite a la computadora manipular los datos de manera apropiada. Los tipos de datos son generalmente utilizados en lenguajes de alto nivel y normalmente incluyen tipos como el real, entero, punto flotante, carácter, booleano y apuntador. La manera en la cual un lenguaje de base de datos manipula los tipos de datos es una de sus características primordiales.

“Tipo de dato” se refiere a la forma en la cual se introducirá el dato, por ejemplo, cuando se necesita el valor “9”, ¿se refiere a la palabra “nueve” o al número “9”?

Page 45: Db admin fund full

Ejemplos de tipos de datos:Tipo entero es cualquier número sin decimales.

37, un número positivo.-50, un número negativo.

Punto flotante es cualquier número real.314,600,000 ; o 3146E5 es una notación en punto flotante.0.0000451; o 451E-7 es una notación en punto flotante.

Page 46: Db admin fund full

Ejemplos de tipos de datos (continuación)

Tipo carácter es cualquier número o letra que no desempeñará funciones matemáticas.Dirección: Calle Hidalgo 5123.Número telefónico: 123-456-7890.

El tipo booleano es únicamente, Verdadero o Falso1 o 0.Verdadero o Falso.

Page 47: Db admin fund full

¿Por qué son importantes los tipos de datos?

Las bases de datos se encuentran integradas por tablas, las tablas están formadas por campos que se definen por sus tipos de datos.

El uso de un tipo de dato incorrecto puede causar una degradación en el desempeño de la base de datos y puede llevar a una corrupción de los datos.

El uso de un tipo de dato incorrecto puede causar que la base de datos utilice una cantidad mucho mayor de almacenamiento que el necesario.

Page 48: Db admin fund full

¿Cómo es que los tipos de datos afectan los requerimientos de almacenamiento?

Cada tipo de datos cuenta con una cantidad de memoria o almacenamiento específico. El almacenamiento para la mayoría de los tipos de datos es fijo aunque no se utilice el máximo del espacio.

Elija el tipo de dato que corresponda a la función necesaria y al tamaño requerido.A continuación se presentan 3 tipos de datos numéricos enteros diferentes:

Byte: Contiene números de 0 a 255 en 1 byte de almacenamiento.Integer: Contiene números enteros entre – 32,768 y 32,7672 en 2 bytes de almacenamiento.

Long: Contiene números enteros entre – 2,147,483,648 y 2,147,483,647 en 4 bytes de almacenamiento.

Si la base de datos no va a contener números enteros mayores a 255 pero utiliza sólo el tipo de dato long, la base de datos ocupará 4 veces más espacio de almacenamiento del necesario.

Page 49: Db admin fund full

Tipos de datos y almacenamiento (continuación)

A continuación se presentan tres ejemplos de tipos de datos carácter:Char (tamaño): Contiene una cadena de longitud fija. El tamaño fijo se

especifica entre paréntesis. Contiene un máximo de 8,000 caracteres.Varchar (tamaño): Contiene una cadena de longitud variable. El tamaño

máximo se especifica entre paréntesis. Contiene un máximo de 8,000 caracteres.

Texto: Contiene una cadena de caracteres de longitud variable. El tamaño máximo es de 2 GB de datos de texto.

Page 50: Db admin fund full

Cuestionario1. ¿Cuál tipo de dato se debe utilizar para contener el

nombre de un alumno y por qué?2. ¿Cuál tipo de dato se debe utilizar para contener el ID de

un alumno y por qué?3. ¿Cuál tipo de dato se debe utilizar para contener la

calificación de un alumno y por qué?

Page 51: Db admin fund full

¿Qué son las tablas y cómo se crean?

Page 52: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderá:¿Qué es la sintaxis ANSI SQL?¿Qué es una tabla?¿Por qué se utilizan las tablas?¿Cómo se crean las tablas?

Page 53: Db admin fund full

¿Qué es ANSI?Instituto Nacional Estadounidense de Estándares (ANSI)

Organización formada en 1918 por un pequeño grupo de sociedades de ingeniería y agencias gubernamentales.

Originalmente llamada Comité Estadounidense de Estándares para la Ingeniería (AESC).

Page 54: Db admin fund full

¿Qué es la sintaxis ANSI SQL?El lenguaje de consulta estructurado (SQL) se diseñó para

administrar bases de datos relacionales.Consulte el repaso de la lección 1.2 para más información sobre SQL.

La sintaxis de SQL es un conjunto de reglas que gobiernan la estructura y contenido de las sentencias.

Cuando no se siguen las reglas ocurre un error de sintaxis.

Page 55: Db admin fund full

¿Qué es una tabla?• Tabla: una estructura de datos que generalmente consiste en una lista de

entradas, cada entrada se identifica con una clave única y contiene un conjunto de valores relacionados.Generalmente se implementa una tabla como un vector de registros, una

lista vinculada o (en un lenguaje más primitivo) varios vectores de diferentes tipos de datos todos utilizando un esquema de indexación en común.

A continuación se muestra un registro en una tabla con los tipos de datos etiquetados:

El ID del alumno es la clave única o índice.El nombre, la dirección y la ciudad componen el resto del registro.

ID alumno Apellido Nombre Dirección Ciudad

Char (9)123456789

Vchar(20)Pérez

Vchar(20)Guillermo

Vchar(40)Calle Hidalgo

3456

Vchar(20)Toluca

Page 56: Db admin fund full

¿Qué es una tabla? (Continuación)

En bases de datos relacionales, se refiere a una estructura de datos caracterizada por filas y columnas que contiene datos en las celdas dadas en las intersecciones de las filas y las columnas. La tabla es la estructura subyacente de una relación.

En esta tabla, “Guillermo” es una intersección de una fila y una columna. La celda se llama Nombre, y el tipo de dato es Vchar con un tamaño de 20. Estas celdas son las que conforman la tabla.

ID alumno Apellido Nombre Dirección Ciudad

Char (9)123456789

Vchar(20)Pérez

Vchar(20)Guillermo

Vchar(40)Calle Hidalgo

3456

Vchar(20)Toluca

Page 57: Db admin fund full

¿Por qué se utilizan las tablas?Las tablas organizan datos lo que facilita encontrar la información.Las tablas forman la base de las relaciones de datos.Las tablas almacenan datos que se pueden relacionar con otros a

través de una clave única o índice.La siguiente tabla forma una lista de datos en un orden específico.El administrador elige como formar la tabla o su esquema

(Consulte la lección 1.4).La clave o índice de esta tabla es ID alumno.

ID alumno Apellido Nombre Dirección Ciudad

Char (9)123456789

Vchar(20)Pérez

Vchar(20)Guillermo

Vchar(40)Calle Hidalgo

3456

Vchar(20)Toluca

Page 58: Db admin fund full

¿Cómo se crean las tablas?Sintaxis

CREATE TABLE nombre_tabla(nombre_columna1 tipo_dato,nombre_columna2 tipo_dato,nombre_columna3 tipo_dato,...)

El siguiente código crea una tabla llamada alumno_info con cinco campos/columnas:

CREATE TABLE alumno_info(id_alumno char(9) not null,nombre char(20) not null,apellido char(20) not null,dirección char(40) not null,ciudad char(20) not null)

Page 59: Db admin fund full

EvaluaciónCree una tabla que almacene las calificaciones finales de los

alumnos de la clase.Incluya el nombre de la tabla y un mínimo de cuatro campos.Actividad por puntos extra: Inserte otros dos campos que le agreguen

valor y utilidad a la tabla.Justifique la utilidad de los dos campos adicionales.

Page 60: Db admin fund full

Creación de vistas utilizando T-SQL

Page 61: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:¿Qué es T-SQL?¿Cómo se diferencia T-SQL de otros diseñadores de bases de datos con

interfaz gráfica?¿Qué es una vista?¿Cuáles son las ventajas de las vistas?¿Cómo se crea una vista?

Page 62: Db admin fund full

¿Qué es T-SQL?

Transact SQL (T-SQL) es una extensión del lenguaje de programación de base de datos SQL.

T-SQL es un dialecto sofisticado de SQL que cuenta con herramientas adicionales a las definidas en el estándar ANSI SQL-92.

Page 63: Db admin fund full

¿Cómo se diferencia T-SQL de otros diseñadores de bases de datos con

interfaz gráfica?

T-SQL utiliza una interfaz de línea de comandos para funcionar con la base de datos en lugar de una interfaz gráfica.

Es un lenguaje de programación por procedimientos.Los diseñadores de bases de datos con interfaz gráfica (como

Microsoft Access) son orientados a objetos y utilizan una interfaz basada en arrastrar y soltar elementos en lugar de una interfaz de línea de comandos. Los diseñadores de bases de datos con interfaz gráfica se estudiarán con mayor detalle en la lección 2.3b.

Page 64: Db admin fund full

¿Qué es una vista?En sistemas de gestión de bases de datos relacionales (RDMS) se crea una

tabla lógica a través de las especificaciones de una o más operaciones relacionales en una o más tablas.

Una vista es una tabla virtual que muestra los datos de una o varias tablas seleccionadas.

Por ejemplo:

Un usuario de una base de datos podría ver sólo tablas virtuales. Sólo el administrador de la base de datos puede ver las tablas reales.

ID alumno Apellido Nombre Dirección Ciudad

Char (9)123456789

Vchar(20)Pérez

Vchar(20)Guillermo

Vchar(40)Calle Hidalgo

3456

Vchar(20)Toluca

Page 65: Db admin fund full

¿Cuáles son las ventajas de las vistas?

Una vista se puede concebir como una consulta almacenada.Los datos accesibles a través de la vista no se almacenan en

la base de datos como un objeto definido.Lo que se almacena en la base de datos es una sentencia

SELECT. El resultado del conjunto de sentencias SELECT forman la tabla virtual.

La tabla virtual se accede al referenciar el nombre de la vista en sentencias T-SQL como se indica a continuación:

SELECT * from <Nombre de la vista>Where <condición = x>

Page 66: Db admin fund full

¿Cómo se pueden utilizar las vistas?Una vista se puede utilizar para:

Hacer que el usuario utilice filas específicas en la tabla. Por ejemplo: puede permitirle a un empleado que sólo vea las filas que registren su trabajo en la tabla de seguimiento laboral.

Hacer que el usuario utilice columnas específicas. Por ejemplo: puede permitirle a los empleados que no estén en nómina que vean las columnas de nombre, oficina, teléfono de oficina y departamentos, pero no las columnas con información salarial o personal.

Restringir información en lugar de proporcionar detalles. Por ejemplo, puede mostrar a suma de una columna o el valor máximo o mínimo de una columna.

Page 67: Db admin fund full

¿Cómo se crea una vista?CREATE VIEW <nombre de la vista> ASSELECT <nombre(s)_columna)>FROM <nombre_tabla>

Ejemplo:

CREATE VIEW graduados ASSELECT id_alumno, nombre_alumnoFROM alumnos_inscritos

El código anterior crea una tabla virtual llamada graduados que contiene los datos de identificación del alumno y su nombre. Los datos se obtienen de la tabla alumnos_inscritos.

Page 68: Db admin fund full

Creación de una vista con condiciones

Para crear una vista, utilice el siguiente código:

CREATE VIEW <nombre de la vista> ASSELECT <nombre(s)_columna)>FROM <nombre_tabla>WHERE condición

Por ejemplo: este código crea una tabla virtual que contiene sólo mujeres.

CREATE VIEW graduados ASSELECT id_alumno, nombre_alumnoFROM alumnos_inscritosWHERE Sexo = “F”

Page 69: Db admin fund full

EvaluaciónEscriba un código para crear cada una de las siguientes vistas utilizando sólo una

condición por vista.

Cree una vista de la tabla llamada alumnos_escuela_medica que seleccione todos los alumnos varones.

Cree una vista de la tabla llamada habilidades_empleados que seleccione todos los empleados que cuenten con entrenamiento de primeros auxilios.

Cree una vista de la tabla llamada alumnos_inscritos que seleccione todos los alumnos con puntuaciones superiores a 62.

Page 70: Db admin fund full

Creación de vistas utilizando diseñadores de bases de

datos con interfaz gráfica

Page 71: Db admin fund full

Perspectiva general de la lecciónEn esta lección aprenderán:

¿Qué es un diseñador de bases de datos con interfaz gráfica?¿Cómo se diferencia T-SQL de los diseñadores de base de datos con

interfaz gráfica?¿Qué es una Vista?¿Qué es una Consulta?¿Cómo se crea una Vista?¿Cómo se crean las consultas en Vista Diseño?

Page 72: Db admin fund full

¿Qué es un diseñador de bases de datos con interfaz gráfica?

Un diseñador de bases de datos con interfaz gráfica es en gran parte un método orientado a objetos de la administración de base de datos que utiliza funciones para arrastrar y soltar elementos, menús desplegables o ambos.

Un diseñador de bases de datos con interfaz gráfica como Jet SQL se utiliza en Microsoft Access para extraer, manipular y estructurar datos que residen en un sistema de gestión de bases de datos relacionales (RDBMS).

Jet SQL esta principalmente basado en el estándar ANSI SQL-92 pero con extensiones adicionales.

Page 73: Db admin fund full

¿Cómo se diferencia T-SQL de los diseñadores de base de datos con

interfaz gráfica?

T-SQL es un lenguaje de programación por procedimientos que utiliza una interfaz de línea de comandos para ayudar al usuario a utilizar la base de datos.

Los diseñadores de base de datos con interfaz gráfica como Microsoft Access, son orientados a objetos y se basan en arrastrar y soltar funciones en lugar de utilizar líneas de comandos.

Page 74: Db admin fund full

¿Qué es una Vista?Una vista es una tabla virtual que muestra los datos de una o

varias tablas seleccionadas.En sistemas de gestión de bases de datos relacionales (RDMS)

se crea una tabla lógica a través de las especificaciones de una o más operaciones relacionales en una o más tablas.

Page 75: Db admin fund full

¿Qué es una Consulta?Consulta (1). Conjunto específico de instrucciones para extraer

datos particulares.Consulta (2). Para extraer datos de una base de datos y

presentarlos para su uso.Una consulta es una pregunta a una tabla o tablas de una base de datos.

La sintaxis de la pregunta depende del lenguaje de la base de datos. En esta lección nos enfocaremos en consultas realizadas en diseñadores de base de datos con interfaz gráfica.

Page 76: Db admin fund full

¿Cómo se crea una Vista?Una Vista es una consulta SELECT que selecciona datos de

una tabla, permitiéndole ver los datos en un orden dado.En Access puede utilizar consultas para seleccionar datos de

una tabla o tablas o de otras consultas. Los datos se limitan dependiendo de la definición de la consulta.Las consultas son comandos SQL como se indica a continuación:

SELECTUPDATEDELETE

Las consultas pueden incluir cláusulas como:WHEREFROMORDER BY

Page 77: Db admin fund full

¿Cómo se crean las consultas en Vista Diseño?

Haga doble clic en Crear una tabla en Vista Diseño.

Page 78: Db admin fund full

Seleccione una o más en el cuadro de diálogo Mostrar tabla.

Page 79: Db admin fund full

Una vez seleccionada la tabla, puede seleccionar campos de las listas de campos.

Page 80: Db admin fund full

Puede especificar las condiciones en el área de criterio de la cuadrícula de diseño.

Page 81: Db admin fund full

Cuando crea una consulta en Vista Diseño, Access crea las sentencias SQL necesarias tras bambalinas.

La vista SQL muestra las sentencias SQL generadas, las cuales también son editables.

Page 82: Db admin fund full

Ejecute la consulta y el resultado aparecerá como se muestra a continuación:

Page 83: Db admin fund full

Repaso de la lección - Preguntas de discusión

1. ¿Cuál es la relación entre tablas, consultas y vistas?

2. ¿Cómo se diferencia T-SQL de los diseñadores de base de datos con interfaz gráfica?

Page 84: Db admin fund full

Creación de procedimientos

almacenados y funciones

Page 85: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán sobre:Funciones

Funciones de agregadoFunciones escalaresFunciones definidas por el usuario

Procedimientos de almacenamiento.Beneficios de los procedimientos de almacenamiento.

Page 86: Db admin fund full

¿Qué es una función?Es la acción llevada a cabo por un programa o rutina.Una función es una rutina que regresa un valor.Rutina: cualquier sección de código que se puede invocar

(ejecutar) dentro de un programa. Una rutina generalmente tiene un nombre (identificador) asociado al mismo y se ejecuta al hacerse referencia a ese nombre. Términos relacionados: función, procedimiento y subrutina.

Las funciones y rutinas pueden ser sinónimos y son comandos que regresan un valor.

Page 87: Db admin fund full

Funciones de agregadoRegresan un solo valor calculado de los valores de una

columna.Ejemplo:

AVG() – Regresa un valor promedioSELECT AVG (nombre_columna) FROM nombre_tabla

COUNT() – Regresa el número de filasSELECT COUNT (nombre_columna) FROM nombre_tabla

FIRST() – Regresa el primer valorSELECT FIRST (nombre_columna) FROM nombre_tabla

Page 88: Db admin fund full

Funciones de agregado (continuación)

LAST() – Regresa el último valorSELECT LAST (nombre_columna) FROM

nombre_tabla

MAX() – Regresa el valor mayorSELECT MAX (nombre_columna) FROM nombre_tabla

MIN() – Regresa el valor menorSELECT MIN (nombre_columna) FROM nombre_tabla

SUM() – Regresa la sumaSELECT SUM (nombre_columna) FROM nombre_tabla

Page 89: Db admin fund full

Funciones escalaresLas funciones escalares regresan un solo valor basado en el

valor ingresado.Ejemplos:

UCASE() – Convierte el texto de un campo en mayúsculasSELECT UCASE (nombre_columna) FROM nombre_tabla

LCASE() – Convierte el texto de un campo en minúsculasSELECT LCASE (nombre_columna) FROM nombre_tabla

MID() – Selecciona los caracteres de un campo de textoSELECT MID (nombre_columna) FROM nombre_tabla

Page 90: Db admin fund full

Funciones escalares (continuación)LEN() – Regresa la longitud de un campo de texto

SELECT LEN (nombre_columna) FROM nombre_tabla

ROUND() – Redondea un campo numérico al número de decimales especificadosSELECT ROUND (nombre_columna, decimales) FROM nombre_tabla

Page 91: Db admin fund full

Funciones definidas por el usuario

Las funciones definidas por el usuario son rutinas en SQL que pueden aceptar parámetros y regresan ya sea un valor o una tabla.

Ventaja – se pueden utilizar en sentencias Select, Where o Case.También se pueden utilizar para crear uniones.

No se pueden utilizar para modificar la información de la tabla base.

Page 92: Db admin fund full

Funciones definidas por el usuario (continuación)

Para crear una función:

CREATE FUNCTION [Nombre función] ([variables de entrada])RETURNS varchar(10)ASBEGIN DECLARE [variable de salida] varchar(10)RETURN [variable de salida]END

Page 93: Db admin fund full

Funciones definidas por el usuario (continuación)

Para llamar a una función:SELECT [Nombre función] ([variables de entrada])

Para eliminar una función:DROP FUNCTION [Nombre de función]

Page 94: Db admin fund full

Procedimientos de almacenamiento

Grupo pre-compilado de sentencias SQL escritas por usuarios y guardadas en una base de datos.

Sentencia(s) SQL generadas por el usuario que se guardan en la base de datos.

Para crear un procedimiento de almacenamiento:

CREATE PROCEDURE [sp_Nombre procedimiento]ASSELECT * FROM [Tabla]

sp= procedimiento de almacenamiento (estándar en la asignación de nombres)

Page 95: Db admin fund full

Procedimientos de almacenamiento (continuación)

Para crear un procedimiento de almacenamiento para varios campus

CREATE PROCEDURE sp_clase@campusubicacion varchar(30)ASSELECT NombreClase, SeccionClaseFROM SemestreActualWHERE campus = @campusubicacion

Page 96: Db admin fund full

Procedimientos de almacenamiento (continuación)

Para llamar a un procedimiento de almacenamientoEXEC [nombe procedimiento] ([variables entrada])EXECUTE sp_clase ‘Central‘

Este procedimiento de almacenamiento regresará una lista de dos elementos o una vista (NombreClase, SeccionClase) de todas las clases en el campus Central.

Page 97: Db admin fund full

Beneficios de los procedimientos de almacenamiento

Velocidad: Los procedimientos de almacenamiento son pre-compilados.

Reutilización de código: Los procedimientos de almacenamientos frecuentemente involucran código complejo que sólo se debe escribir una vez.

Seguridad: Se pueden otorgar permisos para los procedimientos de almacenamiento a la vez que se restringen para las tablas subyacentes.

Menor tráfico entre el cliente y el servidor: La consulta se almacena en el servidor y sólo se llama al procedimiento por lo que el tráfico en el servidor disminuye.

Page 98: Db admin fund full

Repaso de la lecciónEvaluación para discusión

¿Cuál es la diferencia básica entre una función y un procedimiento de almacenamiento?

¿Cuál sería la llamada del procedimiento de almacenamiento para una lista de las clases en el campus Oriente? (diapositiva 13)

¿Qué se le puede agregar a nuestro procedimiento de almacenamiento sp_clase para hacerlo más útil? (diapositiva 13)

Page 99: Db admin fund full

Selección de datos

Page 100: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:

SELECTDISTINCTWHEREORDER BYLos operadores lógicos básicos AND y ORTablas de verdad

Page 101: Db admin fund full

SELECTLa sentencia SELECT se utiliza para seleccionar datos de una base de datos.Puede recuperar datos de una o más tablas, tablas temporales o vistas.La selección se almacena en una tabla resultante conocida como conjunto de

resultados.SELECT es el comando más utilizado del lenguaje de manipulación de datos

(DML).Recuerde ese ejemplo utilizando en la lección 1.3:

SELECT nombre_columna(s)FROM nombre_tablaWHERE condicional

Ejemplo:SELECT *FROM Beca_infoWHERE beca_cantidad > 36000

Arroja los alumnos de la tabla Beca_info que obtuvieron una beca mayor a 36,000.

Page 102: Db admin fund full

SELECT DISTINCTAlguno de los campos en una tabla pueden contener valores

duplicados.DISTINCT se puede utilizar para arrojar sólo valores únicos.Aparece la primera ocurrencia de los datos DISTINCT en la

búsqueda.DISTINCT regresa sólo valores (únicos) distintivos.

SELECT DISTINCT nombre_columnas(s) FROM nombre_tabla

Ejemplo de SELECT DISTINCT:SELECT DISTINCT ProfesorFROM Tabla_Calificaciones

Page 103: Db admin fund full

SELECT DISTINCT (continuación)Tabla CalificacionesProfesor Hora Materia Calificación

CuotaPérez 1 Historia A

0Martínez 2 Matemáticas B 0Pérez 3 Física C 0Resultados de:

SELECT DISTINCT ProfesorFROM Tabla_CalificacionesProfesor

Pérez

Martínez

Page 104: Db admin fund full

WHERELa cláusula WHERE se utiliza para extraer sólo aquellos registros que

cumplancon un criterio específico.

WHERE: especifica cuáles son las filas a recuperar.SELECT nombre_columna(s)FROM nombre_tablaWHERE nombre_columna= variable

Ejemplo:

SELECT *FROM Beca_infoWHERE beca_cantidad > 36000

Selecciona a los alumnos que les fue otorgado más de $36,000 de la tabla Beca_info.

Page 105: Db admin fund full

ORDER BYOrdena el conjunto de resultados por una columna específica o los

registrosen orden ascendente (ASC) el cual es el valor predeterminado o en

ordendescendente (DESC).

ORDER BY: especifica un orden en el cual presentar las filas.SELECT nombre_columna(s) FROM nombre_tabla ORDER BY nombre_columna(s) ASC|DESC

Ejemplo:SELECT * FROM tabla_calificaciones ORDER BY profesor ASC

Page 106: Db admin fund full

ORDER BY (continuación)Resultados de:

SELECT *FROM tabla_calificacionesORDER BY profesor ASC

Resultados:

Profesor Hora Materia CalificaciónCuota

López 3 Física C 0Martínez 2 MatemáticasB 0Pérez 1 Historia A

0

Page 107: Db admin fund full

Operadores lógicos: AND y OROperadores booleanos

Están diseñados para funcionar con valores booleanos de cierto ofalso.

Los operadores booleanos más comunes en programación sonAND (conjunción lógica), OR (inclusión lógica), XOR (ORexclusivo) y NOT (negación lógica).

Se utilizan frecuentemente como calificadores en búsquedas en labase de datos.

Por ejemplo:profesor = “Pérez” AND materia = “Historia”

Page 108: Db admin fund full

Tablas de verdadUna tabla de verdad está formada por dos columnas con unos y dos o con V y

F (Verdadero y Falso).AND lógico OR lógico

AND= Todos los elementos deben ser verdaderos para obtener un resultado verdadero.OR= Sólo uno de los elementos debe ser verdadero para obtener un resultado verdadero.El orden de los elementos no influye en el resultado de la tabla de verdad.

Elemento 1

Elemento 2

Resultado

T T T

T F F

F F F

Elemento 1

Elemento 2

Resultado

T T T

T F T

F F F

Page 109: Db admin fund full

Operador ANDMuestra un registro si las dos condiciones son verdaderas.

SELECT nombre_columna FROM nombre_tablaWHERE nombre_columna1= variable_1 AND nombre_columna2= variable_2

Ejemplo:

SELECT * FROM tabla_CalificacionesWHERE profesor = “Pérez” AND Calificación= “A”

Este código arroja un registro de la tabla calificaciones:

Pérez 1 Historia A 0

Page 110: Db admin fund full

Operador ORMuestra un registro si una de las condiciones es verdadera.

SELECT nombre_columna FROM nombre_tablaWHERE nombre_columna1= variable_1 OR nombre_columna2= variable_2

Ejemplo:SELECT * FROM tabla_CalificacionesWHERE profesor = “Pérez” OR Calificación= “C”

Esta lógica arroja los siguientes registros de la tabla calificaciones:

Pérez 1 Historia A 0López 3 Física C 0

Page 111: Db admin fund full

Repaso de la lección1. ¿Cuál es la diferencia entre AND y OR?2. Escriba un ejemplo de SELECT que ordene las

calificaciones de los alumnos en la tabla_calificaciones de forma ascendente.

3. Escriba un ejemplo de SELECT con una condición WHERE basada en los datos que pueden residir en una tabla Becas_info.

Page 112: Db admin fund full

Selección de consultas complejas

Page 113: Db admin fund full

Perspectiva general de la lección

3.1 Selección de datos. Este objetivo puede incluir pero no se limita a:

consultas para extraer datos de una tabla; extracción de datos utilizando

asociaciones; combinación de conjuntos de resultados utilizando UNION e

INTERSECT.

En esta lección repasarán:

SubconsultasUnionesAsociacionesIntersecciones

Page 114: Db admin fund full

SubconsultasEn lenguaje de consulta estructurado (SQL), una consulta puede anidarse en otra. Existen tres tipos básicos de subconsultas.Tipo 1

Predicado: constructores lógicos extendidos en la cláusula(s) WHERE (y

HAVING) utilizando los operadores AND, OR, LIKE, BETWEEN, AS yTOP (LIMIT). Ejemplo:

SELECT nombre_columna(s)

FROM nombre_tabla

WHERE nombre_columna LIKE patron

SELECT materia

FROM info_clase

WHERE profesor LIKE “Sm”

Page 115: Db admin fund full

Subconsultas (continuación)Tipo 2

Escalar : consultas autónomas que regresan un solo valor.

Las subconsultas escalares se pueden utilizar en expresiones

CASE, cláusulas WHERE, ORDER BY y SELECT. Ejemplo:SELECT nombre_columna(s)FROM nombre_tablaWHERE variable_1 = (SELECT nombre_columna

FROM nombre_tablaWHERE nombre_columna= variable_2)

Page 116: Db admin fund full

Subconsultas (continuación)Tipo 3

Tabla: consultas anidadas en la cláusula FROM.

SELECT nombre_tabla_1FROM nombre_tabla_1,

(SELECT nombre_columna_2FROM nombre_tabla_2WHERE nombre_columna_3 = variable_1)

WHERE nombre_tabla_1 . nombre_columna_1 =nombre_tabla_2. nombre_columna_2

Nota de sintaxis: Todas las subconsultas deben estar dentro de paréntesis.

Page 117: Db admin fund full

UNIONLa cláusula UNION combina los resultados de dos consultas SQL en una sola tabla detodas las filas coincidentes. Las dos consultas deben tener el mismo número de

columnasy tipos de datos compatibles para poder unirse. Los registros duplicados se remueven

deforma automática a menos que se utilice UNION ALL.

Ejemplo:

SELECT nombre_columna(s) FROM nombre_tabla1UNIONSELECT nombre_columna(s) FROM nombre_tabla2No permite duplicados.

SELECT nombre_columna(s) FROM nombre_tabla1UNION ALLSELECT nombre_columna(s) FROM nombre_tabla2Permite duplicados.

Page 118: Db admin fund full

JOINLa palabra clave INNER JOIN arroja las filas en las cuales hay al menos unacoincidencia en ambas tablas. JOIN arroja las filas en las cuales el valor ennombre_columna en la nombre_tabla1 coincide con el valor ennombre_columna en nombre_tabla2. Estas nuevas filas tendrán columnas delas dos tablas nombre_tabla1 y nombre_tabla2, con excepción decolumna_nombre.

Ejemplo:

SELECT nombre_columna(s)FROM nombre_tabla1INNER JOIN nombre_tabla2ON nombre_tabla1.nombre_columna=nombre_tabla2.nombre_columna

Nota: INNER JOIN es igual que JOIN

Page 119: Db admin fund full

LEFT JOINLa palabra clave LEFT JOIN arroja todas las filas de la tabla izquierda (nombre_tabla1), aun si no haycoincidencias en la tabla derecha (nombre_tabla2).

SELECT nombre_columna(s)FROM nombre_tabla1LEFT JOIN nombre_tabla2ON nombre_tabla1. nombre_columna=nombre_tabla2. nombre_columna

RIGHT JOINLa palabra clave RIGHT JOIN arroja todas las filas de latabla derecha (nombre_tabla2), aun si no haycoincidencias en la tabla izquierda (nombre_tabla1).

SELECT nombre_columna(s)FROM nombre_tabla1RIGHT JOIN nombre_tabla2ON nombre_tabla1. nombre_columna=nombre_tabla2. nombre_columna

• Nota: En algunas bases de datos, la sentencia RIGHT JOIN se conoce como RIGHT OUTER JOIN.

Page 120: Db admin fund full

FULL JOINLa palabra clave FULL JOIN arroja las filas cuando hay una

coincidencia en una delas tablas. FULL JOIN arroja un valor aun si sólo una de las tablas

tiene un valor, adiferencia de INNER JOIN, donde debe haber una coincidencia en las

dos tablas.

SELECT nombre_columna(s)FROM nombre_tabla1FULL JOIN nombre_tabla2ON nombre_tabla1. nombre_columna=nombre_tabla2.nombre_columna

Page 121: Db admin fund full

Tipos de asociaciones • JOIN: La palabra clave INNER JOIN arroja las filas en las cuales

hay al menos una coincidencia en ambas tablas. INNER JOIN es igual que JOIN.

• LEFT JOIN: La palabra clave LEFT JOIN arroja todas las filas de la tabla izquierda (nombre_tabla1), aun si no hay coincidencias en la tabla derecha (nombre_tabla2).

• RIGHT JOIN: La palabra clave RIGHT JOIN arroja todas las filas de la tabla derecha (nombre_tabla2), aun si no hay coincidencias en la tabla izquierda (nombre_tabla1).

• FULL JOIN: La palabra clave FULL JOIN arroja las filas cuando hay una coincidencia en una de las tablas.

Page 122: Db admin fund full

INTERSECTINTERSECT combina dos o más sentencias SELECT. INTERSECT esbásicamente lo mismo que un operador booleano AND.El operador INTERSECT de SQL toma los resultados de dos consultas y arrojasólo las filas que aparecen en los dos conjuntos de resultados. Se eliminan lasfilas duplicadas del resultado final a menos que se utilice INTERSECT ALL.

SELECT * FROM clase_infoWHERE calificacion BETWEEN “A” AND “C”INTERSECTSELECT * FROM clase_infoWHERE calificacion BETWEEN “B” AND “D”

La consulta INTERSECT anterior arroja todas las filas de la tabla clase_infodonde calificacion está entre B y C.

Page 123: Db admin fund full

Repaso de la lección1. ¿Qué es una subconsulta?2. ¿Qué es JOIN?3. ¿Cuál es el comando que se utiliza para conservar los

duplicados en los comandos UNION e INTERSECT?

Page 124: Db admin fund full

Insertar datos

Page 125: Db admin fund full

Perspectiva general de la lección

3.2 Insertar datosEn esta lección repasarán:

INSERT INTOINSERT INTO con SELECT

Page 126: Db admin fund full

INSERT INTOEsta sentencia se utiliza para insertar una nueva fila en una

tabla.Es posible escribir la sentencia INSERT INTO de dos formas:

La primera forma no especifica el nombre de la columna(s) en la cual

se insertarán los datos, únicamente se indican los valores.

La segunda forma especifica tanto el nombre de la columna(s) como

los valores que se vayan a insertar.

Page 127: Db admin fund full

INSERT INTO (continuación)La primera forma:

La primera forma no especifica el nombre de la columna(s) en la

cual se insertarán los datos, únicamente se indican los valores.

INSERT INTO nombre_tablaVALUES (valor1, valor 2, valor 3,...)

La cantidad de columnas y valores debe ser el mismo. Si una columna noexiste, se utiliza el valor predeterminado de la columna para crearla.

El valor utilizado por la sentencia INSERT debe satisfacer todas lasrestricciones aplicables. Si ocurre un error de sintaxis o se viola algunarestricción, la nueva fila no se agregará a la tabla y se generará un error.

Page 128: Db admin fund full

INSERT INTO (continuación)La segunda forma:

Especifica tanto el nombre de la columna(s) como los valores quese vayan a insertar.

INSERT INTO nombre_tabla (columna1, columna2, columna3,...)VALUES (valor1, valor2, valor3,...)

Los constructores de valor de fila se utilizan para insertar varias filas a la vez en una solasentencia de SQL.

INSERT INTO nombre_tabla(columna1,columna2)VALUES (valor1a,valor1b), (valor2a, valor2b)

Ejemplo de resultados

columna1 columna2valor1a valor2avalor1b valor2b

Page 129: Db admin fund full

INSERT INTO con SELECTCopiar filas de otras tablasUna sentencia INSERT también se puede utilizar para recuperar datos deotra tabla, modificarlos si es necesario e insertarlos directamente en la tablaoriginal.

Se utiliza una subselección en lugar de la cláusula VALUES.La subselección puede contener asociaciones, llamadas a función e inclusivepuede realizar consultas a la misma tabla en la cual se inserten los datos.

La selección se evalúa antes de que se realice la inserción de datos.INSERT INTO nombre_tabla1 (columna1, columna2)SELECT columna3, columna4FROM nombre_tabla2

Note que ésta es la forma simple. La sentencia puede contener cláusulas WHERE,GROUP BY y HAVING así como asociaciones de tabla y alias

Page 130: Db admin fund full

INSERT INTO con SELECT (Continuación)INSERT INTO Clase_Registro (id, Alumno)SELECT id, Nombre FROM Id_Alumno

Cuando se utiliza una sintaxis de registros múltiples, la sentencia INSERT

INTO precede a la sentencia SELECT y agrega uno o varios registros a la

tabla. A ésto se le conoce como una consulta agregada ya que copia registros

de una o más tablas a otra. Las tablas que contienen los registros a ser

agregados no resultan afectadas por la operación.

Page 131: Db admin fund full

INSERT INTO con SELECT (Continuación)INSERT INTO Clase_Info (Nombre, Id Alumno)SELECT Nombre, Id Alumno FROM Id AlumnoWHERE Registrado = ‘si’

Este ejemplo demuestra cómo se agregan registros a una tabla a partir de

una subconsulta. Todos los registros de Id_Alumno en donde el registro sea

igual a “si” se agregarán a Clase_Info.

Page 132: Db admin fund full

INSERT INTO con SELECT (Continuación)INSERT INTO clase_registro (Nombre)SELECT id_alumno.nombre FROM id_alumnoINNER JOIN clase info ON id_alumno.ID# =Clase_info.ID#WHERE clase_info.subject= ‘Matemáticas’ De la misma forma que con la sentencia SELECT normal, la cláusulaFROM puede incluir más de una tabla vinculada por una operación

JOIN.Este ejemplo agrega a la tabla Clase Registro los nombres de todos

losAlumnos de Matemáticas.

Page 133: Db admin fund full

Preguntas de discusión¿Cuál es el propósito de INSERT INTO?¿Qué sucede si una columna no se especifica al utilizar el

comando básicoINSERT?¿Cuál comando se utiliza para una subconsulta con INSERT?

Page 134: Db admin fund full

Actualización de datos

Page 135: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:

UPDATE CASE

Page 136: Db admin fund full

UPDATELa sentencia UPDATE se utiliza para actualizar los registros

existentes enuna tabla:

UPDATE nombre_tablaSET columna1=valor, columna2=valor2,...WHERE alguna_columna=algún_valor

Note la cláusula WHERE en la sintaxis del UPDATE. Esta cláusula

especifica cuál registro o registros deben actualizarse.

Si omite la cláusula WHERE, se actualizarán todos los registros.

Page 137: Db admin fund full

UPDATE SimpleTodas las filas se pueden afectar si se elimina una cláusula WHERE de unasentencia UPDATE.

Si todas las escuelas en una tabla Universidades mudan su campus principala Puebla, Pue., este ejemplo muestra como se actualizaría la tablaUniversidades.

UPDATE Universidades SET ciudad= ' Puebla', estado=‘Pue‘El siguiente ejemplo cambia las cuotas de Universidades a NULL.

UPDATE Universidades SET Cuotas= NULL

Se pueden computar valores en una actualización. El siguiente ejemplo duplica las

cuotas en la tabla Universidades:

UPDATE Universidades SET Cuotas= Cuotas* 2

Page 138: Db admin fund full

Sentencia UPDATE con clausula WHERE

La cláusula WHERE especifica las filas que se van a actualizar.El siguiente ejemplo muestra como actualizar la tabla

Universidades deToluca, México con el cambio de un código postal.

UPDATE UniversidadesSET CP= ‘86689-1234’WHERE estado= ‘MX’ AND ciudad= ‘Toluca’

Page 139: Db admin fund full

Sentencia UPDATE con datos de otra tabla

El siguiente ejemplo modifica la columna ytd_registro en la tabla Universidadespara reflejar las inscripciones más recientes en una tabla Registro:

UPDATE Universidades SET ytd_registro =Universidades.ytd_ registro + Registro.qtyFROM Universidades, RegistroWHERE Universidades.id_materia = Registro.id_materiaAND Registro.fecha =(SELECT AX(Registro.fecha)FROM Registro)

En este ejemplo se asume que solo un total de “registros” se asigna para una

materia en una fecha dada. Si más de un total se registra en el mismo día,sólo se registrará uno. Esto se debe a que una sentencia UPDATE nuncaactualiza la misma fila dos veces.

Page 140: Db admin fund full

CASESe puede utilizar CASE en el lenguaje de consulta estructurado (SQL)

endonde se pueda utilizar una expresión. Se trata de una sentencia

condicionalque cuenta con una lógica if/then/else para SELECT, WHERE, HAVING,IN, DELETE, UPDATE, etc.

Crea una funcionalidad when-then-else (cuando se cumpla cierta condición,

entonces realiza lo siguiente)CASEWHEN condición THEN resultado_1ELSE resultado_2END

Page 141: Db admin fund full

La cláusula CASE: Dos formasCASEWHEN condición THEN resultado_1ELSE resultado_2ENDCASE la expresiónWHEN la condición THEN resultado_1ELSE resultado_2END

La cláusula WHEN se puede repetir cualquier cantidad de veces.La cláusula ELSE se puede omitir.El valor de la expresión CASE es el valor de la primera cláusula WHENque sea verdadera. Si ninguna es verdadera , el resultado será el ELSE.

Si no hay una cláusula ELSE, entonces el resultado será NULL.Todas las expresiones deben tener tipos de datos compatibles.

Page 142: Db admin fund full

UPDATE utilizando CASEUPDATE clase_infoSET cuota= CASEWHEN (cuota < 5 AND calificacion> “D”) THEN cuota * 1.25WHEN (cuota < 5 AND calificacion < “B”) THEN cuota * 1.15ELSE cuota = 7 END

Esta expresión CASE combina varias cláusulas WHEN yutiliza un valor lógico booleano (AND) para establecer lacuota actual.

Este ejemplo también muestra que una función de cálculo(*) se puede colocar dentro de la estructura UPDATE CASE.

Page 143: Db admin fund full

Repaso de la lección1. ¿Cuál es el propósito de la sentencia UPDATE?2. Describa la sentencia CASE.3. Proporcione un ejemplo de la sentencia CASE que se

ajuste a la descripción que acaba de dar.

Page 144: Db admin fund full

Eliminar datos

Page 145: Db admin fund full

Perspectiva general de la lección

3.4 Eliminar datos

En esta lección repasarán:

DELETE FROMTRANSACTIONSROLLBACKCOMMIT

Page 146: Db admin fund full

DELETE FROMLa sentencia DELETE se utiliza para eliminar filas de una tabla:

DELETE FROM nombre_tablaWHERE nombre_columna=variable

Nota: La cláusula WHERE en la sentencia DELETE especifica cual registro o registros se van a eliminar. Sin la cláusula WHERE, todos los registros se borrarían.

Page 147: Db admin fund full

DELETE FROM (Continuación)Es posible eliminar todas las filas en una tabla sin borrar toda

la tabla. Estosignifica que la estructura de la tabla, atributos e índices

permanecenintactos:

DELETE FROM nombre_tablao

DELETE * FROM nombre_tabla

Sea cuidadoso cuando elimine registros. Esta sentencia no se puede

deshacer.

Page 148: Db admin fund full

TransaccionesLas transacciones agrupan un conjunto de una o más sentencias en una solaunidad.

Si cualquiera de las tareas falla, toda la transacción falla, lo cual evita que sedañe la base de datos.

Considere las transacciones como si compilara un conjunto de líneas deprogramación.

Una transacción comienza con la ejecución de una sentencia SQL (UPDATE/INSERT/DELETE).

Todas las sentencias subsecuentes hasta una sentencia COMMIT o ROLLBACK se hacen partede la transacción. La ejecución de una sentencia COMMIT o ROLLBACK completan latransacción actual.

COMMIT: si todas las sentencias son correctas en una sola transacción, todos los cambios se registran en la

base de datos.

ROLLBACK: el proceso de revertir cambios.

Page 149: Db admin fund full

Transacciones (Continuación)La transacción mas simple en Microsoft SQL Server es una sentencia demodificación de datos sencilla:

UPDATE autores SET au_nombre = ‘Juan'WHERE au_id = '172-32-1176‘

Es una transacción automática.El servidor SQL primero registra lo que va a hacer y luego realiza lasentencia UPDATE actual.

Finalmente, registra que se ha completado la sentencia UPDATE.

Si el servidor falla después de que la transacción se haya registrado en la bitácora

(log), SQL server utiliza el registro de la transacción para reiniciarla alrecuperarse.

Page 150: Db admin fund full

Transacciones (continuación)Para ser de utilidad, las transacciones necesitan tener dos o más sentencias

enellas.

A este tipo de transacciones se les llama explícitas:BEGIN TRANUPDATE autores SET au_nombre = ‘Juan'WHERE au_id = '172-32-1176'UPDATE autores SET au_nombre = ‘Luis'WHERE au_id = '213-46-8915'COMMIT TRAN

Nota: las sentencias BEGIN TRAN y COMMIT TRAN comienzan y completan una transacción. Todo lo que se encuentre dentro de estas transacciones se consideran como una unidad lógica de trabajo. Si cualquiera sentencia en la transacción falla, no cambiará nada en la base de datos.

Page 151: Db admin fund full

Transacciones (continuación)Una transacción se puede cancelar si no hace lo que se esperaba:

BEGIN TRANUPDATE autores SET au_nombre = ‘Juan' WHERE au_id

= '172-32-1176'UPDATE autores SET au_nombre = 'JuanA' WHERE ciudad

= ‘Monterrey'IF @@ROWCOUNT = 10 COMMIT TRANELSE

ROLLBACK TRAN

Nota: Si @@ROWCOUNT (una función SQL) es igual a 10, entonces la transacción se lleva a cabo, de lo contrario se cancela. La sentencia ROLLBACK TRAN “deshace” todo el trabajo desde la sentencia BEGIN TRAN. Ninguno de las sentencias UPDATE se llevan a cabo.

Page 152: Db admin fund full

Transacciones (continuación)La mayoría de las transacciones de usuarios ocurren en procedimientosalmacenados.

Create Proc TranTest2 ASBEGIN TRANINSERT INTO [autores]([au_id], [au_anombre],[au_nombre, [tel], [contrato]) VALUES ('123-32-1176', 'Gates', 'Bill', '800-BUY-MSFT', 1)IF @@ERROR <> 0 BEGIN ROLLBACK TRAN return 10 ENDUPDATE autores SET au_nombre = 'Johnzzz' WHEREau_id = '172-32-1176‘IF @@ERROR <> 0 BEGIN ROLLBACK TRAN return 11 ENDCOMMIT TRANGO

Page 153: Db admin fund full

Transacciones (continuación)Ejemplo con un chequeo de error:

BEGIN TRANINSERT INTO [autores]([autores_id],[autores_anombre],[autores _nombre], [tel],[contrato])VALUES ('123-32-1176', 'Gates', 'Bill', ‘1-800-BUY-MSFT', 1)IF @@ERROR <> 0 BEGIN ROLLBACK TRAN return 10 ENDUPDATE autores SET au_nombre = 'Johnzzz' WHERE au_id = '172-32-1176‘IF @@ERROR <> 0 BEGIN ROLLBACK TRAN return 11 ENDCOMMIT TRAN

Cada sentencia se revisa en busca de fallas. Si una sentencia falla, revierte lasacciones realizadas hasta ese punto y utiliza la sentencia RETURN pasa salir

delprocedimiento almacenado.

Page 154: Db admin fund full

Repaso de la lección1. ¿Cuál es el propósito del comando DELETE?2. ¿Cuál es la relación entre TRANSACTIONS, ROLLBACK y

COMMIT?3. ¿Por qué es importante revisar que no haya errores

después de cada sentencia?

Page 155: Db admin fund full

Desarrollo de páginas web

Page 156: Db admin fund full

Perspectiva general de la lección

Los alumnos comprenderán el desarrollo de página Web.

En esta lección aprenderán:

HTMLCSSJavaScript

Page 157: Db admin fund full

Preguntas abiertas1. ¿Qué es HTML y cómo se utiliza? 2. ¿Qué es CSS y de qué forma mejora a HTML?3. ¿Qué es JavaScript y cómo mejora a HTML?

Page 158: Db admin fund full

Activador

¿Qué significan las siglas HTML?¿Qué significan las siglas CSS?¿Cómo se relacionan JavaScript y Java?

Page 159: Db admin fund full

TerminologíaHoja de estilo en cascada (CSS): Especificación del Lenguaje deMarcado de Hipertexto (HTML), desarrollada por el Consorcio WorldWide Web (W3C) que permite a los autores de los documentosHTML y sus usuarios anexar hojas de estilo a los documentosHTML.

HTML: Son las siglas de Lenguaje de Marcado de Hipertexto; este lenguaje se usa en los documentos de la World Wide Web. Se utiliza un lenguaje denotación basado en etiquetas para dar formato a documentos queposteriormente se pueden interpretar y traducir con un navegador deInternet.

JavaScript: Es un lenguaje de secuencia de comandos desarrollado por NetscapeCommunications y Sun Microsystems el cual está indirectamente relacionado

conJava. JavaScript no es un verdadero lenguaje orientado a objetos y se encuentralimitado en comparación con Java debido a que no se encuentra compilado.

Page 160: Db admin fund full

¿Qué es HTML?

El lenguaje que los servidores Web y los navegadores utilizanpara definir los elementos de una página Web.

HTML usa etiquetas para marcar elementos en un documentocomo texto o gráficas e indica de que forma los navegadoresWeb deben mostrar tales elementos al usuario y cómoresponder a las acciones del usuario como la activación de unvínculo al presionar una tecla o hacer clic en el mouse.

Ejemplos de etiquetas:<html><body>

Page 161: Db admin fund full

¿Qué es HTML? (continuación)Se usa principalmente para dar formato a los datos de una

página.No contiene ningún soporte avanzado para realizar

operaciones complejas,sólo sirve para diseñar los contenidos de una página Web para

que seanlegibles.

Cuando el navegador recibe un documento HTML, convierte la descripción

HTML para presentarla en pantalla.

Page 162: Db admin fund full

¿Qué es HTML? (continuación)

Es un lenguaje basado en texto que se puede ver y modificar en un editor de

texto estándar como el Bloc de Notas.

Consiste en el texto en la página Web junto con las “etiquetas de marcas”

que le indican al navegador cómo mostrar el texto.

Especifica elementos como la letra que se debe usar en determinadas

secciones del texto, dónde colocar las imágines incrustadas y también los

hipervínculos que permiten enlazarse a otras páginas Web.

Page 163: Db admin fund full

Ejemplo de código HTMLEl código HTML consiste en una serie de etiquetas entre paréntesisangulares como por ejemplo la etiqueta <html>.

Al final del documento se encuentra otra etiqueta </html> . Ladiagonal indica el final de la etiqueta correspondiente a <html>

quese encuentra al inicio del documento. Lo que está entre las dosetiquetas se le conoce como elemento <html>.

<html><body>Contenido aquí</body></html>

Se muestraContenido

aquí

Page 164: Db admin fund full

¿Qué es una Hoja de estilo en cascada?

Es un lenguaje/código que separa completamente el texto mostrado en la

página Web (creada en código HTML) y la información que describe como

se debe mostrar tal texto.

Incluye información tipográfica sobre cómo debe lucir la página como el

tamaño de fuente del texto en la página.

Dirige la manera en la cual se combinarán las hojas de estilo para un

documento HTML y el estilo del usuario.

Page 165: Db admin fund full

¿Por qué usar CSS?Mejora la accesibilidad del contenido al permitir que

el mismocontenido se pueda mostrar de diferentes formas

dependiendodel método de interpretación: en la pantalla, por

voz outilizando dispositivos Braille.

Permite más flexibilidad y control sobre la manera en la cual se

presenta el contenido.

Proporciona una forma más eficiente para que diferentes

páginas compartan el mismo formato.

Page 166: Db admin fund full

Ejemplo de código CSSLa primera sección de código de la siguiente hoja de estilo define

que todoel contenido dentro del elemento body utilizará la fuente Verdana

con untamaño 9 y que estará alineado a la derecha.

body{

font-family: Verdana;font-size: 9pt;text-align: right;

}div{

font-family: Georgia;}

Page 167: Db admin fund full

Cliente vs ServidorSe ingresa un Localizador Uniforme de Recursos (URL) o se hace clic en unenlace y el navegador solicita al servidor esa página en particular. (1)

El servidor encuentra la página, la abre y ejecuta la secuencia de comandos. (2)

Después de que se procesan todas las secuencias de comando del servidor, los resultados

se envían al navegador. (3)

El resultado es una página creada en código HTML y CSS y opcionalmente en código decomandos por parte del cliente. Si en la página hay código de del lado del cliente (porejemplo JavaScript), el buscador lo procesará y lo mostrará al usuario. (4)

Page 168: Db admin fund full

Secuencia de comandos del Servidor

ASP.NET, ASP o PHP.Se usa para crear páginas Web por solicitud.

Toda los datos de las páginas serán actuales ya que se crea momentos antes

de enviarse al navegador.

Ejemplos: tiendas en línea, sitios de subasta, foros en línea y comunicados.

Page 169: Db admin fund full

Secuencia de comandos del Cliente

Se usa para crear páginas interactivas después de que se envían al navegador.

Una aplicación común es verificar los datos que el usuario ingresa en unformulario de la página.

Si el usuario olvida ingresar su nombre completo o escribe mal su dirección

de correo electrónico, la secuencia de comandos del cliente dará aviso alusuario.

Más respuesta y rapidez para el usuario, a diferencia de la secuencia decomandos del servidor que depende del servidor y de la velocidad delInternet entre la computadora del usuario y el servidor.

Page 170: Db admin fund full

¿Qué es JavaScript?Es un lenguaje de secuencia de comandos del cliente utilizado

en millonesde páginas Web.

Agrega interactividad al navegador y a las páginas Web.

Complementa los tan populares lenguajes de programación y plataformas

del servidor como ASP.NET.

Page 171: Db admin fund full

¿Por qué usar JavaScript?Permite el contenido dinámico (mientras que HTML es

estático).

Agrega funcionalidad, interactividad y efectos dinámicos.

Por ejemplo, con JavaScript puede mostrar la fecha actual de la página Web

sin tener que editar y cargar el código para el servidor todas las noches.

Page 172: Db admin fund full

Ejemplo: Código de JavaScript<html><head>

<title>Mi página </title><script type="text/javascript" language="javascript"><!–function say(text){

alert(text);}say(“¡La página está cargando!");//--></script>

</head><body>

</body></html>

Page 173: Db admin fund full

Repaso de la lecciónDescriba los siguientes términos y cómo se utilizan:

HTMLCSSJavaScript

Page 174: Db admin fund full

Claves principales, foráneas y

compuestas

Page 175: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:

Cómo seleccionar las claves apropiadas.¿Qué es una clave principal?¿Qué es una clave foránea / externa?Consideraciones para mantener la integridad

de datos.

Page 176: Db admin fund full

Selección de claves apropiadasLas claves deben ser únicas.

No relativamente sino totalmente única para cada registro en una base de datos.

Si su nombre fuera Pedro, tal vez su nombre sea único en su casa pero no en toda

la ciudad.

Las claves sólo necesitan tener valores para la base de datos.ID_alumno tiene la propiedad de ser único entre los 500,000 alumnos actualesen el sistema escolar de Monterrey.La creación de una clave sólo para un alumno la hace única y valiosa sólo en labase de datos. Si la clave resultara comprometida, ya no tendría valor fuera de

labase de datos.Por otro lado, si su número de seguridad social se hiciera de conocimientopúblico, puede causarle problemas debido al valor que tiene fuera de la base

dedatos.

Page 177: Db admin fund full

Selección de claves apropiadas (continuación)Para ser de mayor utilidad, las claves deben ser de tipo y

estilo consistentes.

Una clave debe estar formada por sólo un tipo de dato.

Este es la razón por la cual la mayoría de las claves son del mismo

tipo de dato y estilo.

Cuando las claves son consistentes, la base de datos se mantiene

en orden y es más fácil recuperar registros.

Page 178: Db admin fund full

Claves principalesReglas generales:

La clave principal identifica de manera única cada registro en una tabla de una basede datos.Las claves principales deben contener valores únicos.Una columna de claves principales no pueden contener valores NULL.Cada tabla debe tener una clave principal y cada tabla puede contener sólo una

claveprincipal.

Definición funcional:Una clave principal define de manera única una relación dentro de una base de

datos.Un atributo de una buena clave principal es que no se debe repetir.En ocasiones intentamos utilizar el nombre de una persona como la clave principal.En el salón de clases, un profesor llama a un alumno por su nombre, lo cual tal vezno defina de forma única al alumno. En la clase puede haber dos María Pérez, porejemplo.Las bases de datos solucionan este problema con la creación de claves principales únicas como el “ID_Alumno” de un tipo específico de datos para la integridad de losdatos. Nunca habrá dos alumnos con el mismo ID.

Page 179: Db admin fund full

Claves principales (continuación)Ejemplo de una clave principal en una tabla normalizada.

La tabla Profesor_clases contiene un ID_Profesor e ID_Clase:

ID_Profesor ID_Clase78v22 12456778v22 Lit200

En la tabla anterior, tenemos una clave principal única para la tabla

Profesor_clases. Cada maestro cuenta con un ID único (clave principal ennegritas) que lo relaciona a muchos ID de clase.

En Primera Forma Normal (1NF), se crean tablas para cada grupo de datosrelacionados y se identifica cada fila con una columna única.

En este caso, la clave principal es ID_Profesor.

Nota: Puede consultar materiales adicionales sobre 1NF en la lección 4.1.

Page 180: Db admin fund full

Claves principales (continuación)Ejemplo de sintaxis

SQL CREATE PRIMARY KEYCREATE TABLE Alumnos_NombreEscuela( ID_AlumnoD int NOT NULL PRIMARY KEY,Apellido varchar(255) NOT NULL,Nombre varchar(255),Direccion varchar(255),Ciudad varchar(255) )

En este ejemplo (no está escrito en alguna versión en particular de SQL), se crea una claveprincipal en ID_Alumno.

Tiene un tipo de dato entero y se define como NOT NULL.

Cuando se ingresan datos en el campo, este debe tener un valor.NOT NULL es una restricción adicional sobre lo que puede colocarse en el campo.

Integer es la primer restricción sobre lo que puede contener el campo de la clave principalID_Alumno.

Page 181: Db admin fund full

Claves foráneasReglas generales

Una clave foránea / externa en una tabla apunta a la clave principal de

otra tabla.Una columna de una clave foránea no debe contener valores NULL.Un valor NULL en una clave foránea significa que no tiene relacionescon otras tablas.

Definición funcionalUna clave foránea es una referencia a la clave principal de otra

tabla.Las claves foráneas no necesitan tener valores únicos.Las claves foráneas se utilizan como elementos de búsqueda en otratabla.

Page 182: Db admin fund full

Claves foráneas (continuación)Ejemplo de una clave foráneaTabla Profesor_clases con ID_Profesor e ID_Clase:

Hay una clave principal única para la tabla Profesor_clases.Cada profesor tendrá un ID único ligado a muchos ID de clases. ID_Clase es la claveforánea.La tabla anterior muestra que un profesor puede tener diferentes clases y varias

seccionesde la misma clase.Para encontrar los detalles de las clases, utilizaríamos la clave foránea para encontrar ladescripción de la clase en la tabla clase_descripcion.La tabla anterior es una tabla virtual o una vista de una consulta realizada a ID_Profesor“78v22”.

Nota: Consulte la lección 2.3 y 3.1 para más información sobre este tema.

ID_Profesor

ID_Clase 1

ID_Clase 2

ID_Clase 3

78v22 124567 Lit200 224567

Page 183: Db admin fund full

Claves foráneas (continuación)Ejemplo de sintaxis para crear una clave foránea y una clave principal al mismo

tiempo.

CREATE TABLE Alumnos_NombreEscuela( ID_Alumno int NOT NULL PRIMARY KEY,Apellido varchar(255) NOT NULL,Nombre varchar(255),Direccion varchar(255),CP int(5) NOT NULL FOREIGN KEY)

En este ejemplo (no está escrito en alguna versión en particular de SQL), se crea una clave

foránea en CP.Tiene un tipo de dato entero y no puede estar vacío (NULL).Cuando se ingresan datos en este campo, este debe tener un valor. La clave foránea

es laclave de búsqueda para encontrar la información de la ciudad y estado para este

alumno.

Page 184: Db admin fund full

Integridad de datosLa integridad de datos se refuerza con una serie de

restricciones o reglas.Hay tres tipos de restricciones de integridad que son parte del

modelo debase de datos relacionales.1. Integridad de entidad: Se enfoca en una clave principal.

La regla es que cada tabla debe tener una clave principal y que la

columna o columnas elegidas para ser la clave principal deben ser únicas

y no contener valores NULL.

Page 185: Db admin fund full

Integridad de datos (continuación)

2. Integridad referencial: Se enfoca en la clave foránea.

La regla es que cualquier clave foránea puede estar sólo en uno de dos

estados:

Primer estado: el valor de una clave foránea se refiere al valor de una

clave principal de una tabla en una base de datos.

Segundo estado: el valor de una clave foránea puede ser NULL.Ya sea que no existe una relación entre los objetos de una base

dedatos o que la relación esté sin definir.

Page 186: Db admin fund full

Integridad de datos (continuación)

3. Integridad de dominio: Especifica que todos los valores disponibles en una base de datos relacional se deben declarar.

Un dominio es un conjunto de valores del mismo tipo (tipo de dato).Los dominios, por lo tanto, son un grupo de valores de los cuales se

extraenvalores.

Un dominio describe el conjunto de valores posibles de un atributo dado.

Ejemplo:

El valor carácter “Juan” no está en el dominio entero.EL valor entero “42” cumple con la restricción de dominio.

Page 187: Db admin fund full

Repaso de la lección1. ¿Por qué son importantes las claves únicas?2. ¿Cuál es la relación entre las claves y los tipos de datos?3. ¿Cuáles son las diferencias entre una clave foránea y una

clave principal?4. ¿Por qué una clave foránea puede tener un valor NULL y

una clave principal no?5. Liste y describa las tres reglas de integridad de datos.

Page 188: Db admin fund full

Índices

Page 189: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:

¿Qué es un índice?¿Por qué utilizamos índices?Estructuras de datos comunes para índices.Índices no agrupados.Índices agrupados.

Page 190: Db admin fund full

¿Qué es un índice?Un índice es una lista de objetos.

Ejemplo: en un libro, el índice contiene una lista de los temas incluidos.

Utilizamos índices para poder ir directamente al tema que deseamos ver

en un libro o en una base de datos.Un índice es una estructura de datos.

Un listado de palabras clave y datos asociados que apuntan a la

ubicación de información más extensa como archivos y registros en un

disco o claves de registro en una base de datos.

Page 191: Db admin fund full

¿Por qué utilizamos índices?La vida sin un índice

Los datos son difíciles de localizar ya que se encuentran almacenados en el orden en el quefueron ingresados.No existe un método eficiente o sencillo para recuperar registros.La búsqueda se realiza a ciegas y al azar. Un ejemplo de búsqueda a ciegas: Suponga quequiere intentar cocinar una receta con ingredientes de los cuales jamás había escuchado.Todo lo que sabe es que es un cierto tipo de comida. Si tuviera un índice de ingredientes,sería más rápido encontrar cada uno de los elementos a utilizar y si tuviera también datossobre tiendas que vendan ingredientes especializados, la tarea sería aún más rápida.

La vida con un índiceSe mejora significativamente la velocidad de recuperación de datos.La escritura de registros puede ser más lenta. Además, los índices ocupan másalmacenamiento, así como un libro necesita de más páginas.La Internet no sería posible sin índices. Si tuviéramos que buscar en Internet en el ordenen el cual se ha ido agregando información, nunca encontraríamos nada en la gigantescabase de datos de la World Wide Web.

Page 192: Db admin fund full

Estructuras de datos comunes para índices

Hay cuatro estructuras de datos para los índices: bitmap, denso, no denso, invertido.Índice bitmapUn índice bitmap almacena los datos en un vector de bits.La forma más común es un árbol-B.Los arboles-B pueden ser estructuras de datos altamente

eficientes.Índice densoUn índice denso funciona con pares de claves y

apuntadores para cadaregistro.Cada clave tiene un apuntador directamente ligado a un

registro.

Page 193: Db admin fund full

Estructuras de datos comunes para índices (continuación)Índice no denso

Un índice no denso funciona con pares de claves y apuntadores para cada bloque (una

secuencia de bytes o bits)Cada clave tiene un apuntador ligado a un bloque de datos.Menos costoso en recursos y menos efectivo (más generalizado) que los

índices densos.

Índice invertidoUn índice invertido voltea el valor de una clave, por ejemplo, 12345 se

convierte en 54321.Este método resulta útil cuando las claves se establecen en una secuencia

en donde losnuevos valores de las claves cambian en cantidades uniformes.

Page 194: Db admin fund full

Árbol-B

Estructura para el almacenamiento de índices de bases de datos.La B significa Balance.Cada nodo en un árbol-B contiene una lista ordenada de valores clave yvínculos que corresponden a rangos de valores clave entre los valores de lalista.Para encontrar un registro de datos específico dado su valor clave, elprograma lee el primer nodo o raíz del disco y compara la clave a buscar conlas claves en el nodo para seleccionar un subrango de valores clave a buscar.Se repite el proceso con el nodo indicado por el vínculo correspondiente. Enel nivel más bajo, los vínculos indican los registros de datos.El sistema de base de datos puede de este modo bajar por los niveles de laestructura del árbol para encontrar la entrada de índice que contiene laubicación de los registros o filas deseadas.

Page 195: Db admin fund full

Árbol-B (continuación)

Este árbol corta el tiempo de búsqueda significativamente.Los datos se organizan con un método balanceado.Cada lado del árbol tiene la mitad de las claves.Si busca el valor 59, viajaría hacia abajo por el lado derecho hasta llegar a73 y después iría a la izquierda para llegar al 59.

A los elementos que están situados en el nivel más bajo del árbol se lesconoce como Nodos hoja .

En este nivel se encuentra el apuntador a la ubicación de los registros o filasdeseadas.

Nodos hoja

Page 196: Db admin fund full

Índices no agrupadosSimilares al índice de un libro.Tiene una palabra clave y un apuntador hacia la ubicación

almacenada de lainformación.Ejemplo: Si quisiéramos información sobre el tema “clave principal”

paraestas lecciones, veríamos lo siguiente:

Los índices no agrupados pueden utilizar una estructura de árbol-B.Los nodos hoja se componen de páginas de índice o apuntadores.Los índices no agrupados son menos eficientes en búsquedas que los índices

agrupados.

Palabra clave Ubicación de la información

Clave principal Lección 4.2, diapositiva 4-6, 10

Page 197: Db admin fund full

Índices no agrupados (continuación)

SintaxisCREATE INDEX index_nombreON nombre_tabla(nombre_columna)EjemploCREATE INDEX NombresIndexON empleados(Apellido, Nombre)

La sentencia anterior crea un índice en la tabla empleados por Apellido y los

duplicados de apellidos se ordenan luego por Nombre.

Page 198: Db admin fund full

Índices agrupadosSi su libreta de direcciones se encuentra ordenada por sobrenombres, esto essimilar a los índices agrupados.Los índices agrupados son índices que se encuentran en un orden especialpara acelerar la recuperación de datos.Estos índices se pueden almacenar en memoria.Los índices agrupados pueden utilizar una estructura de datos de árbol-B.En el árbol-B agrupado, los registros de datos de la tabla subyacente seordenan en base a sus claves agrupadas.Los nodos hoja (nivel más bajo) se componen de páginas de datos oregistros.En este nivel, el acceso a los datos será directo.Esta es la diferencia funcional más notoria entre los índices agrupados y noagrupados. Los índices no agrupados tienen un valor apuntador en los nodoshoja en lugar de en el valor en sí.

Page 199: Db admin fund full

Índices agrupados (continuación)Sintaxis

CREATE [ UNIQUE ] CLUSTERED INDEX index_nombreON nombre_tabla(columna_nombre)[ ] = Opcional: Un índice único es aquel en el cual no hay dos filas quetengan el mismo valor de índice.

Ejemplo:

CREATE CLUSTERED INDEX NombreIndexON empleados(Apellido, Nombre)

La sentencia anterior tiene CLUSTERED antes de INDEX, por lo que se crea uníndice agrupado.

Si se omitiera la palabra CLUSTERED entonces se crearía un índice no agrupado.

Page 200: Db admin fund full

Repaso de la lección1. ¿Qué es un índice?2. ¿Por qué utilizamos índices?3. Mencione las cuatro estructuras comunes de los índices.4. ¿Qué es un árbol-B?5. ¿Cuál es la diferencia entre un índice agrupado y uno no

agrupado?6. ¿Cuáles factores influyen en la selección de un método de

índice?7. Mencione varios índices que utilizaría y pronostique la

estructura utilizada.

Page 201: Db admin fund full

Conceptos de seguridad de datos

Page 202: Db admin fund full

Perspectiva general de la lección

La seguridad es una de las mayores preocupaciones para los administradores

de las bases de datos. Hay hackers y ataques externos, pero la seguridaddebe incluir problemas con acceso local. Si no se toman medidas deseguridad, los datos pueden resultar dañados o robados.

En esta lección aprenderán:

Planes de seguridadSeguridad físicaControl de accesoAtaques comunesCuentas de usuarioRoles

Page 203: Db admin fund full

Planes de seguridadUn plan de seguridad debe identificar que usuarios pueden

ejecutar cualesacciones en la base de datos. El plan involucra métodos

internos y externos.Seguridad físicaUna ubicación con documentación sobre quien tiene acceso.Respaldos y continuidad operacionalEjecute respaldos con regularidad o almacene offsiteEvalúe la capacidad de recuperación de forma periódica

Page 204: Db admin fund full

Planes de seguridad (continuación)

Seguridad interna

El control de acceso asegura y restringe quien puede conectarse y lo que puede hacerse en

la base de datos.Los usuarios deben estar limitados a sólo los datos que necesiten.Todos los usuarios deben tener contraseñas seguras.Utilice la cuenta de administrador sólo cuando sea absolutamente

necesario.Desactive o elimine las cuentas antiguas o sin uso que pertenezcan a

personas que ya nonecesiten el acceso a la base de datos.

Page 205: Db admin fund full

Tipos de ataquesBruto: Craqueo forzado de contraseñas de usuario débiles opredeterminadas.Escalada de privilegios: se le otorgan más privilegios de

acceso del necesarioa un usuario.Aprovechamiento de servicios de la base de datos sin utilizar e

innecesarios.Enfocarse en vulnerabilidades de la base de datos (agujeros

de seguridad)Respaldos hurtados (sin encriptar)InferenciaInyección SQL

Page 206: Db admin fund full

Ataque de inferenciaTécnica de minería de datos en la cual, al analizarlos, el

usuario obtieneconocimientos ilegítimos sobre un tema o base de datos.La inferencia ocurre cuando los usuarios son capaces de reunir

informaciónen un nivel de seguridad que debería estar disponible

únicamente en unnivel de seguridad superior.Los protocolos, como la criptografía, pueden evitar que los

usuariosinterfieran con los datos.Se utiliza un diseño de base de datos y control de acceso

cuidadoso.

Page 207: Db admin fund full

Inyección SQLPermite a un usuario ejecutar código de lenguaje de consulta estructurado(SQL) de forma arbitraria para acceder a la base de datos.Ocurre cuando información ingresada por el usuario no se filtracorrectamente o se ejecuta de forma inesperada.Por ejemplo, en la pantalla de inicio de sesión donde se ingresa un nombrede usuario y una contraseña, un hacker utiliza una sentencia SQL o un comandode base de datos (en lugar de los datos para iniciar sesión) que va directo a labase de datos.

Para protegerse contra ataques de inyección SQL:Revise parámetros.Cuando se solicite un número de cliente, revise que la información ingresadasea del tipo de dato correcto, longitud, etc. Antes de ejecutar la consulta.Limite los permisos de la cuenta que ejecute consultas SQL.Utilice procedimientos almacenados (o técnicas similares) para evitar que los

usuariosinteractúen directamente con código SQL.

Page 208: Db admin fund full

Cuentas de usuarioLos administradores de bases de datos protegen su información de accesossin autorización y de intentos internos para exceder los permisos de accesoal bloquear el acceso a la base de datos con nombres de usuario ycontraseñas.

Esta característica se desarrolla en SQL.

Todas las bases de datos en servidor utilizan cuentas de usuario similares a lasutilizadas en los sistemas operativos de computadoras (ejemplo, Windows Vistao Windows 7).

Cree cuentas de usuario individuales para cada persona que tendrá acceso a la base de datos.Utilice contraseñas seguras con ocho o más caracteres y combine letras, números y símbolos.Cuando tenga una cantidad pequeña de usuarios, cree cuentas de usuario y asígneles permisosdirectamente.

Page 209: Db admin fund full

Cuentas de usuario (continuación)La sentencia SQL GRANT concede permisos hacia la base de datos a usuarios yroles. Ejemplo:

GRANT permisosON tablaTO usuario/rolWITH GRANT OPTION

GRANT: permisos de tabla (SELECT, INSERT, UPDATE, DELETE) o permisosde base de datos (CREATE TABLE, ALTER DATABASE, GRANT)

Se puede otorgar permisos a más de una persona con una sola sentenciaGRANT.

ON: es la tabla afectada por los permisos de nivelTO: es el usuario o rol a quien se le otorgan permisosWITH GRANT OPTION: el usuario (roles no) se les permite otorgar los mismos permisosa otros usuarios.

Page 210: Db admin fund full

Roles de base de datosCuando se tiene una cantidad grande de usuarios , la tarea de

mantener lascuentas y los permisos apropiados puede ser abrumadora.Se puede asignar una cuenta de grupo o individual a un rol o roles.Los permisos se asignan al rol en lugar de hacerlo al usuario

individual.Se puede crear un rol SuperUser y luego agregar las cuentas de

usuarios delos profesores a este rol.

Luego se puede asignar un permiso específico a todos los usuarios presentes (y futuros) al

simplemente asignar el permiso al rol, como por ejemplo el derecho de utilizar unaimpresora específica.

CREATE ROLE SuperUser AUTHORIZATION Administrator

Page 211: Db admin fund full

Uso de roles en sentencia GRANTPrimero, cree cuentas de usuario para cada operador y luego agréguelos a unnuevo rol llamado DataEntry.

Un grupo de profesores agregarán calificaciones a los registros de los alumnos.

Los profesores necesitan tener acceso a la tabla Clase info para modificar oagregar nuevos registros a la tabla.

No serán capaces de eliminar registros de la base de datos.

Al utilizar un rol (DataEntry) para este grupo de profesores se les permiterealizar la tarea de agregar calificaciones.

GRANT SELECT, INSERT, UPDATEON Clase InfoTO DataEntry

Page 212: Db admin fund full

Repaso de la lección1. ¿Qué es un plan de seguridad?2. ¿Cuáles tipos de seguridad se deben considerar?3. ¿Cuáles tipos de ataque pueden suceder?4. ¿Qué son los ataques de inferencia?5. ¿Qué es una inyección SQL?6. Distinga entre cuentas de usuario y roles de base de

datos.

Page 213: Db admin fund full

Respaldos de bases de datos y

restauración

Page 214: Db admin fund full

Perspectiva general de la lección

En esta lección aprenderán:

Los fundamentos sobre respaldos y restauración de la

base de datos.Tipos de respaldos:

Respaldo completoRespaldo incrementalRespaldo diferencial

Servicios de replicación.

Page 215: Db admin fund full

Fundamentos sobre respaldos y restauración de bases de datos

Respaldar es el proceso de guardar todos los elementos necesarios para que

pueda recrear la base de datos en un periodo relativamente corto de tiempo

en caso de ser necesario.

Tipos de respaldos:Respaldo completo: se copian o respaldan todos los archivos.Respaldo incremental: se copian o respaldan sólo los archivos que hayan

cambiadodesde el último respaldo.Respaldo diferencial: se copian sólo los archivos que hayan cambiado desde elúltimo respaldo completo.

El software y los medios físicos son siempre cuestiones que se deben considerar al realizar respaldos.El software de respaldo debe ser capaz de funcionar con registros bloqueados.Los medios de respaldo deben ser capaces de contener todo el respaldo.

Page 216: Db admin fund full

Restauración de una base de datos

Restaurar es el proceso de recuperar todo los elementos necesarios para

hacer que la base de datos vuelva a tener su forma normal.El proceso de restauración debe ser básico y conciso.La restauración debe ser una función del sistema de respaldo.La mayor parte de la planeación debe orientarse al tema de

los respaldospara que cuando necesite restaurar, el proceso ya se haya

planeado.

Page 217: Db admin fund full

Respaldos completosHay dos tipos de respaldos completos para un sistema de base de

datos:El primer tipo copia todos los elementos de la base de datos, incluyendo los

elementosabiertos como archivos que estén abiertos en el momento del respaldo.El segundo tipo copia todos los elementos de la base de datos y todos los

elementos en elservidor. Copia los archivos del servidor relacionados con la base de datos

además de labase de datos en sí, como la seguridad de usuario Network Address Translation

(NAT).

Ventajas de respaldos completosCuenta con copias completas de todo los archivos en una sola ubicación por lo

que elproceso de restauración es relativamente sencillo.

Desventajas de respaldos completosConsume mucho tiempo.Puede ser muy costoso.El sistema puede quedarse fuera de servicio durante el proceso del respaldo.

Page 218: Db admin fund full

Respaldos incrementalesUn respaldo incremental respalda sólo los archivos que tengan

cambios desde el último respaldo.Sólo los cambios se escriben en el medio del respaldo.Si no hay cambios, no se realiza el respaldo.Los respaldos incrementales se deben realizar todos los días desde el último

respaldocompleto.

Ventajas de los respaldos incrementales.Este tipo de respaldo es el más rápido de los tres tipos.El costo de un respaldo incremental es menor que el de uno completo.El proceso de restauración puede ser más rápido si solo ha perdido algunos

archivos.

Desventajas de los respaldos incrementales.El proceso de restauración puede ser mucho más pesado que con un respaldo

completo.Frecuentemente se necesita un respaldo completo además del o los respaldosincrementales para restaurar la base de datos.

Page 219: Db admin fund full

Respaldos diferencialesUn respaldo diferencial sólo respaldará aquellos archivos que hayan

cambiado desde el último respaldo completo.La diferencia entre un respaldo diferencial y uno incremental es que un respaldoincremental se basa en el estatus del respaldo completo no en el cambio de los

datos.Los respaldos se deben realizar todos los días desde el último respaldo completo.

Ventajas de los respaldos diferenciales.Este respaldo es un proceso más rápido que un respaldo completo.El costo de un respaldo diferencial es menor al de un respaldo completo.El proceso de restauración puede ser más rápido si sólo ha perdido algunos

archivos.Cuenta con el mejor balance entre tiempo de restauración y costo.

Desventajas de los respaldos diferenciales.La restauración de las funciones básicas es relativamente rápida y la restauración

completase lleva a cabo en un periodo de tiempo razonable.Puede necesitar un respaldo completo además de los respaldos incrementales

pararestaurar la base de datos.

Page 220: Db admin fund full

Problemas con los métodos de respaldo clásicosTodos los respaldos requieren de recursos de la base de datos y del

servidorque reducirán la habilidad de la base de datos y/o el servidor en el

cual seencuentra localizada.Se necesita de un respaldo offsite en caso de que haya daño físico a laubicación en la cual se encuentre alojada la base de datos. Si el

edificio esdestruido, necesitará que la base de datos siga funcionando.Retrasos de tiempo relacionados con los respaldos debido a que el

medio delrespaldo que necesite para la restauración se haya movido.Puede necesitarse mucho espacio para almacenar los respaldos onsite

yoffsite.

Page 221: Db admin fund full

Servicios de replicación

Servicio de replicación con espejo en tiempo real:Los servicios de replicación se utilizan para replicar y sincronizar una base

de datos condos o más servidores.La replicación es una reproducción total o incremental de la base de datos.Es posible inclusive replicar el ambiente del servidor en el cual esta

localizada la base dedatos.Esto se puede logra de forma local o a través de redes extensas mientras

la base de datoseste siendo utilizada.

Page 222: Db admin fund full

Servicios de replicación (continuación)

Ventajas de lo servicios de replicación:El respaldo se puede configurar a un método de auto escritura.Todos los archivos activos se escriben en los dos servidores o grupo de servidores.

La base de datos nunca estará no-disponible.Uno de los servidores puede estar desactivado pero la base de datos seguirá disponible.

El proceso de restauración puede realizarse en un servidor mientras losotros pueden seguir funcionando.

Desventajas de los servicios de replicación:El costo es muy alto en comparación con los métodos de respaldo en un

soloservidor.

El costo de hardware de tener varios servidores físicos.El costo de la red por tener el equipo de red físico, servidores adicionales el ancho de

bandapara los servidores para comunicarse entre sí.Aún es necesario realizar un respaldo físico como protección contra una corrupción extensadel sistema.Posibles problemas con virus en la red o cluster.

Page 223: Db admin fund full

Repaso de la lección1. Describa una versión a pequeña escala de los servicios de

replicación.2. ¿Cuáles son los tres tipos principales de respaldos?3. ¿Cuál es el método de respaldo más rápido?4. ¿Cuál es el método de restauración más rápido?