SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Autor: Nicola Strappazzon C.
                 e-mail: nicola51980@gmail.com




                                                                         9
                 Blog: http://www.swapbytes.com/
                 Revisión: 17/11/11




 Lección
                                                   Tablas


Este material se encuentra basado en el curso de Fundamentos a SQL de ORACLE, el cual es adaptado para
el producto PostgreSQL, todos los ejemplos, códigos fuentes y la Base de Datos HR es propiedad de ORACLE.
Objetivos
    Al completar esta lección usted podrá entender los
    siguientes puntos:
    • Conocer la estructura de una tabla.
    • Listar los diversos tipos de datos.
    • Entender como funcionan las restricciones de los datos.
    • Mantener la integridad de los datos con las relaciones
      entre tablas.
    • Mejorar el tiempo de acceso a los datos mediante los
      Indices.




L- 2 -
   L
Las Tablas
   • Es un objeto que contiene datos de forma permanente.
   • Cada tabla es una entidad que agrupa conceptualmente
     una serie de datos en común y estos se encuentran
     segmentados en varias columnas.
   • Cada tabla tiene reglas que definen una serie de
     restricciones para evitar redundancia y mantener la
     integridad de los mismos.
   • Las tablas dependen entre ellas para mantener la
     relación de los datos.




L- 3-
   L
Definir nombres

   Los nombres de las tablas y las columnas deben
   respetar las siguientes reglas:
   • Deben empezar con letras.
   • Debe tener entre 1 y 63 caracteres.
   • Solamente se permiten los siguientes caracteres;
     0-9, a-z, A-Z, _ y $.
   • No se permiten nombres duplicados, solo en Case
     Sensitive.
   • Para mantener nombres en Case Sensitive debe
     colocarlos entre comillas dobles.



L- 4-
   L
Usando la cláusula CREATE TABLE

   Considere lo siguiente:

   •    Debe tener privilegios para crear tablas.
   •    Espacio en disco.
   •    Nombre de la tabla.
   •    Nombre de las columnas, tipo de dato a utilizar y su
        longitud.


   CREATE TABLE table_name ([
     column_name data_type [ DEFAULT expr ], ...
   ]);




L- 5-
   L
Tipo de Datos para números

         Nombre       Tamaño                           Rango
   smallint           2 bytes    -32768 hasta +32767

   integer            4 bytes    -2147483648 hasta +2147483647

   bigint             8 bytes    -9223372036854775808 hasta 9223372036854775807

   decimal            variable   No existe limite, definir la expresión exacta.

   numeric            variable   No existe limite, definir la expresión exacta.

   real               4 bytes    6 decimales

   double precision   8 bytes    15 decimales

   serial             4 bytes    1 hasta 2147483647

   bigserial          8 bytes    1 hasta 9223372036854775807




L- 6 -
   L
Tipo de Datos para carácteres

          Nombre               Descripción             Ejemplo       Resultado
   character(l)        Se define la longitud de       character(2)   VE
                       caracteres (l), completa con
                       espacios en blanco.

   character varing(l) Se define la longitud de       character      Caracas
                       caracteres (l), no completa    varing(10)
                       con espacios en blanco.

   text                De longitud ilimitada.         text           abcdefghijk
                                                                     lmnu...




L- 7 -
   L
Tipo de Datos para fechas

   Nombre      Tamaño          Descripción               Min.             Max.
   timestamp   8 bytes      Fecha y hora, permite   4713 AC           5874987 DC
                            la zona horaria.

   interval    12 bytes     Intervalo de tiempo,    -178000000 años   178000000 años
                            contempla cualquier
                            unidad.
   date        4 bytes      Solo fecha.             4713 AC           5874987 DC

   time        8-12 bytes   Solo hora, permite la   00:00:00+1359     24:00:00-1359
                            zona horaria.




L- 8 -
   L
Crear tablas
   •Crear una tabla:
   CREATE TABLE films (
       code        char(5),
       title       varchar(40),
       summary     text,
   );


   •Visualizar la estructura de la tabla desde psql:
   HR=# d films
                Table "public.films"
     Column   |         Type          | Modifiers
   -----------+-----------------------+-----------
    code      | character(5)          |
    title     | character varying(40) |
    summary   | text                  |
   HR=#

L- 9-
   L
Valores por defecto

     Agregar valores por defecto cuando son omitidos en su
     inserción.

     CREATE TABLE products (
         pk_product integer NOT NULL,
         name       text     NOT NULL,
         summary    text,
         price      numeric NOT NULL,
         discounted numeric DEFAULT 0 NOT NULL,
         company    integer NOT NULL
     );




L - 10 -
     L
Consultas de Ejemplo

     Insertamos un nuevo registro omitiendo las columnas
     summary y discounted, observando el valor 0 por defecto
     que es incorporado de forma automática.

     HR=# INSERT INTO products (pk_product, name, price, company)
     HR-# VALUES (1, 'DVD', 12, 1);
     INSERT 0 1
     HR=# SELECT * FROM products;
      pk_product | name | summary | price | discounted | company
     ------------+------+---------+-------+------------+---------
                1 | DVD |         |    12 |          0 |       1




L - 11 -
     L
Restricciones
     • Define reglas dentro de una tabla o en columnas.
     • Evita eliminar datos dentro de una tabla que tiene
       dependencias.
     • Se pueden aplicar mientras crea una tabla o después.
     • Existen los siguientes tipos de restricciones:
        – NOT NULL
        – UNIQUE
        – PRIMARY KEY
        – FORAIGN KEY
        – CHECK



L - 12 -
     L
Restricción NOT NULL

     Evita que una columna en especifico contenga valores de
     tipo NULL, en caso de que esta no contenga la restricción,
     se permite la inserción del valor NULL.

     CREATE TABLE films (
         code        char(5)     NOT NULL,
         title       varchar(40) NOT NULL,
         summary     text
     );




L - 13 -
     L
Restricción UNIQUE

     Restringe un grupo de columnas donde se requieren que
     sus valores siempre sean únicos, evitando que existan
     valores duplicados en dichas columnas.

     CREATE TABLE films (
         code        char(5)     NOT NULL,
         title       varchar(40) NOT NULL,
         summary     text,
         CONSTRAINT un_film UNIQUE (code, title)
     );




L - 14 -
     L
Restricción PRIMARY KEY

     Define una o mas columnas como clave primaria de la
     tabla, haciendo ésta única y permitir la relación de un
     registro con otra tabla para crear la dependencia.

     CREATE TABLE films (
         code        char(5)     NOT NULL,
         title       varchar(40) NOT NULL,
         summary     text,
         CONSTRAINT pk_film PRIMARY KEY (code)
     );




L - 15 -
     L
Restricción FORAING KEY

     Define una o mas columnas como clave primaria de la
     tabla, haciendo ésta única y permitir la relación de un
     registro con otra tabla para crear la dependencia.

     CREATE TABLE films (
         code        char(5)     NOT NULL,
         title       varchar(40) NOT NULL,
         summary     text,
         company     integer     NOT NULL,
         CONSTRAINT fk_company FOREIGN KEY (company)
         REFERENCES product (pk_product)
     );




L - 16 -
     L
Restricción CHECK

    Define una o varias condiciones que debe satisfacer a cada
    uno de los registro existentes de forma boleana.
    • No se permiten consultas.
    • Solo se utilizan operadores de condición y de conjunto.

     CREATE TABLE products (
         pk_product integer,
         name       text,
         price      numeric,
         discounted numeric,
         CONSTRAINT cn_price CHECK (price > 0 AND
                                    price > discounted)
     );



L - 17 -
     L
Código de Ejemplo

     CREATE TABLE companies (
         pk_company integer NOT NULL,
         name       text    NOT NULL,
         CONSTRAINT un_company UNIQUE (name),
         CONSTRAINT pk_company PRIMARY KEY (pk_company)
     );

     CREATE TABLE products (
         pk_product integer NOT NULL,
         fk_company integer NOT NULL,
         name       text     NOT NULL,
         summary    text,
         price      numeric NOT NULL,
         discounted numeric DEFAULT 0,
         CONSTRAINT un_product UNIQUE (name),
         CONSTRAINT ck_product CHECK (discounted > 0 AND price > discounted),
         CONSTRAINT pk_product PRIMARY KEY (pk_product),
         CONSTRAINT fk_company FOREIGN KEY (fk_company)
         REFERENCES companies (pk_company)
     );




L - 18 -
     L
Violando una restricción

     No existe el la clave primaria:


     HR=# INSERT INTO products (pk_product, fk_company, name, price, discounted)
     HR-# VALUES (1, 1, 'DVD', 10, 0.5);
     ERROR: insert or update on table "products" violates foreign key constraint
     "fk_company"
     DETAIL: Key (fk_company)=(1) is not present in table "companies".
     HR=#




No existe la clave primaria con el valor 1 en la tabla companies.




L - 19 -
     L
Violando una restricción

     No cumple con una restricción


     HR=# INSERT INTO products (pk_product, fk_company, name, price)
     HR-# VALUES (1, 1, 'DVD', 10);
     ERROR: new row for relation "products" violates check constraint
     "ck_product"
     HR=#




   Los datos a insertar no cumplen con la restricción ck_product.




L - 20 -
     L
Violando una restricción

     Visualizar la estructura de la tabla para identificar la
     restricción:
     HR=# d products
           Table "public.products"
        Column    | Type    | Modifiers
     ------------+---------+-----------
      pk_product | integer | not null
      fk_company | integer | not null
      name        | text    | not null
      summary     | text    |
      price       | numeric | not null
      discounted | numeric | default 0
     Indexes:
         "pk_product" PRIMARY KEY, btree (pk_product)
         "un_product" UNIQUE, btree (name)
     Check constraints:
         "ck_product" CHECK (discounted > 0::numeric AND price > discounted)
     Foreign-key constraints:
         "fk_company" FOREIGN KEY (fk_company) REFERENCES companies(pk_company)

     HR=#


L - 21 -
     L
Violando una restricción

     No puede actualizar o eliminar un registro por que una
     de las claves foráneas se encuentra relacionada con
     otra tabla.


     HR=# DELETE FROM companies WHERE pk_company = 1;
     ERROR: update or delete on table "companies" violates foreign key
     constraint "fk_company" on table "products"
     DETAIL: Key (pk_company)=(1) is still referenced from table "products".
     HR=#




     La clave foránea de valor 1 se encuentra en uso dentro de
     la tabla products.


L - 22 -
     L
Sentencia ALTER TABLE

     Modifica la estructura física de una tabla, contemplando:

     •     Columnas.
     •     Tipo de dato sobre una columna.
     •     Valores por defecto.
     •     Restricciones.
     •     Relaciones.
     •     Triggers.
     •     Usuario Dueño.
     •     Permisos.
     •     Comentarios.


L - 23 -
     L
Eliminar una tabla


     • Toda la data es eliminada.
     • Toda su estructura se elimina.
     • Todo tipo de restricción, relación, indices y triggers son
       eliminados.
     • No se puede hacer rollback una ves que la tabla se haya
       eliminado.

     HR=# DROP TABLE products;
     DROP TABLE




L - 24 -
     L
Orden de las culumnas

     Para mejorar el rendimiento levemente de las
     consultas, debe tener en cuenta el siguiente criterio
     para el orden mientras crea las columnas.
     •     Clave primarias.
     •     Columnas con la restricción de tipo único.
     •     Clave foráneas.
     •     Columnas obligatorias.
     •     Columnas no obligatorias.




L - 25 -
     L
Indices

     Estructura física de datos que permiten ubicar un
     determinado valor solicitado utilizando un metodo de
     acceso.
     • Son estructuras que no se encuentran alojadas dentro de
       una tabla pero dependen de ella.
     • Incrementa la velocidad de búsqueda.
     • Se definen por una o varias columnas en especifico
       donde son utilizadas para realizar una búsqueda.
     • El algoritmo definido por defecto es el B-Trees.
     • Se pueden ordenar los indices de forma ascendente o
       descendente y existe un tratamiento especial para los
       valores de tipo NULL.

L - 26 -
     L
Desventajas de los Indices



     • Consumen más espacio en disco.
     • El uso consecutivo de sentencias de tipo INSERT,
       UPDATE y/o DELETE disminuyen el rendimiento cuando
       existen indices, por lo que se requiere reconstruirlos
       periódicamente como una actividad de mantenimiento.
       Se utiliza el comando: reindexdb




L - 27 -
     L
Uso de los Indices

     Debe crean indices obligatoriamente en las siguientes
     columnas, las cuales son utilizadas constantemente:

     •     Claves primarias.
     •     Claves foráneas.
     •     Columnas que se utilizan con operadores lógicos.
     •     Campos de búsqueda.




L - 28 -
     L
Algoritmo B-Trees

     Existen muchos tipos, por defecto se considera que el
     algoritmo B-Trees, es suficiente debido a que puede
     manejar perfectamente las condiciones de igualdad.

     •     <
     •     <=
     •     =
     •     >=
     •     >




L - 29 -
     L
Parámetros básicos

     Adicionalmente el algoritmo se apoya de parámetros en
     su creación, con el fin de ampliar más su rendimiento.

       •   ASC: Ordena de forma ascendente (Por defecto).
       •   DESC: Ordena de forma descendente.
       •   NULL FIRST: Especifica que los valores de tipo NULL estarán de primero
           con los valores que no son de tipo NULL, este valor es asignado por
           defecto cuando se ordena de forma DESC.
       •   NULL LAST: Especifica que los valores de tipo NULL estarán de ultimo
           con los valores que no son de tipo NULL, este valor es asignado por
           defecto cuando se ordena de forma ASC.
       •   Unique: El sistema arroja un error al verificar si existen valores
           duplicados en la tabla cada vez que el indice es creado o actualizado.




L - 30 -
     L
Ejemplo

     Sintaxis básica:

     CREATE [ UNIQUE ] INDEX name ON table [ USING method ]
     ( column [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
     [, ...] )


     Ejemplos:
     CREATE UNIQUE INDEX title_idx ON films (title);


     CREATE INDEX title_idx_nulls ON films (title NULLS FIRST);




L - 31 -
     L
Resumen

     En esta lección, usted debió entender como:
     •     Crear, modificar y eliminar tablas.
     •     Visualizar la estructura de la tabla.
     •     Definir restricciones para el contenido de una tabla.
     •     Establecer la relación entre una o mas tablas.
     •     Incrementar la velocidad de acceso a los registros
           mediante los Indices.




L - 32 -
     L

Contenu connexe

Tendances

Nested Queries Lecture
Nested Queries LectureNested Queries Lecture
Nested Queries LectureFelipe Costa
 
Introducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosIntroducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosWilfredo Mogollón
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacionalLuis Jherry
 
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Sandesh Rao
 
SQL Tutorial - Basic Commands
SQL Tutorial - Basic CommandsSQL Tutorial - Basic Commands
SQL Tutorial - Basic Commands1keydata
 
10. XML in DBMS
10. XML in DBMS10. XML in DBMS
10. XML in DBMSkoolkampus
 
CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxMrKevinKR
 
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsYour tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsJohn Kanagaraj
 
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablasPostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablasNicola Strappazzon C.
 

Tendances (20)

Nested Queries Lecture
Nested Queries LectureNested Queries Lecture
Nested Queries Lecture
 
Sql and Sql commands
Sql and Sql commandsSql and Sql commands
Sql and Sql commands
 
advanced sql(database)
advanced sql(database)advanced sql(database)
advanced sql(database)
 
Oracle Database Sequence
Oracle Database SequenceOracle Database Sequence
Oracle Database Sequence
 
Reglas de Codd
Reglas de CoddReglas de Codd
Reglas de Codd
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Introducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosIntroducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a Objetos
 
Reglas de Produccion
Reglas de ProduccionReglas de Produccion
Reglas de Produccion
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
Troubleshooting Tips and Tricks for Database 19c - Sangam 2019
 
Mantenimiento ubuntu
Mantenimiento ubuntuMantenimiento ubuntu
Mantenimiento ubuntu
 
SQL Tutorial - Basic Commands
SQL Tutorial - Basic CommandsSQL Tutorial - Basic Commands
SQL Tutorial - Basic Commands
 
10. XML in DBMS
10. XML in DBMS10. XML in DBMS
10. XML in DBMS
 
CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptx
 
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsYour tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Aggregate function
Aggregate functionAggregate function
Aggregate function
 
set operators.pptx
set operators.pptxset operators.pptx
set operators.pptx
 
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablasPostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
 

Similaire à PostgreSQL - Lección 9 - Tablas

Creación de tablas en PostgreSQL
Creación de tablas en PostgreSQLCreación de tablas en PostgreSQL
Creación de tablas en PostgreSQLEddie Malca
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdfssuser78e8eb
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datosLuis Bando
 
Educación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar deEducación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar dedanie12angie
 
informacion sobre blog datos y sql
informacion sobre blog datos y sqlinformacion sobre blog datos y sql
informacion sobre blog datos y sqldanie12angie
 
Sesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxSesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxJohn McClane
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sqlfer951
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosvargasaldanajohanna
 

Similaire à PostgreSQL - Lección 9 - Tablas (20)

Creación de tablas en PostgreSQL
Creación de tablas en PostgreSQLCreación de tablas en PostgreSQL
Creación de tablas en PostgreSQL
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 
Lenguaje sql
Lenguaje sqlLenguaje sql
Lenguaje sql
 
DDL
DDLDDL
DDL
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
Educación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar deEducación para el desarrollo humano apartar de
Educación para el desarrollo humano apartar de
 
informacion sobre blog datos y sql
informacion sobre blog datos y sqlinformacion sobre blog datos y sql
informacion sobre blog datos y sql
 
Sesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxSesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptx
 
BD cap 5 SQL.pdf
BD cap 5  SQL.pdfBD cap 5  SQL.pdf
BD cap 5 SQL.pdf
 
Unidad 6 Lenguaje Sql
Unidad 6 Lenguaje SqlUnidad 6 Lenguaje Sql
Unidad 6 Lenguaje Sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
SQL
SQLSQL
SQL
 
Bases de datos sql
Bases de datos  sqlBases de datos  sql
Bases de datos sql
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Abd3 sql
Abd3 sqlAbd3 sql
Abd3 sql
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datos
 
1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones
 

Plus de Nicola Strappazzon C.

Alta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSAlta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSNicola Strappazzon C.
 
PostgreSQL - Lección 8 - Manipulando Datos y Transacciones
PostgreSQL - Lección 8 - Manipulando Datos y TransaccionesPostgreSQL - Lección 8 - Manipulando Datos y Transacciones
PostgreSQL - Lección 8 - Manipulando Datos y TransaccionesNicola Strappazzon C.
 
PostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasPostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasNicola Strappazzon C.
 
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datos
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datosPostgreSQL - Lección 4 - Usando funciones para manipular grupos de datos
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datosNicola Strappazzon C.
 
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...Nicola Strappazzon C.
 
PostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECTPostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECTNicola Strappazzon C.
 

Plus de Nicola Strappazzon C. (8)

MySQL Good Database Design
MySQL Good Database DesignMySQL Good Database Design
MySQL Good Database Design
 
Alta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSAlta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWS
 
PostgreSQL - Lección 10 - Vistas
PostgreSQL - Lección 10 - VistasPostgreSQL - Lección 10 - Vistas
PostgreSQL - Lección 10 - Vistas
 
PostgreSQL - Lección 8 - Manipulando Datos y Transacciones
PostgreSQL - Lección 8 - Manipulando Datos y TransaccionesPostgreSQL - Lección 8 - Manipulando Datos y Transacciones
PostgreSQL - Lección 8 - Manipulando Datos y Transacciones
 
PostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasPostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - Subconsultas
 
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datos
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datosPostgreSQL - Lección 4 - Usando funciones para manipular grupos de datos
PostgreSQL - Lección 4 - Usando funciones para manipular grupos de datos
 
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
 
PostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECTPostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECT
 

Dernier

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Dernier (10)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

PostgreSQL - Lección 9 - Tablas

  • 1. Autor: Nicola Strappazzon C. e-mail: nicola51980@gmail.com 9 Blog: http://www.swapbytes.com/ Revisión: 17/11/11 Lección Tablas Este material se encuentra basado en el curso de Fundamentos a SQL de ORACLE, el cual es adaptado para el producto PostgreSQL, todos los ejemplos, códigos fuentes y la Base de Datos HR es propiedad de ORACLE.
  • 2. Objetivos Al completar esta lección usted podrá entender los siguientes puntos: • Conocer la estructura de una tabla. • Listar los diversos tipos de datos. • Entender como funcionan las restricciones de los datos. • Mantener la integridad de los datos con las relaciones entre tablas. • Mejorar el tiempo de acceso a los datos mediante los Indices. L- 2 - L
  • 3. Las Tablas • Es un objeto que contiene datos de forma permanente. • Cada tabla es una entidad que agrupa conceptualmente una serie de datos en común y estos se encuentran segmentados en varias columnas. • Cada tabla tiene reglas que definen una serie de restricciones para evitar redundancia y mantener la integridad de los mismos. • Las tablas dependen entre ellas para mantener la relación de los datos. L- 3- L
  • 4. Definir nombres Los nombres de las tablas y las columnas deben respetar las siguientes reglas: • Deben empezar con letras. • Debe tener entre 1 y 63 caracteres. • Solamente se permiten los siguientes caracteres; 0-9, a-z, A-Z, _ y $. • No se permiten nombres duplicados, solo en Case Sensitive. • Para mantener nombres en Case Sensitive debe colocarlos entre comillas dobles. L- 4- L
  • 5. Usando la cláusula CREATE TABLE Considere lo siguiente: • Debe tener privilegios para crear tablas. • Espacio en disco. • Nombre de la tabla. • Nombre de las columnas, tipo de dato a utilizar y su longitud. CREATE TABLE table_name ([ column_name data_type [ DEFAULT expr ], ... ]); L- 5- L
  • 6. Tipo de Datos para números Nombre Tamaño Rango smallint 2 bytes -32768 hasta +32767 integer 4 bytes -2147483648 hasta +2147483647 bigint 8 bytes -9223372036854775808 hasta 9223372036854775807 decimal variable No existe limite, definir la expresión exacta. numeric variable No existe limite, definir la expresión exacta. real 4 bytes 6 decimales double precision 8 bytes 15 decimales serial 4 bytes 1 hasta 2147483647 bigserial 8 bytes 1 hasta 9223372036854775807 L- 6 - L
  • 7. Tipo de Datos para carácteres Nombre Descripción Ejemplo Resultado character(l) Se define la longitud de character(2) VE caracteres (l), completa con espacios en blanco. character varing(l) Se define la longitud de character Caracas caracteres (l), no completa varing(10) con espacios en blanco. text De longitud ilimitada. text abcdefghijk lmnu... L- 7 - L
  • 8. Tipo de Datos para fechas Nombre Tamaño Descripción Min. Max. timestamp 8 bytes Fecha y hora, permite 4713 AC 5874987 DC la zona horaria. interval 12 bytes Intervalo de tiempo, -178000000 años 178000000 años contempla cualquier unidad. date 4 bytes Solo fecha. 4713 AC 5874987 DC time 8-12 bytes Solo hora, permite la 00:00:00+1359 24:00:00-1359 zona horaria. L- 8 - L
  • 9. Crear tablas •Crear una tabla: CREATE TABLE films ( code char(5), title varchar(40), summary text, ); •Visualizar la estructura de la tabla desde psql: HR=# d films Table "public.films" Column | Type | Modifiers -----------+-----------------------+----------- code | character(5) | title | character varying(40) | summary | text | HR=# L- 9- L
  • 10. Valores por defecto Agregar valores por defecto cuando son omitidos en su inserción. CREATE TABLE products ( pk_product integer NOT NULL, name text NOT NULL, summary text, price numeric NOT NULL, discounted numeric DEFAULT 0 NOT NULL, company integer NOT NULL ); L - 10 - L
  • 11. Consultas de Ejemplo Insertamos un nuevo registro omitiendo las columnas summary y discounted, observando el valor 0 por defecto que es incorporado de forma automática. HR=# INSERT INTO products (pk_product, name, price, company) HR-# VALUES (1, 'DVD', 12, 1); INSERT 0 1 HR=# SELECT * FROM products; pk_product | name | summary | price | discounted | company ------------+------+---------+-------+------------+--------- 1 | DVD | | 12 | 0 | 1 L - 11 - L
  • 12. Restricciones • Define reglas dentro de una tabla o en columnas. • Evita eliminar datos dentro de una tabla que tiene dependencias. • Se pueden aplicar mientras crea una tabla o después. • Existen los siguientes tipos de restricciones: – NOT NULL – UNIQUE – PRIMARY KEY – FORAIGN KEY – CHECK L - 12 - L
  • 13. Restricción NOT NULL Evita que una columna en especifico contenga valores de tipo NULL, en caso de que esta no contenga la restricción, se permite la inserción del valor NULL. CREATE TABLE films ( code char(5) NOT NULL, title varchar(40) NOT NULL, summary text ); L - 13 - L
  • 14. Restricción UNIQUE Restringe un grupo de columnas donde se requieren que sus valores siempre sean únicos, evitando que existan valores duplicados en dichas columnas. CREATE TABLE films ( code char(5) NOT NULL, title varchar(40) NOT NULL, summary text, CONSTRAINT un_film UNIQUE (code, title) ); L - 14 - L
  • 15. Restricción PRIMARY KEY Define una o mas columnas como clave primaria de la tabla, haciendo ésta única y permitir la relación de un registro con otra tabla para crear la dependencia. CREATE TABLE films ( code char(5) NOT NULL, title varchar(40) NOT NULL, summary text, CONSTRAINT pk_film PRIMARY KEY (code) ); L - 15 - L
  • 16. Restricción FORAING KEY Define una o mas columnas como clave primaria de la tabla, haciendo ésta única y permitir la relación de un registro con otra tabla para crear la dependencia. CREATE TABLE films ( code char(5) NOT NULL, title varchar(40) NOT NULL, summary text, company integer NOT NULL, CONSTRAINT fk_company FOREIGN KEY (company) REFERENCES product (pk_product) ); L - 16 - L
  • 17. Restricción CHECK Define una o varias condiciones que debe satisfacer a cada uno de los registro existentes de forma boleana. • No se permiten consultas. • Solo se utilizan operadores de condición y de conjunto. CREATE TABLE products ( pk_product integer, name text, price numeric, discounted numeric, CONSTRAINT cn_price CHECK (price > 0 AND price > discounted) ); L - 17 - L
  • 18. Código de Ejemplo CREATE TABLE companies ( pk_company integer NOT NULL, name text NOT NULL, CONSTRAINT un_company UNIQUE (name), CONSTRAINT pk_company PRIMARY KEY (pk_company) ); CREATE TABLE products ( pk_product integer NOT NULL, fk_company integer NOT NULL, name text NOT NULL, summary text, price numeric NOT NULL, discounted numeric DEFAULT 0, CONSTRAINT un_product UNIQUE (name), CONSTRAINT ck_product CHECK (discounted > 0 AND price > discounted), CONSTRAINT pk_product PRIMARY KEY (pk_product), CONSTRAINT fk_company FOREIGN KEY (fk_company) REFERENCES companies (pk_company) ); L - 18 - L
  • 19. Violando una restricción No existe el la clave primaria: HR=# INSERT INTO products (pk_product, fk_company, name, price, discounted) HR-# VALUES (1, 1, 'DVD', 10, 0.5); ERROR: insert or update on table "products" violates foreign key constraint "fk_company" DETAIL: Key (fk_company)=(1) is not present in table "companies". HR=# No existe la clave primaria con el valor 1 en la tabla companies. L - 19 - L
  • 20. Violando una restricción No cumple con una restricción HR=# INSERT INTO products (pk_product, fk_company, name, price) HR-# VALUES (1, 1, 'DVD', 10); ERROR: new row for relation "products" violates check constraint "ck_product" HR=# Los datos a insertar no cumplen con la restricción ck_product. L - 20 - L
  • 21. Violando una restricción Visualizar la estructura de la tabla para identificar la restricción: HR=# d products Table "public.products" Column | Type | Modifiers ------------+---------+----------- pk_product | integer | not null fk_company | integer | not null name | text | not null summary | text | price | numeric | not null discounted | numeric | default 0 Indexes: "pk_product" PRIMARY KEY, btree (pk_product) "un_product" UNIQUE, btree (name) Check constraints: "ck_product" CHECK (discounted > 0::numeric AND price > discounted) Foreign-key constraints: "fk_company" FOREIGN KEY (fk_company) REFERENCES companies(pk_company) HR=# L - 21 - L
  • 22. Violando una restricción No puede actualizar o eliminar un registro por que una de las claves foráneas se encuentra relacionada con otra tabla. HR=# DELETE FROM companies WHERE pk_company = 1; ERROR: update or delete on table "companies" violates foreign key constraint "fk_company" on table "products" DETAIL: Key (pk_company)=(1) is still referenced from table "products". HR=# La clave foránea de valor 1 se encuentra en uso dentro de la tabla products. L - 22 - L
  • 23. Sentencia ALTER TABLE Modifica la estructura física de una tabla, contemplando: • Columnas. • Tipo de dato sobre una columna. • Valores por defecto. • Restricciones. • Relaciones. • Triggers. • Usuario Dueño. • Permisos. • Comentarios. L - 23 - L
  • 24. Eliminar una tabla • Toda la data es eliminada. • Toda su estructura se elimina. • Todo tipo de restricción, relación, indices y triggers son eliminados. • No se puede hacer rollback una ves que la tabla se haya eliminado. HR=# DROP TABLE products; DROP TABLE L - 24 - L
  • 25. Orden de las culumnas Para mejorar el rendimiento levemente de las consultas, debe tener en cuenta el siguiente criterio para el orden mientras crea las columnas. • Clave primarias. • Columnas con la restricción de tipo único. • Clave foráneas. • Columnas obligatorias. • Columnas no obligatorias. L - 25 - L
  • 26. Indices Estructura física de datos que permiten ubicar un determinado valor solicitado utilizando un metodo de acceso. • Son estructuras que no se encuentran alojadas dentro de una tabla pero dependen de ella. • Incrementa la velocidad de búsqueda. • Se definen por una o varias columnas en especifico donde son utilizadas para realizar una búsqueda. • El algoritmo definido por defecto es el B-Trees. • Se pueden ordenar los indices de forma ascendente o descendente y existe un tratamiento especial para los valores de tipo NULL. L - 26 - L
  • 27. Desventajas de los Indices • Consumen más espacio en disco. • El uso consecutivo de sentencias de tipo INSERT, UPDATE y/o DELETE disminuyen el rendimiento cuando existen indices, por lo que se requiere reconstruirlos periódicamente como una actividad de mantenimiento. Se utiliza el comando: reindexdb L - 27 - L
  • 28. Uso de los Indices Debe crean indices obligatoriamente en las siguientes columnas, las cuales son utilizadas constantemente: • Claves primarias. • Claves foráneas. • Columnas que se utilizan con operadores lógicos. • Campos de búsqueda. L - 28 - L
  • 29. Algoritmo B-Trees Existen muchos tipos, por defecto se considera que el algoritmo B-Trees, es suficiente debido a que puede manejar perfectamente las condiciones de igualdad. • < • <= • = • >= • > L - 29 - L
  • 30. Parámetros básicos Adicionalmente el algoritmo se apoya de parámetros en su creación, con el fin de ampliar más su rendimiento. • ASC: Ordena de forma ascendente (Por defecto). • DESC: Ordena de forma descendente. • NULL FIRST: Especifica que los valores de tipo NULL estarán de primero con los valores que no son de tipo NULL, este valor es asignado por defecto cuando se ordena de forma DESC. • NULL LAST: Especifica que los valores de tipo NULL estarán de ultimo con los valores que no son de tipo NULL, este valor es asignado por defecto cuando se ordena de forma ASC. • Unique: El sistema arroja un error al verificar si existen valores duplicados en la tabla cada vez que el indice es creado o actualizado. L - 30 - L
  • 31. Ejemplo Sintaxis básica: CREATE [ UNIQUE ] INDEX name ON table [ USING method ] ( column [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) Ejemplos: CREATE UNIQUE INDEX title_idx ON films (title); CREATE INDEX title_idx_nulls ON films (title NULLS FIRST); L - 31 - L
  • 32. Resumen En esta lección, usted debió entender como: • Crear, modificar y eliminar tablas. • Visualizar la estructura de la tabla. • Definir restricciones para el contenido de una tabla. • Establecer la relación entre una o mas tablas. • Incrementar la velocidad de acceso a los registros mediante los Indices. L - 32 - L