Download 1. Lenguaje de Definición de Datos 2. Lenguaje de Manipulación de

Document related concepts

SQL wikipedia , lookup

Lenguaje de definición de datos wikipedia , lookup

Lenguaje de manipulación de datos wikipedia , lookup

Base de datos relacional wikipedia , lookup

Modelo relacional wikipedia , lookup

Transcript
1.
2.
Lenguaje de Definición de Datos
Lenguaje de Manipulación de
Datos
M. C. Gustavo Alfonso Gutiérrez
Carreón
 Los
'sistemas de gestión de bases de
datos (en inglés database
management system, abreviado
DBMS) son un tipo de software muy
específico, dedicado a servir de
interfaz entre la base de datos, el
usuario y las aplicaciones que la
utilizan.
M.C. Gustavo A. Gutiérrez Carreón
mar-10
M.C. Gustavo A. Gutiérrez Carreón
mar-10

Existen distintos objetivos que deben cumplir los SGBD:

Abstracción de la información. Los SGBD ahorran a los usuarios
detalles acerca del almacenamiento físico de los datos. Da lo mismo si
una base de datos ocupa uno o cientos de archivos, este hecho se hace
transparente al usuario. Así, se definen varios niveles de abstracción.

Independencia. La independencia de los datos consiste en la
capacidad de modificar el esquema (físico o lógico) de una base de
datos sin tener que realizar cambios en las aplicaciones que se sirven
de ella.

Consistencia. En aquellos casos en los que no se ha logrado eliminar la
redundancia, será necesario vigilar que aquella información que
aparece repetida se actualice de forma coherente, es decir, que todos
los datos repetidos se actualicen de forma simultánea. Por otra parte,
la base de datos representa una realidad determinada que tiene
determinadas condiciones, por ejemplo que los menores de edad no
pueden tener licencia de conducir. El sistema no debería aceptar datos
de un conductor menor de edad. En los SGBD existen herramientas que
facilitan la programación de este tipo de condiciones.
M.C. Gustavo A. Gutiérrez Carreón
mar-10
Seguridad. La información almacenada en una base
de datos puede llegar a tener un gran valor. Los SGBD
deben garantizar que esta información se encuentra
segura de permisos a usuarios y grupos de usuarios,
que permiten otorgar diversas categorías de permisos.
 Manejo de transacciones. Una transacción es un
programa que se ejecuta como una sola operación.
Esto quiere decir que luego de una ejecución en la
que se produce una falla es el mismo que se
obtendría si el programa no se hubiera ejecutado. Los
SGBD proveen mecanismos para programar las
modificaciones de los datos de una forma mucho más
simple que si no se dispusiera de ellos.
 Tiempo de respuesta. Lógicamente, es deseable
minimizar el tiempo que el SGBD tarda en darnos la
información solicitada y en almacenar los cambios
realizados.

M.C. Gustavo A. Gutiérrez Carreón
mar-10
El lenguaje de consulta estructurado SQL (por
sus siglas en inglés: Structured Query Language)
es un lenguaje declarativo de acceso a bases de
datos relacionales que permite especificar
diversos tipos de operaciones en éstas.
 Una de sus características es el manejo del
álgebra y el cálculo relacional permitiendo
efectuar consultas con el fin de recuperar -de
una forma sencilla- información de interés de
una base de datos, así como también hacer
cambios sobre ella.
 Es un lenguaje de cuarta generación (4GL).

M.C. Gustavo A. Gutiérrez Carreón
mar-10
 El
lenguaje de definición de datos (en inglés
Data Definition Language, o DDL), es el que
se encarga de la modificación de la
estructura de los objetos de la base de
datos.
 Existen cuatro operaciones básicas:




CREATE
ALTER
DROP
TRUNCATE
M.C. Gustavo A. Gutiérrez Carreón
mar-10
 Este
comando crea un objeto dentro de la
base de datos.
 Puede ser una tabla, vista, índice, trigger,
función, procedimiento o cualquier otro
objeto que el motor de la base de datos
soporte.
 Ejemplo (crear una tabla)
CREATE TABLE 'TABLA_NOMBRE' (
'CAMPO_1' INT,
'CAMPO_2' STRING
)
M.C. Gustavo A. Gutiérrez Carreón
mar-10
 CREATE
TABLE tabla (campo1 tipo (tamaño)
índice1 , campo2 tipo (tamaño) índice2 , ...,
índice multicampo , ... )
Parte
tabla
campo1
campo2
tipo
tamaño
índice1
índice2
índice multicampos
M.C. Gustavo A. Gutiérrez Carreón
Descripción
Es el nombre de la tabla que se va a crear.
Es el nombre del campo o de los campos
que se van a crear en la nueva tabla. La
nueva tabla debe contener, al menos, un
campo.
Es el tipo de datos de campo en la nueva
tabla. (Ver Tipos de Datos)
Es el tamaño del campo sólo se aplica para
campos de tipo texto.
Es una cláusula CONSTRAINT que define el
tipo de indice a crear. Esta cláusula en
opcional.
Es una cláusula CONSTRAINT que define el
tipo de indice multicampos a crear. Un
índice multi campo es aquel que está
indexado por el contenido de varios
campos. Esta cláusula en opcional.
mar-10
Tipo de Indice
UNIQUE
PRIMARY KEY
FOREIGN KEY
M.C. Gustavo A. Gutiérrez Carreón
Descripción
Genera un índece de clave única. Lo que
implica que los registros de la tabla no
pueden contener el mismo valor en los
campos indexados.
Genera un índice primario el campo o los
campos especificados. Todos los campos de
la clave principal deben ser únicos y no
nulos, cada tabla sólo puede contener una
única clave principal.
Genera un índice externo (toma como
valor del índice campos contenidos en
otras tablas). Si la clave principal de la
tabla externa consta de más de un campo,
se debe utilizar una definición de índice de
múltiples campos, listando todos los
campos de referencia, el nombre de la
tabla externa, y los nombres de los campos
referenciados en la tabla externa en el
mismo orden que los campos de referencia
listados. Si los campos referenciados son la
clave principal de la tabla externa, no
tiene que especificar los campos
referenciados, predeterminado por valor,
el motor Jet se comporta como si la clave
principal de la tabla externa fueran los
campos referenciados.
mar-10
 Este
comando permite modificar la
estructura de un objeto.
 Se pueden agregar/quitar campos a una
tabla, modificar el tipo de un campo,
agregar/quitar índices a una tabla, modificar
un trigger, etc.
 Ejemplo (agregar columna a una tabla)
ALTER TABLE 'TABLA_NOMBRE' (
ADD NUEVO_CAMPO INT
)
M.C. Gustavo A. Gutiérrez Carreón
mar-10
ALTER TABLE tabla {ADD {COLUMN tipo de
campo[(tamaño)] [CONSTRAINT índice]
CONSTRAINT índice multicampo} |
DROP {COLUMN campo I CONSTRAINT nombre del
índice} }

Parte
tabla
campo
tipo
tamaño
índice
índice multicampo
Descripción
Es el nombre de la tabla que se desea
modificar.
Es el nombre del campo que se va a añadir
o eliminar.
Es el tipo de campo que se va a añadir.
El el tamaño del campo que se va a añadir
(sólo para campos de texto).
Es el nombre del índice del campo (cuando
se crean campos) o el nombre del índice de
la tabla que se desea eliminar.
Es el nombre del índice del campo
multicampo (cuando se crean campos) o el
nombre del índice de la tabla que se desea
eliminar.
M.C. Gustavo A. Gutiérrez Carreón
mar-10
Operación
ADD COLUMN
ADD
DROP COLUMN
DROP
M.C. Gustavo A. Gutiérrez Carreón
Descripción
Se utiliza para añadir un nuevo
campo a la tabla, indicando el
nombre, el tipo de campo y
opcionalmente el tamaño (para
campos de tipo texto).
Se utliza para agregar un índice
de multicampos o de un único
campo.
Se utliza para borrar un campo.
Se especifica únicamente el
nombre del campo.
Se utiliza para eliminar un
índice. Se especifica únicamente
el nombre del índice a
continuación de la palabra
reservada CONSTRAINT.
mar-10
 Este
comando elimina un objeto de la base
de datos.
 Puede ser una tabla, vista, índice, trigger,
función, procedimiento o cualquier otro
objeto que el motor de la base de datos
soporte.
 Se puede combinar con la sentencia ALTER.
 Ejemplo
ALTER TABLE ''TABLA_NOMBRE''
(
DROP COLUMN ''CAMPO_NOMBRE1''
)
M.C. Gustavo A. Gutiérrez Carreón
mar-10





Este comando trunca todo el contenido de una tabla.
La ventaja sobre el comando DROP, es que si se
quiere borrar todo el contenido de la tabla, es mucho
más rápido, especialmente si la tabla es muy grande.
La desventaja es que TRUNCATE sólo sirve cuando se
quiere eliminar absolutamente todos los registros, ya
que no se permite la cláusula WHERE.
Si bien, en un principio, esta sentencia parecería ser
DML (Lenguaje de Manipulación de Datos), es en
realidad una DDL, ya que internamente, el comando
TRUNCATE borra la tabla y la vuelve a crear y no
ejecuta ninguna transacción.
Ejemplo
TRUNCATE TABLE ''TABLA_NOMBRE1''
M.C. Gustavo A. Gutiérrez Carreón
mar-10
Un lenguaje de manipulación de datos (Data
Manipulation Language, o DML en inglés) es un
lenguaje proporcionado por el sistema de gestión
de base de datos que permite a los usuarios
llevar a cabo las tareas de consulta o
manipulación de los datos, organizados por el
modelo de datos adecuado.
 El lenguaje de manipulación de datos más
popular hoy día es SQL, usado para recuperar y
manipular datos en una base de datos relacional.
 Otros ejemplos de DML son los usados por bases
de datos IMS/DL1, CODASYL u otras.

M.C. Gustavo A. Gutiérrez Carreón
mar-10



Utilizado para consultar registros de la base de datos
que satisfagan un criterio determinado.
La sintaxis básica de una consulta de selección es la
siguiente:
SELECT Campos FROM Tabla
Puede contener alguna de las siguientes clausulas:





FROM
Utilizada para especificar la tabla de la cual
se van a seleccionar los registros
WHERE
Utilizada para especificar las condiciones que
deben reunir los registros que se van a seleccionar
GROUP BY Utilizada para separar los registros
seleccionados en grupos específicos
HAVING
Utilizada para expresar la condición que
debe satisfacer cada grupo
ORDER BY Utilizada para ordenar los registros
seleccionados de acuerdo con un orden específico
M.C. Gustavo A. Gutiérrez Carreón
mar-10
Predicado
ALL
TOP
DISTINCT
DISTINCTROW
Descripción
Devuelve todos los campos
de la tabla
Devuelve un determinado
número de registros de la
tabla
Omite los registros cuyos
campos seleccionados
coincidan totalmente
Omite los registros
duplicados basandose en la
totalidad del registro y no
sólo en los campos
seleccionados.
M.C. Gustavo A. Gutiérrez Carreón
mar-10






Una sentencia INSERT de SQL agrega uno o más
registros a una (y sólo una) tabla en una base de
datos relacional.
Forma básica
INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
VALUES (''valor1'', [''valor2,...''])
Las cantidades de columnas y valores deben ser
iguales.
Si una columna no se especifica, le será asignado el
valor por omisión.
Los valores especificados (o implícitos) por la
sentencia INSERT deberán satisfacer todas las
restricciones aplicables.
Si ocurre un error de sintaxis o si alguna de las
restricciones es violada, no se agrega la fila y se
devuelve un error.
M.C. Gustavo A. Gutiérrez Carreón
mar-10
 Una
sentencia UPDATE de SQL es utilizada
para modificar los valores de un conjunto de
registros existentes en una tabla.
 Forma básica
UPDATE ''tabla''
SET ''columna1'' = ''valor1'' ,''columna2'' =
''valor2'',...
WHERE ''columnaN = ''valorN''
M.C. Gustavo A. Gutiérrez Carreón
mar-10
 Una
sentencia DELETE de SQL borra uno o
más registros existentes en una tabla,
 Forma básica
DELETE FROM ''tabla''
WHERE ''columna1'' = ''valor1''
M.C. Gustavo A. Gutiérrez Carreón
mar-10