Documente Academic
Documente Profesional
Documente Cultură
4.1
char(n). Cadena de longitud fija. La longitud es n caracteres. varchar(n). Cadena de longitud variable. La longitud mxima es n
caracteres. (text) int/integer. Entero. smallint. Entero corto. numeric(p,d). Numero en formato de coma fija, con precisin de p dgitos, con d dgitos a la derecha de la coma decimal. (1-> 0.9999) real, double precision. numero en coma flotante y nmero en coma flotante con doble precisin. float(n). Nmero en coma flotante con una precisin no menor de n dgitos. El valor NULL esta permitido para todos los atributos a menos que se prohba explcitamente. not null prohbe el uso del valor NULL. La construccin create domain en SQL-92 crea tipos de datos definidos por el usuario
create domain nombre-persona char(20) not null (typedef in C)
4.2
Ejemplo de Dominio
create or replace function
domain_username_constraint_check (text) returns boolean as ' select case when (length($1) >= 6) then true else false end ;
hacer
time 09:00:30.75
E.j. Interval 1 day la diferencia entre date/time/timestamp da un interval Interval se puede sumar a date/time/timestamp
Se pueden extraer valores independientes de
date/time/timestamp
4.4
Creacin de Tablas
ejemplo
Para crear una tabla se usa la orden CREATE TABLE. Es necesario especificar (al menos) el nombre de la tabla, los nombres de las columnas y el tipo de dato. Por ejemplo:
-- que tal
4.5
Destruccin de Tablas
Cuando las tablas no sean necesarias se pueden borrar con la orden DROP TABLE. Por ejemplo:
4.6
base de datos. Los nombres de estas columnas auxiliares no se pueden usar como nombres de las columnas definidas por el usuario. oid tableoid xmin cmin xmax cmax ctid
4.7
ejemplo
Cuando se crea la tupla si no se le asigna ningn valor a a alguna de las columnas est coger su valor por defecto. (si no se declara explcitamente el valor por defecto es NULL)
A la hora de definir la tabla los valores por defecto van tras la
declaracin de la columna. Esto es: CREATE TABLE productos ( producto_no integer PRIMARY KEY, nombre text, --soy un comentario precio numeric(10,2) DEFAULT 9.99
);
4.8
ejemplo
producto_no integer PRIMARY KEY DEFAULT nextval('producto_no_seq'), nombre text, precio numeric(10,2) DEFAULT 9.99 );
4.9
Restricciones
Check, Restriccion arbitraria Not-Null, El atributo no acepta valores nulos Unique, El atributo no acepta valores repetidos
4.10
CHECK
ejemplo
satisfacer una expresin. Por ejemplo ser positivo. CREATE TABLE productos ( producto_no integer, nombre text, precio numeric(10.2) CHECK (precio > 0) );
La restriccin debe definirse DESPUES del tipo de dato. Se
4.11
CHECK
ejemplo
satisfacer una expresin. Por ejemplo ser positivo. CREATE TABLE productos ( producto_no integer, nombre text, precio numeric(10,2) CONSTRAINT precio_positivo CHECK (precio > 0) );
CONSTRAINT nombre_ligadura puede usarse con las otras
restricciones
4.12
CHECK
Las restricciones pueden involucrar varias columnas pero no varias tablas. CREATE TABLE productos ( producto_no integer, nombre text, precio numeric CHECK (price > 0), precio_rebajado numeric CHECK
4.13
CHECK, Advertencia
4.14
NOT NULL
ejemplo
producto_no
precio );
4.15
NOT NULL
Pueden existir varias restricciones referidas al mismo atributo, el
order no importa. CREATE TABLE productos ( producto_no integer NOT NULL, nombre text NOT NULL, precio numeric(10,2) NOT NULL CHECK (precio
> 0)
);
4.16
UNIQUE
ejemplo
Asegura que un determinado valor no esta repetido en una columna. CREATE TABLE productos ( producto_no integer UNIQUE, nombre text, precio numeric(10,2)
);
4.17
UNIQUE
ejemplo
producto_no integer,
nombre text, precio numeric, UNIQUE(producto_no,nombre) );
Pregunta: producto_no y nombre deben ser nicos o la
4.18
UNIQUE
ejemplo
precio numeric(10.2),
UNIQUE(producto_no,nombre) );
4.19
UNIQUE vs CHECK
CREATE TABLE example ( a integer, b integer, c integer, UNIQUE (a, c) ); ); CREATE TABLE example ( a integer, b integer, c integer, CHECK (a > 0 AND b > 0)
4.20
Clave Primaria
CREATE TABLE productos (
ejemplo
producto_no integer PRIMARY KEY, nombre text, precio numeric ); CREATE TABLE ejemplo (
a integer,
b integer, c integer, PRIMARY KEY (a, c)
);
4.21
ejemplo
a integer,
b integer, c integer, PRIMARY KEY (a, c)
);
4.22
Pregunta:
4.23
Clave Extranjera
ejemplo,trigger
La restriccion REFERENCES asegura que los valores de una determinada columna debe ser identicos a los valores que aparecen en otra determinada columna que puede estar en otra tabla
CREATE TABLE productos ( producto_no integer PRIMARY KEY, nombre text, precio numeric); CREATE TABLE pedidos ( pedido_no integer PRIMARY KEY, producto_no integer REFERENCES productos (producto_no), cantida integer);
existan
4.24
ejemplo
4.25
Triggers
template1,plpgsql-sql
CREATE TABLE tomate( tomate_no int PRIMARY KEY, color char(10), modificadoen timestamp);
DROP FUNCTION modificacion(); CREATE FUNCTION modificacion() RETURNS TRIGGER AS ' BEGIN NEW.modificadoen := ''now''; RETURN NEW; END;'LANGUAGE 'plpgsql' WITH (isstrict);
DROP TRIGGER t_modificacion on tomate; CREATE TRIGGER t_modificacion BEFORE INSERT ON tomate FOR EACH ROW EXECUTE PROCEDURE modificacion();
4.26
Clave Extranjera
Qu pasa si se borra el producto_no en la tabla
productos? CREATE TABLE productos ( producto_no integer PRIMARY KEY, nombre text, precio numeric); CREATE TABLE pedidos ( pedido_no integer PRIMARY KEY, producto_no integer REFERENCES productos (producto_no),
cantida integer);
Qu pasa si se borra/cambia el producto_no en la tabla
productos?
4.27
INSERT into
4.28
Clave Extranjera
CREATE TABLE productos ( producto_no integer PRIMARY KEY, nombre text, precio numeric);
ejemplo
CREATE TABLE pedidos ( pedido_no integer PRIMARY KEY, producto_no integer REFERENCES productos (producto_no), cantida integer); CREATE TABLE producto_pedido ( producto_no integer REFERENCES productos ON DELETE RESTRICT, pedido_no integer REFERENCES pedidos ON DELETE CASCADE, cantidad integer, PRIMARY KEY (producto_no, pedido_no) ); According to the SQL standard, specifying either RESTRICT or CASCADE is required. No database system actually implements it that way, but whether the 4.29 default behavior is RESTRICT or CASCADE varies across systems.
CREATE TABLE producto_pedido ( producto_no integer REFERENCES productos, pedido_id integer REFERENCES orders, cantidad integer, PRIMARY KEY (producto_no, pedido_id)
);
Importante, una clave extranjera no puede ser clave extranjera
4.30
ejemplo
aadir atributos a una relacin. alter table productos add column A integer El valor inicial de los atributos es NULL (a menos que se especifique un valor por defecto).
La orden alter table se puede usar para borrar atributos de
4.31
UNIQUE (producto_no);
ALTER TABLE productos ADD FOREIGN KEY
DEFAULT 7.77;
ALTER TABLE products RENAME COLUMN product_no TO
product_number;
4.32
Herencia ejemplo
Una tabla puede estar basada en otra (ISA)
CREATE TABLE ciudades ( nombre poblacion altura ); char(30), float, int -en metros
4.33
Etc
Las tablas son los objeto centrales en una base de datos pero
4.34
Ejemplo Banco
Ejemplo Banco I
sucursal (nombre-sucursal, ciudad-sucursal, capital) cliente (nombre-cliente, calle-cliente, ciudad-cliente)
4.36
Ejemplo Banco II
CREATE TABLE sucursal( nombre-sucursal char(30), ciudad-sucursal char(30), capital char(30), PRIMARY KEY (nombre-sucursal) ) CREATE TABLE cliente( nombre-cliente char(30), calle-cliente char(30), ciudad-cliente char(30), PRIMARY KEY (nombre-cliente ) )
error/ejemplo
CREATE TABLE cuenta( numero-cuenta numeric(25), nombre-sucursal char(30), saldo numeric(15,2) NOT NULL, PRIMARY KEY (numero-cuenta ) ) CREATE TABLE prestamo ( numero-prestamo numeric(25), nombre-sucursal char(30), cantidad numeric (15,2) NOT NULL, PRIMARY KEY (numero-cuenta ) )
a todo?
estas ordenes:
; - vs. _ numero_cuenta
4.37
);
4.38
ltima pregunta
CREATE TABLE i1 (i int, I int); CREATE TABLE i2 ('i' int, 'I' int); CREATE TABLE i3("i" int, "I" int);
comentar pgaccess
4.39
FIN