4.1 SQL-Data Definition Language (DDL) SQL-Data Definition Language (DDL) Lenguaje de Definición de Datos Lenguaje de Definición de Datos Esquema de cada relación. Dominios de cada atributo. Restricciones de integridad. Restricciones de seguridad para cada relación.
40
Embed
SQL-Data Definition Language (DDL) Lenguaje de Definición de Datos
SQL-Data Definition Language (DDL) Lenguaje de Definición de Datos. Esquema de cada relación. Dominios de cada atributo. Restricciones de integridad. Restricciones de seguridad para cada relación. Tipos de Datos en SQL (volveremos sobre ellos). - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
4.1
SQL-Data Definition Language (DDL)SQL-Data Definition Language (DDL)Lenguaje de Definición de DatosLenguaje de Definición de Datos
Esquema de cada relación.
Dominios de cada atributo.
Restricciones de integridad.
Restricciones de seguridad para cada relación.
4.2
Tipos de Datos en SQLTipos de Datos en SQL(volveremos sobre ellos)(volveremos sobre ellos)
char(n). Cadena de longitud fija. La longitud es n caracteres. varchar(n). Cadena de longitud variable. La longitud máxima es n
caracteres. (text) int/integer. Entero. smallint. Entero corto. numeric(p,d). Numero en formato de coma fija, con precisión de p dígitos,
con d dígitos a la derecha de la coma decimal. (1-> 0.9999) real, double precision. numero en coma flotante y número en coma
flotante con doble precisión. float(n). Número en coma flotante con una precisión no menor de n
dígitos. El valor NULL esta permitido para todos los atributos a menos que se
prohíba explícitamente. not null prohíbe el uso del valor NULL. La construcción create domain en SQL-92 crea tipos de datos definidos
por el usuariocreate domain nombre-persona char(20) not null
(typedef in C)
4.3
Ejemplo de DominioEjemplo de Dominiohacerhacer
--drop function domain_username_constraint_check(text) ;
create or replace function
domain_username_constraint_check (text)
returns boolean as '
select
case
when (length($1) >= 6) then true
else false
end
;
' language 'sql';
--drop domain username;
create domain username as text
check (domain_username_constraint_check(value));
create TABLE midominio2( nombre username);
--version equivalente
create TABLE midominio2( nombre text check (length(nombre) >= 6));
4.4
Día y Hora en SQL (Cont.)Día y Hora en SQL (Cont.)practica fecha creacionpractica fecha creacion
date. Fecha (día del año), año (4 dígitos), mes y dia Ej. date ‘2001-7-27’
time. hora del día, en horas, minutos y segundos. E.j. time ’09:00:30’ time ’09:00:30.75’
timestamp: día y hora E.j. timestamp ‘2001-7-27 09:00:30.75’
Interval: periodo de tiempo 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” E.j. extract (year from r.comienzo)
4.5
Creación de Tablas Creación de Tablas ejemploejemplo
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:
CREATE TABLE tablita (
nombre1 char(20), -- hola
nombre2 integer -- que tal
);
Este comando crea una tabla llamada tablita con dos columnas llamadas nombre1 y nombre2.
4.6
Destrucción de TablasDestrucción de Tablas
Cuando las tablas no sean necesarias se pueden borrar con la orden DROP TABLE. Por ejemplo:
DROP TABLE tablita;
Todos los comandos CREATE tienen una pareja DROP
4.7
Columnas Auxiliares Creadas por PostgeSQL Columnas Auxiliares Creadas por PostgeSQL ejemplo, pgaccesejemplo, pgacces
Cada tabla tienen varias columnas definidas por la 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.8
Valores por Defecto Valores por Defecto ejemploejemplo
Se le puede asignar un valor por defecto a una columna. Cuando se crea la tupla si no se le asigna ningún valor a a alguna de las columnas está cogerá su valor por defecto. (si no se declara explícitamente el valor por defecto es NULL)
A la hora de definir la tabla los valores por defecto van tras la declaración 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.9
Valores por Defecto Valores por Defecto ejemploejemplo
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 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 INSERTON tomateFOR EACH ROW EXECUTE PROCEDURE modificacion();
4.27
Clave ExtranjeraClave 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.28
Poblar las tablas anterioresPoblar las tablas anteriores