SENTENCIAS DDL Y DML POSTGRES
SENTENCIAS DDL
SENTENCIAS DDL El Lenguaje de Definición de Datos (Data Definition Language – DDL), sirve para modificar la estructura de los objetos en una base de datos. Estas sentencias básicamente son: CREATE, ALTER, DROP y TRUNCATE. A continuación iniciaremos con la creación de una base de datos.
Creación de base de datos (DATABASE): (DATABASE): Sintaxis: CREATE DATABASE name [ WITH LOCATION = ‘dbpath’ ]
Ejemplo: CREATE DATABASE bddPedidos TEMPLATE template0; t emplate0; Con la línea CREATE DATABASE bddPedidos DATABASE bddPedidos TEMPLATE template0; , se crea una tabla a partir de una plantilla que trae postgres llamada template0, el cual nos crea la base de datos totalmente vacía.
Creación de esquemas (SCHEMAS): Los esquemas son importantes para agrupar objetos según especificaciones, y al mantener organizado la base de datos permite un mejor desempeño al momento de la administración. administración. Si no se le asigna un esquema al objeto, postgres lo asignará implícitamente al esquema “public“. “public“. Para definir que un objeto pertenezca a un esquema se pone el nombre del esquema seguido por un ponto y el nombre del objeto. CREATE SCHEMA Persona; CREATE SCHEMA Admision;
Creación de secuencias (SEQUENCE): CREATE SEQUENCE Persona.seq_idcontacto START 1; --empieza desde 1 CREATE SEQUENCE Admision.seq_idmodalidad START 1; --empieza desde 1
Creación de tablas (TABLES): Sintaxis: CREATE [ TEMPORARY | TEMP ] TABLE table ( column type [ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ] [column_constraint_clause [column_constraint_clause | PRIMARY KEY } [ ... ] ] [, ... ] [, PRIMARY KEY ( column [, ...] ) ] [, CHECK ( condition ) ] [, table_constraint_clause table_constraint_clause ] ) [ INHERITS ( inherited_table [, ...] ) ] create table prueba (FechaCreacion date not null default now) Con “FechaCreacion date not null default now(),” now(),” asignaremos la fecha actual por defecto al campo FechaCreacion por medio de la función now(). now().
Creación de restricciones (CHECK): Los valores dentro de CHECK , por ejemplo “CHECK (Genero in ( ‘1’,’2’, ‘1’,’2’, ‘3’, ‘4’,) )”, son los únicos que serán permitidos insertar en el campo establecido, en este caso se le asigna esa restricción al campo Genero.
Ejemplo: ALTER TABLE Empleados ADD CONSTRAINT ck_Reporta CHECK (reporta_a in (‘1’,’2’, ‘3’, ‘4’,)) ;
Creación de restricciones (UNIQUE): Las restricciones UNIQUE, por ejemplo “UNIQUE( nombreprov nombreprov )” , aseguran que en los datos en la misma columna, en este caso en el campo nombreprov , no sean repetidas, ya que no puede haber registradas 2 nombres de proveedores con el mismo nombre.
Sintaxis: CREATE [ UNIQUE ] INDEX nombre_indice ON tabla [ USING nombre_acceso ]( columna [nombre_operador][, ...] )
Ejemplo: ALTER TABLE Proveedores ADD CONSTRAINT uq_nombreprov UNIQUE(nombreprov)
Creación de claves primarias (PRIMARY KEYS): Las claves primarias, aparte de prevenir la duplicidad dup licidad de datos, y servir como nexo para relacionarse con otras tablas, tiene otro fin también importante, que es agilizar el proceso de búsqueda, no por el hecho de ser primary key, sino que al momento de la creación de una clave primaria se crea implícitamente un indice (index) .
Sintaxis: [ CONSTRAINT name ] { [ NULL | NOT NULL ] | PRIMARY KEY } [, ...]
Ejemplo: ALTER TABLE Proveedores ADD CONSTRAINT pk_Proveedorid pk_Proveedorid PRIMARY KEY(Proveedorid) ;
Creación de claves foráneas (FOREIGN KEYS): Las claves foráneas son campos que servirán para la relación entre 2 tablas, la clave primaria de otra tabla se relacionará con la clave foránea de ésta.
Ejemplo: ALTER TABLE Productos ADD CONSTRAINT fk_ Proveedorid FOREIGN KEY(Proveedorid) KEY(Proveedorid) references Proveedores (Proveedorid)
SENTENCIAS DDL
SENTENCIAS DML El lenguaje de Manipulación de Datos (Data Manipulation Language – DML) sirve para llevar a cabo las transacciones en las base de datos, entiéndase por transacciones los procesos de inserción, actualización, eliminación, selección. Para mayor explicación se expone los siguientes ejemplos usando la base de datos PEDIDOS:
Listar datos de Clientes Sintaxis: SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] expression [ AS name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM table [ alias ] [, ...] ] [ WHERE condition ] [ GROUP BY column [, ...] ] [ HAVING condition [, ...] ] [ { UNION [ ALL ] | INTERSECT | EXCEPT } select ] [ ORDER BY column [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF class_name [, ...] ] ] LIMIT { count | ALL } [ { OFFSET | , } start ]
Ejemplo: Select * from clientes ; --Se lista todos los elementos de una tabla Select Clienteid, nombrecia,celular from clientes --Se lista ciertos campos de una tabla
Insertar datos en Clientes Sintaxis: INSERT INTO table [ ( column [, ...] ) ] { VALUES ( expression [, ...] ) | SELECT query }
Ejemplo: INSERT INTO CLIENTES
VALUES(10,’183445667’,’YARBANTRELLA’,’PABLOPOLIT’,’AV.REPUBL ICA’, NULL,NULL,NULL,NULL); SELECT * FROM clientes; --Comprobar - -Comprobar Inserción
Actualizar datos en Clientes Sintaxis: UPDATE tabla SET columna = expresion [, ...] [ FROM lista ] [ WHERE condicion ]
Ejemplo: UPDATE clientes set direccioncli =’AV. PATRIA ‘ WHERE clienteid =1; SELECT * FROM clientes; --Comprobar - -Comprobar Actualización
Eliminar datos en Clientes Sintaxis: DELETE FROM table [ WHERE condition ]
Ejemplo: DELETE FROM Clientes WHERE clienteid =’1’; SELECT * FROM clientes; --Comprobar - -Comprobar Eliminación
TIPO DE DATOS
Como todos los manejadores de bases de datos, PostgreSQL implementa los tipos de datos definidos para el estándar SQL3 y aumenta algunos otros. Los definidos por el estándar SQL3 son los siguientes:
Los tipos de datos extendidos en PostgreSQL son:
Tipos de datos definidos por PostgreSQL: