SlideShare una empresa de Scribd logo
1 de 10
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS



Terminología
SQL
       Structured Query Language o Lenguaje de Consultas
       Estructurado. Es el lenguaje que permite la
       comunicación con el Sistema Gestor de Bases de Datos
       (Oracle en nuestro caso).
El SQL es un lenguaje unificado
       Lo utilizan todo tipo de usuarios, desde el administrador
       de la base de datos, DBA, hasta el usuario final.
El SQL es un lenguaje no procedimental.
       El usuario especifica Qué quiere, no Cómo ni Dónde
       conseguirlo.
El SQL es relacionalmente completo.
       Permite la realización de cualquier consulta de datos.
SQL= DDL + DML
       Las sentencias del SQL se clasifican como parte del
       DDL o del DML.
Lenguaje de Definición de Datos, DDL
       sentencias del SQL que permiten definir los objetos de la
       Base de Datos (create, revoke, grant, alter, etc.).
       Cuando se definen dichos objetos se almacenan en el
       diccionario de datos.
Lenguaje de Manipulación de Datos, DML
       sentencias del SQL que se utilizan para manejar los datos
       de la base de datos (select, insert, update, delete,
       etc).
commit/rollback
       cada vez que se realiza alguna operación en la base de
       datos se realiza no sobre la tabla en sí, sino sobre una
       copia local de la misma. Así, si queremos que los
       resultados de la modificación se trasladen a la base de
       datos y perduren en el tiempo hay que confirmar dicha
       operación con el comando commit. También se puede
       impedir que los últimos cambios lleguen a efectuarse con
       rollback, aunque existen algunas sentencias SQL que
       se 'autoconfirman' y no se pueden volver atrás.
Diccionario de la Base de Datos
       Guarda la definición de todos los objetos almacenados
       en la base de datos; sus características, restricciones,
       privilegios, relaciones entre ellos, etc.
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS


2 Tipos de Sentencias


Las sentencias SQL pertenecen a dos categorías principales:
Lenguaje de Definición de Datos, DDL y Lenguaje de
Manipulación de Datos, DML. Estos dos lenguajes no son
lenguajes en sí mismos, sino que es una forma de clasificar las
sentencias de lenguaje SQL en función de su cometido. La
diferencia principal reside en que el DDL crea objetos en la base
de datos y sus efectos se pueden ver en el diccionario de la base
de datos; mientras que el DML es el que permite consultar,
insertar, modificar y eliminar la información almacenada en los
objetos de la base de datos.

Cuando se ejecutan las sentencias DDL de SQL, el SGBD
confirma la transacción actual antes y después de cada una de
las sentencias DDL. En cambio, las sentencias DML no llevan
implícito el commit y se pueden deshacer. Existe pues un
problema al mezclar sentencias DML con DDL, ya que estas
últimas pueden confirmar las primeras de manera involuntaria e
implicita, lo que en ocasiones puede ser un problema.

A continuación se presenta una tabla con las sentencias SQL
más comunes, clasificadas según el lenguaje al que pertenecen.

   Sentencia
                 Objetivo
   DDL
   Alter
                 Recompilar un procedimiento almacenado.
   procedure
                 Añadir o redefinir una columna, modificar
   Alter Table
                 la asignación de almacenamiento.
                 Recoger estadísticas de rendimiento sobre
   Analyze       los objetos de la BD para utilizarlas en el
                 optimizador basado en costes.
   Create
                 Crear una tabla.
   Table
   Create
                 Crear un índice.
   Index
   Drop Table Eliminar una tabla.
   Drop Index Eliminar un índice.
                 Conceder privilegios o papeles, roles, a un
   Grant
                 usuario o a otro rol.
   Truncate      Eliminar todas las filas de una tabla.
   Revoke        Retirar los privilegios de un usuario o rol de
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS

               la base de datos.
   Sentencia
               Objetivo
   DML
   Insert      Añadir filas de datos a una tabla.
   Delete      Eliminar filas de datos de una tabla.
   Update      Modificar los datos de una tabla.
   Select      Recuperar datos de una tabla.
               Confirmar como permamentes las
   Commit
               modificaciones realizadas.
               Deshacer todas las modificaciones
   Rollback
               realizadas desde la última confirmación.




Las sentencias que forman parte del DML (Data Management Language) lenguaje de
manipulación de datos, todas esas sentencias sirven para recuperar, insertar, borrar,
modificar los datos almacenados en la base de datos; lo que veremos en este tema son
las sentencias que afectan a la estructura de los datos.
    El DDL (Data Definition Language) lenguaje de definición de datos es la parte
  del SQL que más varía de un sistema a otro ya que esa área tiene que ver con cómo
  se organizan internamente los datos y eso, cada sistema lo hace de una manera u
  otra.
    Así como el DML de Microsoft Jet incluye todas las sentencias DML que nos
  podemos encontrar en otros SQLs (o casi todas), el DDL de Microsoft Jet en cambio
  contiene menos instrucciones que otros sistemas.
CREATE TABLE

   La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para
 rellenarla con datos, nos permite definir las columnas que tiene y ciertas
 restricciones que deben cumplir esas columnas.

   La sintaxis es la siguiente:




    nbtabla: nombre de la tabla que estamos definiendo

   nbcol: nombre de la columna que estamos definiendo

  Tipo: tipo de dato de la columna, todos los datos almacenados en la columna
 deberán ser de ese tipo. Para ver qué tipos de datos se pueden emplear haz clic aquí

   Estos son los tipos de datos que soporta el SQL de Microsoft® Jet versión 4.0
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS

       Los sinónimos son palabras equivalentes al tipo de dato indicado.

       El tamaño indica cuánto ocupará una columna del tipo indicado.



      Tipo de dato             Sinónimos      Tamaño                                    Descripción
BINARY               VARBINARY             1 byte por      Se puede almacenar cualquier tipo de datos en un campo de este
                     BINARY VARYING        carácter        tipo. Los datos no se traducen (por ejemplo, a texto). La forma en
                     BIT VARYING                           que se introducen los datos en un campo binario indica cómo
                                                           aparecerán al mostrarlos.
BIT                  BOOLEAN               1 byte          Valores Sí y No, y campos que contienen solamente uno de dos
                     LOGICAL                               valores.
                     LOGICAL1
                     YESNO


TINYINT              INTEGER1              1 byte          Un número entero entre 0 y 255.
                     BYTE


COUNTER              AUTOINCREMENT                         Se utiliza para campos contadores cuyo valor se incrementa
                                                           automáticamente al crear un nuevo registro.
MONEY                CURRENCY              8 bytes         Un número entero comprendido entre
                                                           – 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME             DATE                  8 bytes         Una valor de fecha u hora entre los años 100 y 9999
                     TIME


UNIQUEIDENTIFIER GUID                      128 bits        Un número de identificación único utilizado con llamadas a
                                                           procedimientos remotos.
DECIMAL              NUMERIC               17 bytes        Un tipo de datos numérico exacto con valores comprendidos entre
                     DEC                                   1028 - 1 y - 1028 - 1. Puede definir la precisión (1 - 28) y la escala
                                                           (0 - precisión definida). La precisión y la escala predeterminadas
                                                           son 18 y 0, respectivamente.
REAL                 SINGLE                4 bytes         Un valor de coma flotante de precisión simple con un intervalo
                     FLOAT4                                comprendido entre – 3,402823E38 y – 1,401298E-45 para valores
                     IEEESINGLE                            negativos, y desde 1,401298E-45 a 3,402823E38 para valores
                                                           positivos, y 0.
FLOAT                DOUBLE                8 bytes         Un valor de coma flotante de precisión doble con un intervalo
                     FLOAT8                                comprendido entre – 1,79769313486232E308 y –
                     IEEEDOUBLE                            4,94065645841247E-324 para valores negativos, y desde
                     NUMBER
                                                           4,94065645841247E-324 a 1,79769313486232E308 para valores
                                                           positivos, y 0.
SMALLINT             SHORT                 2 bytes         Un entero corto entre – 32.768 y 32.767.
                     INTEGER2


INTEGER              LONG                  4 bytes         Un entero largo entre – 2.147.483.648 y 2.147.483.647.
                     INT
                     INTEGER4


IMAGE                LONGBINARY            Lo que se       Desde cero hasta un máximo de 2.14 gigabytes.
                     GENERAL               requiera        Se utiliza para objetos OLE.
                     OLEOBJECT


TEXT                 LONGTEXT              2 bytes por     Desde cero hasta un máximo de 2.14 gigabytes.
                     LONGCHAR              carácter.
                     MEMO                  (Consulte las
                     NOTE
                     NTEXT
                                           notas).


CHAR                 TEXT(n)               2 bytes por     Desde cero a 255 caracteres.
                     ALPHANUMERIC          carácter.
                     CHARACTER             (Consulte las
                     STRING
                     VARCHAR
                                           notas).
                     CHARACTER VARYING
                     NCHAR
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS
             NATIONAL CHARACTER
             NATIONAL CHAR
             NATIONAL CHARACTER
             VARYING
             NATIONAL CHAR VARYING




   Notas:

   Un campo LONGTEXT se almacena siempre en el formato de representación
  Unicode.

    Si se utiliza el nombre del tipo de datos TEXT sin especificar la longitud opcional
  (TEXT(25), por ejemplo), se crea un campo LONGTEXT. Esto permite escribir
  instrucciones CREATE TABLE que producirán tipos de datos coherentes con
  Microsoft SQL Server.

   Un campo CHAR se almacena siempre en el formato de representación Unicode,
  que es el equivalente del tipo de datos NATIONAL CHAR del SQL de ANSI.

    Si se utiliza el nombre del tipo de datos TEXT y se especifica la longitud opcional
  (TEXT(25), por ejemplo), el tipo de datos del campo es equivalente al tipo de datos
  CHAR. De ese modo, se mantiene la compatibilidad con versiones anteriores para la
  mayoría de las aplicaciones de Microsoft Jet, a la vez que se habilita el tipo de datos
  TEXT (sin especificación de longitud) para la alineación con Microsoft SQL Server.

    Los caracteres de los campos definidos como TEXT (también conocidos como
 MEMO) o CHAR (también conocidos como TEXT(n) con una longitud específica) se
 almacenan en el formato de representación Unicode. Los caracteres Unicode
 requieren siempre dos bytes para el almacenamiento de cada carácter. Para las
 bases de datos de Microsoft Jet ya existentes que contengan principalmente datos de
 tipo carácter, esto puede significar que el tamaño del archivo de base de datos sea
 casi el doble cuando se convierta al formato Microsoft Jet 4.0. Sin embargo, la
 representación Unicode de muchos juegos de caracteres, antes denominados juegos
 de caracteres de un solo byte (SBCS), puede comprimirse fácilmente a caracteres de
 un solo byte. Si define una columna CHAR con el atributo COMPRESSION, los datos
 se comprimirán automáticamente a medida que se almacenen y se descomprimirán
 cuando se recuperen de la columna.

    En ACCESS 2000 se utiliza el formato de representación de caracteres Unicode, los
  caracteres Unicode requieren siempre dos bytes para cada carácter lo que permite
  una gama más amplia de caracteres.
Para las bases de datos de Microsoft® Jet ya existentes que contengan principalmente
datos de tipo carácter, esto puede significar que el tamaño del archivo de base de datos
sea casi el doble cuando se convierta al formato Microsoft Jet versión 4.0. Sin embargo,
la representación Unicode de muchos juegos de caracteres, antes denominados juegos
de caracteres de un solo byte (SBCS), puede comprimirse fácilmente a caracteres de un
solo byte. Si se define una columna CHARACTER con el atributo WITH COMPRESSION
(propiedad Compresión Unicode), los datos se comprimirán automáticamente cua
 Los caracteres Unicode y su compresión.
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS

   ndo se almacenen y se descomprimirán cuando se recuperen de la columna.

   Las columnas MEMO también pueden ser definidas de modo que almacenen datos
 en formato comprimido. No obstante, existe una restricción. Sólo se comprimirán las
 instancias de columnas MEMO que, tras la compresión, ocupen 4.096 bytes o menos.
 El resto de instancias de columnas MEMO quedarán sin comprimir. Esto significa que,
 dentro de una tabla determinada, para una columna MEMO dada, algunos datos
 pueden estar comprimidos y otros no.

Fuente: Datos extraidos de la ayuda de Microsoft Access2000

   Una restricción consiste en la definición de una característica adicional que tiene
 una columna o una combinación de columnas, suelen ser características como
 valores no nulos (campo requerido), definición de índice sin duplicados, definición de
 clave principal y definición de clave foránea (clave ajena o externa, campo que sirve
 para relacionar dos tablas entre sí).

   restricción1: una restricción de tipo 1 es una restricción que aparece dentro de la
 definición de la columna después del tipo de dato y afecta a una columna, la que se
 está definiendo.

  restricción2: una restricción de tipo 2 es una restricción que se define después de
 definir todas las columnas de la tabla y afecta a una columna o a una combinación
 de columnas.

   Para escribir una sentencia CREATE TABLE se empieza por indicar el nombre de
 la tabla que queremos crear y a continuación entre paréntesis indicamos separadas
 por comas las definiciones de cada columna de la tabla, la definición de una
 columna consta de su nombre, el tipo de dato que tiene y podemos añadir si
 queremos una serie de especificaciones que deberán cumplir los datos
 almacenados en la columna, después de definir cada una de las columnas que
 compone la tabla se pueden añadir una serie de restricciones, esas restricciones
 son las mismas que se pueden indicar para cada columna pero ahora pueden afectar
 a más de una columna por eso tienen una sintaxis ligeramente diferente.

       Una restricción de tipo 1 se utiliza para indicar una característica de la
        columna que estamos definiendo, tiene la siguiente sintaxis:




                     La cláusula NOT NULL indica que la columna no podrá contener un valor nulo,
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS
          decir que se deberá rellenar obligatoriamente y con un valor válido (equivale a
        del campo).
          La cláusula CONSTRAINT sirve para definir una restricción que se podrá elim
        columna. A cada restricción se le asigna un nombre que se utiliza para identificar
          Como restricciones tenemos la de clave primaria (clave principal), la de índice
        la de clave foránea.
          La cláusula PRIMARY KEY se utiliza para definir la columna como clave princ
        no puede contener valores nulos ni pueden haber valores duplicados en esa col
        el mismo valor en esa columna.
          En una tabla no pueden haber varias claves principales, por lo que no podem
        una vez, en caso contrario la sentencia da un error. No hay que confundir la d
        definición de una clave principal compuesta por varias columnas, esto último sí
        de tipo 2.
          La cláusula UNIQUE sirve para definir un índice único sobre la columna. U
        valores duplicados, es decir que si una columna tiene definida un restricción d
        mismo valor en esa columna. Se suele emplear para que el sistema compruebe
        existen, por ejemplo si en una tabla de clientes queremos asegurarnos que dos
        tabla tiene como clave principal un código de cliente, definiremos la columna dni
          La cláusula NOT NULL indica que la columna no puede contener valores nulos
        no puede contener el valor nulo lo podemos hacer sin poner la cláusula
        CONSTRAINT.
          La última restricción que podemos definir sobre una columna es la de clave f
        conjunto de columnas que contiene un valor que hace referencia a una fila de otr
        definir con la cláusula REFERENCES, después de la palabra reservada
        opcionalmente podemos indicar entre paréntesis el nombre de la columna dond
        defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se en
        debemos inidicar el nombre de esta columna entre paréntesis, además sólo pod
        con una restricción de UNIQUE, si la columna2 que indicamos no está definid
        dará un error. Si quieres repasar conceptos de clave foránea e integridad referen
         Conceptos básicos de integridad referencial.




          La integridad referencial es un sistema de reglas que utilizan la mayoría
        asegurarse que los registros de tablas relacionadas son válidos y que no se bo
        accidental produciendo errores de integridad.
          Primero repasemos un poco los tipos de relaciones.


        Tipos de relaciones.

          Entre dos tablas de cualquier base de datos relacional pueden haber dos
        relaciones uno a muchos:
            Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relac
        y viceversa.
          Por ejemplo: tenemos dos tablas una de profesores y otra de departamento
        qué departamento, tenemos una relación uno a uno entre las dos tablas ya q
        profesor puede ser jefe de un solo departamento.
            Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS

        registro de la otra tabla (tabla principal) y un registro de la tabla principal pued
        tabla secundaria, en este caso se suele hacer referencia a la tabla principal com
        tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos
        fácil de recordar).
          Por ejemplo: tenemos dos tablas una con los datos de diferentes poblacion
        puede tener más de un habitante, pero un habitante pertenecerá (estará emp
        caso la tabla principal será la de poblaciones y la tabla secundaria será la de h
        habitantes pero un habitante pertenece a una sola población. Esta relación se
        columna que se corresponde con la clave principal de la tabla 'padre', esta co
        clave ajena o clave externa).
          Una clave foránea es pues un campo de una tabla que contiene una refere
        nuestro ejemplo en la tabla habitantes tenemos una columna población que con
        empadronado el habitante, esta columna es clave ajena de la tabla habitant
        columna codigo de poblacion clave principal de la tabla.




            Relación Varios a Varios: Cuando un registro de una tabla puede estar re
        tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas
        entre las dos que incluya los pares de valores relacionados entre sí.
          Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los
        cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vend
          No se puede definir entre clientes y artículos, hace falta otra tabla (por ejem
        clientes y con artículos. La tabla pedidos estará relacionada con cliente por u
        relacionada con artículos por un relación uno a muchos.




        Integridad referencial

          Cuando se define una columna como clave foránea, las filas de la tabla pued
        nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería a
        está en la tabla de poblaciones. Eso es lo que se denomina integridad re
        referencian otros (claves foráneas) deben ser correctos. La integridad referenc
        datos se asegure de que no hayan en las claves foráneas valores que no estén
          La integridad referencial se activa en cuanto creamos una clave foránea y a
        vez que se modifiquen datos que puedan alterarla.
          ¿ Cuándo se pueden producir errores en los datos?
            Cuando insertamos una nueva fila en la tabla secundaria y el valor de la c
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS

               insertamos un nuevo habitante y en la columna poblacion escribimos un códi
               poblaciones (una población que no existe).
                   Cuando modificamos el valor de la clave principal de un registro que tiene
               sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía
               habitantes, no pueden seguir teniendo el codigo de población 1 porque la pob
               alternativas, no dejar cambiar el codigo de Valencia o bien cambiar el codig
               Valencia y asignarles el código 10.
                   Cuando modificamos el valor de la clave foránea, el nuevo valor debe
               cambiamos la población de un habitante, tenía asignada la población 1 (porqu
               se le asigna la población 2 porque cambia de lugar de residencia. La población 2
                   Cuando queremos borrar una fila de la tabla principal y ese registro tie
               población 1 (Valencia) si existen habitantes asignados a la población 1, estos
               columna población porque tendrían asignada una población que no existe. En e
               borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor n
                 Asociada a la integridad referencial están los conceptos de actualizar los r
               cascada.


               Actualización y borrado en cascada

                 El actualizar y/o eliminar registros en cascada, son opciones que se definen
               indican al sistema gestor qué hacer en los casos comentados en el punto anterio
                   Actualizar                               registros

               Esta opción le indica al sistema gestor de la base de datos que cuando se c
               principal, automáticamente cambiará el valor de la clave foránea de los reg

               Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el va
               clave principal), automáticamente se actualizan todos los habitantes (en la ta
               campo poblacion (en la clave ajena) dejando 10 en vez de 1.
                 Si no se tiene definida esta opción, no se puede cambiar los valores de la
               caso, si intentamos cambiar el valor 1 del codigo de la tabla de poblaciones
               devuelve un error o un mensaje que los registros no se han podido modificar por
                   Eliminar                              registros

               Esta opción le indica al sistema gestor de la base de datos que cuando s
               automáticamente      se     borran   también    los   registros   relacio

               Por ejemplo: Si borramos la población Onteniente en la tabla de poblaciones
               Onteniente se borrarán de la tabla de habitantes.
                Si no se tiene definida esta opción, no se pueden borrar registros de la tabla p
               en la tabla secundaria. En este caso, si intentamos borrar la población Ontenien
               devuelve un error o un mensaje que los registros no se han podido eliminar por

                Para seguir con la instrucción CREATE TABLE pasa a la siguiente página...
  Ejemplo:
CREATE TABLE
tab1 (
col1 INTEGER
INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS
CONSTRAINT pk
PRIMARY KEY,
col2 CHAR(25)
NOT NULL,
col3 CHAR(10)
CONSTRAINT uni1
UNIQUE,
col4 INTEGER,
col5 INT
CONSTRAINT fk5
REFERENCES
tab2 );
   Con este ejemplo
estamos creando la
tabla             tab1
compuesta por: una
columna       llamada
col1 de tipo entero
definida como clave
principal,         una
columna col2 que
puede      almacenar
hasta 25 caracteres
alfanuméricos y no
puede        contener
valores nulos, una
columna col3 de
hasta 10 caracteres
que     no       podrá
contener       valores
repetidos,         una
columna col4 de
tipo    entero      sin
ninguna restricción,
y una columna col5
de tipo entero clave
foránea que hace
referencia a valores
de la clave principal
de la tabla tab2.

Más contenido relacionado

Similar a Trabajo ddl

Similar a Trabajo ddl (20)

Sql server 2005 (bda)henrry
Sql server 2005 (bda)henrrySql server 2005 (bda)henrry
Sql server 2005 (bda)henrry
 
Lenguaje estructurado sql
Lenguaje estructurado sqlLenguaje estructurado sql
Lenguaje estructurado sql
 
Introducción a la base de datos
Introducción a la base de datosIntroducción a la base de datos
Introducción a la base de datos
 
TEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfTEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdf
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Downloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sqlDownloads%2 ftutorial sql%2fmanual-tutorial-sql
Downloads%2 ftutorial sql%2fmanual-tutorial-sql
 
Manual tutorial-sql
Manual tutorial-sqlManual tutorial-sql
Manual tutorial-sql
 
Pop tipos de datos
Pop tipos de datosPop tipos de datos
Pop tipos de datos
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Bdii 04 sql
Bdii 04 sqlBdii 04 sql
Bdii 04 sql
 
3. introducción a sql 2007
3. introducción a sql 20073. introducción a sql 2007
3. introducción a sql 2007
 
Tipos de datos sql
Tipos de datos sqlTipos de datos sql
Tipos de datos sql
 
SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3
 
Oracle Características y tipos de datos
Oracle Características y tipos de datos Oracle Características y tipos de datos
Oracle Características y tipos de datos
 
Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)
 
Modulo sql unidad 1
Modulo sql  unidad 1Modulo sql  unidad 1
Modulo sql unidad 1
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 

Más de rosamelosa

Power point de definición de windows xp y arquitectura
Power point de definición de windows xp y arquitecturaPower point de definición de windows xp y arquitectura
Power point de definición de windows xp y arquitecturarosamelosa
 
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURA
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURADEFINICIÓN DE WINDOWS XP Y ARQUITECTURA
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURArosamelosa
 
Diapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosDiapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosrosamelosa
 
Diapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlDiapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlrosamelosa
 
Lenguaje de definicion de datos(ddl)
Lenguaje  de definicion de datos(ddl)Lenguaje  de definicion de datos(ddl)
Lenguaje de definicion de datos(ddl)rosamelosa
 
Maquinas virtuales
Maquinas virtualesMaquinas virtuales
Maquinas virtualesrosamelosa
 
Maquinas virtuales
Maquinas virtualesMaquinas virtuales
Maquinas virtualesrosamelosa
 

Más de rosamelosa (8)

Power point de definición de windows xp y arquitectura
Power point de definición de windows xp y arquitecturaPower point de definición de windows xp y arquitectura
Power point de definición de windows xp y arquitectura
 
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURA
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURADEFINICIÓN DE WINDOWS XP Y ARQUITECTURA
DEFINICIÓN DE WINDOWS XP Y ARQUITECTURA
 
Diapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosDiapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datos
 
Sql5
Sql5Sql5
Sql5
 
Diapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlDiapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sql
 
Lenguaje de definicion de datos(ddl)
Lenguaje  de definicion de datos(ddl)Lenguaje  de definicion de datos(ddl)
Lenguaje de definicion de datos(ddl)
 
Maquinas virtuales
Maquinas virtualesMaquinas virtuales
Maquinas virtuales
 
Maquinas virtuales
Maquinas virtualesMaquinas virtuales
Maquinas virtuales
 

Trabajo ddl

  • 1. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS Terminología SQL Structured Query Language o Lenguaje de Consultas Estructurado. Es el lenguaje que permite la comunicación con el Sistema Gestor de Bases de Datos (Oracle en nuestro caso). El SQL es un lenguaje unificado Lo utilizan todo tipo de usuarios, desde el administrador de la base de datos, DBA, hasta el usuario final. El SQL es un lenguaje no procedimental. El usuario especifica Qué quiere, no Cómo ni Dónde conseguirlo. El SQL es relacionalmente completo. Permite la realización de cualquier consulta de datos. SQL= DDL + DML Las sentencias del SQL se clasifican como parte del DDL o del DML. Lenguaje de Definición de Datos, DDL sentencias del SQL que permiten definir los objetos de la Base de Datos (create, revoke, grant, alter, etc.). Cuando se definen dichos objetos se almacenan en el diccionario de datos. Lenguaje de Manipulación de Datos, DML sentencias del SQL que se utilizan para manejar los datos de la base de datos (select, insert, update, delete, etc). commit/rollback cada vez que se realiza alguna operación en la base de datos se realiza no sobre la tabla en sí, sino sobre una copia local de la misma. Así, si queremos que los resultados de la modificación se trasladen a la base de datos y perduren en el tiempo hay que confirmar dicha operación con el comando commit. También se puede impedir que los últimos cambios lleguen a efectuarse con rollback, aunque existen algunas sentencias SQL que se 'autoconfirman' y no se pueden volver atrás. Diccionario de la Base de Datos Guarda la definición de todos los objetos almacenados en la base de datos; sus características, restricciones, privilegios, relaciones entre ellos, etc.
  • 2. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS 2 Tipos de Sentencias Las sentencias SQL pertenecen a dos categorías principales: Lenguaje de Definición de Datos, DDL y Lenguaje de Manipulación de Datos, DML. Estos dos lenguajes no son lenguajes en sí mismos, sino que es una forma de clasificar las sentencias de lenguaje SQL en función de su cometido. La diferencia principal reside en que el DDL crea objetos en la base de datos y sus efectos se pueden ver en el diccionario de la base de datos; mientras que el DML es el que permite consultar, insertar, modificar y eliminar la información almacenada en los objetos de la base de datos. Cuando se ejecutan las sentencias DDL de SQL, el SGBD confirma la transacción actual antes y después de cada una de las sentencias DDL. En cambio, las sentencias DML no llevan implícito el commit y se pueden deshacer. Existe pues un problema al mezclar sentencias DML con DDL, ya que estas últimas pueden confirmar las primeras de manera involuntaria e implicita, lo que en ocasiones puede ser un problema. A continuación se presenta una tabla con las sentencias SQL más comunes, clasificadas según el lenguaje al que pertenecen. Sentencia Objetivo DDL Alter Recompilar un procedimiento almacenado. procedure Añadir o redefinir una columna, modificar Alter Table la asignación de almacenamiento. Recoger estadísticas de rendimiento sobre Analyze los objetos de la BD para utilizarlas en el optimizador basado en costes. Create Crear una tabla. Table Create Crear un índice. Index Drop Table Eliminar una tabla. Drop Index Eliminar un índice. Conceder privilegios o papeles, roles, a un Grant usuario o a otro rol. Truncate Eliminar todas las filas de una tabla. Revoke Retirar los privilegios de un usuario o rol de
  • 3. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS la base de datos. Sentencia Objetivo DML Insert Añadir filas de datos a una tabla. Delete Eliminar filas de datos de una tabla. Update Modificar los datos de una tabla. Select Recuperar datos de una tabla. Confirmar como permamentes las Commit modificaciones realizadas. Deshacer todas las modificaciones Rollback realizadas desde la última confirmación. Las sentencias que forman parte del DML (Data Management Language) lenguaje de manipulación de datos, todas esas sentencias sirven para recuperar, insertar, borrar, modificar los datos almacenados en la base de datos; lo que veremos en este tema son las sentencias que afectan a la estructura de los datos. El DDL (Data Definition Language) lenguaje de definición de datos es la parte del SQL que más varía de un sistema a otro ya que esa área tiene que ver con cómo se organizan internamente los datos y eso, cada sistema lo hace de una manera u otra. Así como el DML de Microsoft Jet incluye todas las sentencias DML que nos podemos encontrar en otros SQLs (o casi todas), el DDL de Microsoft Jet en cambio contiene menos instrucciones que otros sistemas. CREATE TABLE La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos, nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas columnas. La sintaxis es la siguiente: nbtabla: nombre de la tabla que estamos definiendo nbcol: nombre de la columna que estamos definiendo Tipo: tipo de dato de la columna, todos los datos almacenados en la columna deberán ser de ese tipo. Para ver qué tipos de datos se pueden emplear haz clic aquí Estos son los tipos de datos que soporta el SQL de Microsoft® Jet versión 4.0
  • 4. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS Los sinónimos son palabras equivalentes al tipo de dato indicado. El tamaño indica cuánto ocupará una columna del tipo indicado. Tipo de dato Sinónimos Tamaño Descripción BINARY VARBINARY 1 byte por Se puede almacenar cualquier tipo de datos en un campo de este BINARY VARYING carácter tipo. Los datos no se traducen (por ejemplo, a texto). La forma en BIT VARYING que se introducen los datos en un campo binario indica cómo aparecerán al mostrarlos. BIT BOOLEAN 1 byte Valores Sí y No, y campos que contienen solamente uno de dos LOGICAL valores. LOGICAL1 YESNO TINYINT INTEGER1 1 byte Un número entero entre 0 y 255. BYTE COUNTER AUTOINCREMENT Se utiliza para campos contadores cuyo valor se incrementa automáticamente al crear un nuevo registro. MONEY CURRENCY 8 bytes Un número entero comprendido entre – 922.337.203.685.477,5808 y 922.337.203.685.477,5807. DATETIME DATE 8 bytes Una valor de fecha u hora entre los años 100 y 9999 TIME UNIQUEIDENTIFIER GUID 128 bits Un número de identificación único utilizado con llamadas a procedimientos remotos. DECIMAL NUMERIC 17 bytes Un tipo de datos numérico exacto con valores comprendidos entre DEC 1028 - 1 y - 1028 - 1. Puede definir la precisión (1 - 28) y la escala (0 - precisión definida). La precisión y la escala predeterminadas son 18 y 0, respectivamente. REAL SINGLE 4 bytes Un valor de coma flotante de precisión simple con un intervalo FLOAT4 comprendido entre – 3,402823E38 y – 1,401298E-45 para valores IEEESINGLE negativos, y desde 1,401298E-45 a 3,402823E38 para valores positivos, y 0. FLOAT DOUBLE 8 bytes Un valor de coma flotante de precisión doble con un intervalo FLOAT8 comprendido entre – 1,79769313486232E308 y – IEEEDOUBLE 4,94065645841247E-324 para valores negativos, y desde NUMBER 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos, y 0. SMALLINT SHORT 2 bytes Un entero corto entre – 32.768 y 32.767. INTEGER2 INTEGER LONG 4 bytes Un entero largo entre – 2.147.483.648 y 2.147.483.647. INT INTEGER4 IMAGE LONGBINARY Lo que se Desde cero hasta un máximo de 2.14 gigabytes. GENERAL requiera Se utiliza para objetos OLE. OLEOBJECT TEXT LONGTEXT 2 bytes por Desde cero hasta un máximo de 2.14 gigabytes. LONGCHAR carácter. MEMO (Consulte las NOTE NTEXT notas). CHAR TEXT(n) 2 bytes por Desde cero a 255 caracteres. ALPHANUMERIC carácter. CHARACTER (Consulte las STRING VARCHAR notas). CHARACTER VARYING NCHAR
  • 5. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS NATIONAL CHARACTER NATIONAL CHAR NATIONAL CHARACTER VARYING NATIONAL CHAR VARYING Notas: Un campo LONGTEXT se almacena siempre en el formato de representación Unicode. Si se utiliza el nombre del tipo de datos TEXT sin especificar la longitud opcional (TEXT(25), por ejemplo), se crea un campo LONGTEXT. Esto permite escribir instrucciones CREATE TABLE que producirán tipos de datos coherentes con Microsoft SQL Server. Un campo CHAR se almacena siempre en el formato de representación Unicode, que es el equivalente del tipo de datos NATIONAL CHAR del SQL de ANSI. Si se utiliza el nombre del tipo de datos TEXT y se especifica la longitud opcional (TEXT(25), por ejemplo), el tipo de datos del campo es equivalente al tipo de datos CHAR. De ese modo, se mantiene la compatibilidad con versiones anteriores para la mayoría de las aplicaciones de Microsoft Jet, a la vez que se habilita el tipo de datos TEXT (sin especificación de longitud) para la alineación con Microsoft SQL Server. Los caracteres de los campos definidos como TEXT (también conocidos como MEMO) o CHAR (también conocidos como TEXT(n) con una longitud específica) se almacenan en el formato de representación Unicode. Los caracteres Unicode requieren siempre dos bytes para el almacenamiento de cada carácter. Para las bases de datos de Microsoft Jet ya existentes que contengan principalmente datos de tipo carácter, esto puede significar que el tamaño del archivo de base de datos sea casi el doble cuando se convierta al formato Microsoft Jet 4.0. Sin embargo, la representación Unicode de muchos juegos de caracteres, antes denominados juegos de caracteres de un solo byte (SBCS), puede comprimirse fácilmente a caracteres de un solo byte. Si define una columna CHAR con el atributo COMPRESSION, los datos se comprimirán automáticamente a medida que se almacenen y se descomprimirán cuando se recuperen de la columna. En ACCESS 2000 se utiliza el formato de representación de caracteres Unicode, los caracteres Unicode requieren siempre dos bytes para cada carácter lo que permite una gama más amplia de caracteres. Para las bases de datos de Microsoft® Jet ya existentes que contengan principalmente datos de tipo carácter, esto puede significar que el tamaño del archivo de base de datos sea casi el doble cuando se convierta al formato Microsoft Jet versión 4.0. Sin embargo, la representación Unicode de muchos juegos de caracteres, antes denominados juegos de caracteres de un solo byte (SBCS), puede comprimirse fácilmente a caracteres de un solo byte. Si se define una columna CHARACTER con el atributo WITH COMPRESSION (propiedad Compresión Unicode), los datos se comprimirán automáticamente cua Los caracteres Unicode y su compresión.
  • 6. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS ndo se almacenen y se descomprimirán cuando se recuperen de la columna. Las columnas MEMO también pueden ser definidas de modo que almacenen datos en formato comprimido. No obstante, existe una restricción. Sólo se comprimirán las instancias de columnas MEMO que, tras la compresión, ocupen 4.096 bytes o menos. El resto de instancias de columnas MEMO quedarán sin comprimir. Esto significa que, dentro de una tabla determinada, para una columna MEMO dada, algunos datos pueden estar comprimidos y otros no. Fuente: Datos extraidos de la ayuda de Microsoft Access2000 Una restricción consiste en la definición de una característica adicional que tiene una columna o una combinación de columnas, suelen ser características como valores no nulos (campo requerido), definición de índice sin duplicados, definición de clave principal y definición de clave foránea (clave ajena o externa, campo que sirve para relacionar dos tablas entre sí). restricción1: una restricción de tipo 1 es una restricción que aparece dentro de la definición de la columna después del tipo de dato y afecta a una columna, la que se está definiendo. restricción2: una restricción de tipo 2 es una restricción que se define después de definir todas las columnas de la tabla y afecta a una columna o a una combinación de columnas. Para escribir una sentencia CREATE TABLE se empieza por indicar el nombre de la tabla que queremos crear y a continuación entre paréntesis indicamos separadas por comas las definiciones de cada columna de la tabla, la definición de una columna consta de su nombre, el tipo de dato que tiene y podemos añadir si queremos una serie de especificaciones que deberán cumplir los datos almacenados en la columna, después de definir cada una de las columnas que compone la tabla se pueden añadir una serie de restricciones, esas restricciones son las mismas que se pueden indicar para cada columna pero ahora pueden afectar a más de una columna por eso tienen una sintaxis ligeramente diferente.  Una restricción de tipo 1 se utiliza para indicar una característica de la columna que estamos definiendo, tiene la siguiente sintaxis: La cláusula NOT NULL indica que la columna no podrá contener un valor nulo,
  • 7. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS decir que se deberá rellenar obligatoriamente y con un valor válido (equivale a del campo). La cláusula CONSTRAINT sirve para definir una restricción que se podrá elim columna. A cada restricción se le asigna un nombre que se utiliza para identificar Como restricciones tenemos la de clave primaria (clave principal), la de índice la de clave foránea. La cláusula PRIMARY KEY se utiliza para definir la columna como clave princ no puede contener valores nulos ni pueden haber valores duplicados en esa col el mismo valor en esa columna. En una tabla no pueden haber varias claves principales, por lo que no podem una vez, en caso contrario la sentencia da un error. No hay que confundir la d definición de una clave principal compuesta por varias columnas, esto último sí de tipo 2. La cláusula UNIQUE sirve para definir un índice único sobre la columna. U valores duplicados, es decir que si una columna tiene definida un restricción d mismo valor en esa columna. Se suele emplear para que el sistema compruebe existen, por ejemplo si en una tabla de clientes queremos asegurarnos que dos tabla tiene como clave principal un código de cliente, definiremos la columna dni La cláusula NOT NULL indica que la columna no puede contener valores nulos no puede contener el valor nulo lo podemos hacer sin poner la cláusula CONSTRAINT. La última restricción que podemos definir sobre una columna es la de clave f conjunto de columnas que contiene un valor que hace referencia a una fila de otr definir con la cláusula REFERENCES, después de la palabra reservada opcionalmente podemos indicar entre paréntesis el nombre de la columna dond defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se en debemos inidicar el nombre de esta columna entre paréntesis, además sólo pod con una restricción de UNIQUE, si la columna2 que indicamos no está definid dará un error. Si quieres repasar conceptos de clave foránea e integridad referen Conceptos básicos de integridad referencial. La integridad referencial es un sistema de reglas que utilizan la mayoría asegurarse que los registros de tablas relacionadas son válidos y que no se bo accidental produciendo errores de integridad. Primero repasemos un poco los tipos de relaciones. Tipos de relaciones. Entre dos tablas de cualquier base de datos relacional pueden haber dos relaciones uno a muchos: Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relac y viceversa. Por ejemplo: tenemos dos tablas una de profesores y otra de departamento qué departamento, tenemos una relación uno a uno entre las dos tablas ya q profesor puede ser jefe de un solo departamento. Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria
  • 8. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS registro de la otra tabla (tabla principal) y un registro de la tabla principal pued tabla secundaria, en este caso se suele hacer referencia a la tabla principal com tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos fácil de recordar). Por ejemplo: tenemos dos tablas una con los datos de diferentes poblacion puede tener más de un habitante, pero un habitante pertenecerá (estará emp caso la tabla principal será la de poblaciones y la tabla secundaria será la de h habitantes pero un habitante pertenece a una sola población. Esta relación se columna que se corresponde con la clave principal de la tabla 'padre', esta co clave ajena o clave externa). Una clave foránea es pues un campo de una tabla que contiene una refere nuestro ejemplo en la tabla habitantes tenemos una columna población que con empadronado el habitante, esta columna es clave ajena de la tabla habitant columna codigo de poblacion clave principal de la tabla. Relación Varios a Varios: Cuando un registro de una tabla puede estar re tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas entre las dos que incluya los pares de valores relacionados entre sí. Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vend No se puede definir entre clientes y artículos, hace falta otra tabla (por ejem clientes y con artículos. La tabla pedidos estará relacionada con cliente por u relacionada con artículos por un relación uno a muchos. Integridad referencial Cuando se define una columna como clave foránea, las filas de la tabla pued nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería a está en la tabla de poblaciones. Eso es lo que se denomina integridad re referencian otros (claves foráneas) deben ser correctos. La integridad referenc datos se asegure de que no hayan en las claves foráneas valores que no estén La integridad referencial se activa en cuanto creamos una clave foránea y a vez que se modifiquen datos que puedan alterarla. ¿ Cuándo se pueden producir errores en los datos? Cuando insertamos una nueva fila en la tabla secundaria y el valor de la c
  • 9. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS insertamos un nuevo habitante y en la columna poblacion escribimos un códi poblaciones (una población que no existe). Cuando modificamos el valor de la clave principal de un registro que tiene sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes, no pueden seguir teniendo el codigo de población 1 porque la pob alternativas, no dejar cambiar el codigo de Valencia o bien cambiar el codig Valencia y asignarles el código 10. Cuando modificamos el valor de la clave foránea, el nuevo valor debe cambiamos la población de un habitante, tenía asignada la población 1 (porqu se le asigna la población 2 porque cambia de lugar de residencia. La población 2 Cuando queremos borrar una fila de la tabla principal y ese registro tie población 1 (Valencia) si existen habitantes asignados a la población 1, estos columna población porque tendrían asignada una población que no existe. En e borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor n Asociada a la integridad referencial están los conceptos de actualizar los r cascada. Actualización y borrado en cascada El actualizar y/o eliminar registros en cascada, son opciones que se definen indican al sistema gestor qué hacer en los casos comentados en el punto anterio Actualizar registros Esta opción le indica al sistema gestor de la base de datos que cuando se c principal, automáticamente cambiará el valor de la clave foránea de los reg Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el va clave principal), automáticamente se actualizan todos los habitantes (en la ta campo poblacion (en la clave ajena) dejando 10 en vez de 1. Si no se tiene definida esta opción, no se puede cambiar los valores de la caso, si intentamos cambiar el valor 1 del codigo de la tabla de poblaciones devuelve un error o un mensaje que los registros no se han podido modificar por Eliminar registros Esta opción le indica al sistema gestor de la base de datos que cuando s automáticamente se borran también los registros relacio Por ejemplo: Si borramos la población Onteniente en la tabla de poblaciones Onteniente se borrarán de la tabla de habitantes. Si no se tiene definida esta opción, no se pueden borrar registros de la tabla p en la tabla secundaria. En este caso, si intentamos borrar la población Ontenien devuelve un error o un mensaje que los registros no se han podido eliminar por Para seguir con la instrucción CREATE TABLE pasa a la siguiente página... Ejemplo: CREATE TABLE tab1 ( col1 INTEGER
  • 10. INTRODUCCION DEL LENGUAJE DE DEFINICIÓN DE DATOS CONSTRAINT pk PRIMARY KEY, col2 CHAR(25) NOT NULL, col3 CHAR(10) CONSTRAINT uni1 UNIQUE, col4 INTEGER, col5 INT CONSTRAINT fk5 REFERENCES tab2 ); Con este ejemplo estamos creando la tabla tab1 compuesta por: una columna llamada col1 de tipo entero definida como clave principal, una columna col2 que puede almacenar hasta 25 caracteres alfanuméricos y no puede contener valores nulos, una columna col3 de hasta 10 caracteres que no podrá contener valores repetidos, una columna col4 de tipo entero sin ninguna restricción, y una columna col5 de tipo entero clave foránea que hace referencia a valores de la clave principal de la tabla tab2.