Sql DDL Lenguaje de definición de datos

16,467 views

Published on

Published in: Education
3 Comments
16 Likes
Statistics
Notes
No Downloads
Views
Total views
16,467
On SlideShare
0
From Embeds
0
Number of Embeds
168
Actions
Shares
0
Downloads
1
Comments
3
Likes
16
Embeds 0
No embeds

No notes for slide

Sql DDL Lenguaje de definición de datos

  1. 1. SQL DDL http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Data Definition Language http://en.wikipedia.org/wiki/Data_Definition_Language JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  2. 2. Definamos los términos: • Esquemas= describe una relación=descripción de la estructura http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ de datos • Fila = Registro = Tupla http://es.wikipedia.org/wiki/Tupla o http://en.wikipedia.org/wiki/Tuple • Tabla = Relación=Instancia=estructura de datos con datos incluidos en un tiempo determinado. http://en.wikipedia.org/wiki/Relation_(database) • Atributos =Nombre de columnas=cabeceras http://en.wikipedia.org/wiki/Column_(database) • Dominio = Conjunto de valores permitidos. Matemáticamente, definir un dominio a un atributo es; cualquier valor del atributo debe ser un elemento del conjunto especificado. Tipo de datos(cadenas,enteros,fechas,binarios entre otros) Rango de datos, Formato de datos http://en.wikipedia.org/wiki/Data_domain JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  3. 3. Que es SQL y para que sirven: • “S.Q.L.” o “sequel” http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ • Soportado por la mayoría de base de datos comerciales • estandarizado – nuevas carateristicas son adicionadas con el Tiempo • Interactivo via GUI o prompt(linea de comandos), o embedidos en los programas. • Declarativo, basado en el algebra relacional. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  4. 4. SQL:DDL (Lenguaje de definición de datos) • DDL: Lenguaje de Definición de Datos http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ • Permite crear objetos en la Base de Datos • son las sentencias que afectan a la estructura de los datos. Tipos de Objetos: - Tablas - Índices - Vistas - Otros JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  5. 5. SENTECIAS DLL Se pueden crear tablas con la instrucción http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ CREATE TABLE nombre_tabla ( atributos: cada uno con su tipo de datos y restricciones ); Se pueden crear índices: CREATE INDEX nombreindice ON tabla(columna(s)); Las vistas no son más que “consultas con nombres” Ejemplo: CREATE VIEW nombre_vista AS consulta; JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  6. 6. Lenguaje de definición de datos (LDD) Comando CREATE DATABASES– define una nueva base de datos. http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Sintaxis Posgresql CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] Lugar donde se almacena los archivos en disco [ CONNECTION LIMIT [=] connlimit ] ] WITH OWNER –Define propietario de la base de datos. TEMPLATE -- Define y copia los objetos estructuras de una base de datos de referencia . ENCODING – Es la codificación de cómo se almacenan los caracteres en la base de datos •No se puede cambiar el encode a una Base de Datos existente(Respaldar y volverla a crear) •Codificar la Base de Datos en UTF-8 por que este tipo de codificación permite cualquier tipo de carácter. •http://es.wikipedia.org/wiki/Codificaci%C3%B3n_de_caracteres. LC_COLLAT– (Intercalación ) se refiere a las reglas utilizadas para ordenar y comparar caracteres. Evidentemente, se trata de un concepto que afecta sólo a los campos de texto. LC_CTYPE - Especifica una colección de nombres de tabla de las cuales esta tabla hereda todos los campos. CONNECTION LIMIT– Permite hasta un numero determinado de conexciones. Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  7. 7. Lenguaje de definición de datos (LDD) Comando CREATE TABLE – define una nueva tabla. http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Sintaxis Posgresql CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [ { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ] | table_constraint | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ]) [ INHERITS ( parent_table [, ... ] ) ] [ WITH OIDS | WITHOUT OIDS ] números seriales sirven como identificador de [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] (usada en tablas temporales) tabla vaciarse de registros cada vez que se ejecuta un COMMIT [ TABLESPACE tablespace ] TEMP--Cuando se utiliza esta clausula se crean tablas temporales. Estas tablas se usan para almacenar datos que seran usados posteriormente, guardar resultados parciales, analizar grandes cantidades de filas. DEFAULT-- Un valor por defecto para el campo. table_constraint o column_constraint -- Las cláusulas opcional de restricciones (CONSTRAINT) especifica una lista de restricciones de integridad que las nuevas inserciones o las actualizaciones deberán satisfacer para que una sentencia insert o update se puedan realizar. INHERITS -- Especifica una colección de nombres de tabla de las cuales esta tabla hereda todos los campos. TABLESPACE– Define el lugar , en el sistema de archivos, donde los archivos de la tabla se almacenan en disco. Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  8. 8. Sea el modelo: el jefe de http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ adscrito a el subordinado de el lugar de trabajo de Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  9. 9. CREATE TABLE departamento ( codigo INTEGER PRIMARY KEY, nombre VARCHAR(6) NOT NULL UNIQUE, ciudad VARCHAR(12) CHECK (ciudad IN (Medellín, Bogotá, Cali)) NOT NULL http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ ); El atributo ciudad sólo admitirá 1 de estas 3 ciudades. Es necesario además colocarle la restricción de no nulidad. CREATE TABLE empleado ( documento INTEGER PRIMARY KEY, nombre VARCHAR(30) NOT NULL, jefe INTEGER REFERENCES empleado, salario INTEGER NOT NULL, Clave foránea comisión INTEGER , sobre la cargo VARCHAR(20) NOT NULL, misma tabla depto INTEGER NOT NULL REFERENCES departamento ); Clave foránea JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  10. 10. Apliquemos SQL Modificaciones– ALTER TABLE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ • Se puede modificar la estructura de una tabla con la instrucción ALTER TABLE ALTER TABLE nombre_tabla ADD nuevocampo TIPO_DE_DATO; • Para eliminar una columna de la tabla ALTER TABLE nombre_tabla DROP COLUMN campo; • Para eliminar una tabla (estructura y datos) – DROP TABLE nombre_tabla; JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  11. 11. Apliquemos SQL Modificaciones– ALTER TABLE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo CREATE TABLE productos ( id_producto integer, nombre text, precio integer ); ALTER TABLE productos ADD COLUMN descripcion text CHECK (description <> ); • Para eliminar una columna ALTER TABLE productos DROP COLUMN descripcion; • Para eliminar una tabla (estructura y datos) DROP TABLE productos; JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  12. 12. Restricciones de Integridad Las Restricciones automáticamente fuerzan las integridad de datos. http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ • las restricciones definen reglas que determinan los valores permitidos en una columna. • Aseguran que los cambios realizados a una BD no generen inconsistencia en la información. • Esto permite restringir los valores que se pueden insertar en una columna, de modo que no se acepten los valores no válidos. Existen dos tipos de restricciones generales:  Restricciones de Columna: sólo restringe los valores de la columna.  Restricción de tablas: restricciones que afectan a mas de una columna de la tabla; asegurando que la combinación de los valores para las columnas implicadas cumplan los requerimientos de la restricción. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  13. 13. Restricciones de Integridad • Restricciones aplicadas a las generales http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ – Restricciones de dominio: Especifica que el valor de cada atributo A debe ser un valor atómico del dominio dom (A) para ese atributo. – Restricciones de clave: Es un subconjunto de atributos de una relación que permiten identificar de manera única la tupla. Todas las tuplas o filas deben ser diferentes. – Toda relación tiene por lo menos una superclave o clave primaria. – El valor de uno o varios de los atributos clave identifican de manera única una tupla de la relación. – Restricciones de integridad: La clave primaria(PK) no debe tener valores nulos. – La PK no puede ser NULL porque es un valor desconocido. – La PK no se debe modificar y no cambian – La PK debe ser única y no cambia en el tiempo JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  14. 14. Restricciones de Integridad • Restricciones aplicadas a las generales http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ – Restricciones de Integridad referencial: Se especifica entre dos relaciones y sirve para mantener la consistencia entre tuplas de dos relaciones. • Una tupla en una relación que haga una referencia a otra relación deberá referirse a una tupla existente en otra relación. • Vínculos entre las entidades. • La clave externa puede hacer referencia a su propia relación. • Clave externa o foránea(FK) – Los atributos de FK tiene el mismo dominio de la clave primaria de otro esquema de relación R2 – El valor de la FK en una tupla t1 de R1 ocurre como valor de clave primaria en alguna tupla t2 de R2 o bien es nulo. – Restricciones de Integridad semántica: Se especifica de cómo una columna maneja datos específicos ingresados y el valor que se guarda en esa columna. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  15. 15. Restricciones de dominio Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ los datos. Dominios base en SQL: • CHAR(p): Cadena de caracteres de longitud fija p (máxima longitud p) • VARCHAR(p): Cadena de caracteres de longitud variable. Máxima longitud p. • NUMERICOS: Valor numérico de los siguientes tipos: enteros, precisión o punto flotante. • DATE: Fechas válidas. • BINARY: Binarios utilizados para almacenar cadenas de bytes(BLOB). JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  16. 16. TIPOS DE DATOS (NUMERICOS) •Se debe buscar el tipo de dato numérico que mejor balance ofrezca entre http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ rango, tamaño de almacenamiento, y desempeño. •Tres tipo de datos numéricos •Enteros •Precisión •La precisión es el número de dígitos de un número. La escala es el número de dígitos situados a la derecha de la coma decimal de un número. Por ejemplo, el número 123,45 tiene una precisión de 5 y una escala de 2. •Utilizado para realizar cálculos exactos. Tiene una precisión máxima de 1000 dígitos. •Punto flotante •se utilizan cuando se calculan funciones que requieren precisión fraccionaria. •Seriales •No es un verdadero tipo de datos, es una convención que permite configurar un identificador único de columna que usa un generador de secuencia para generarlo. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  17. 17. TIPOS DE DATOS (NUMERICOS) http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Name Storage Size Description Range smallint 2 bytes small-range integer -32768 to +32767 integer 4 bytes usual choice for integer -2147483648 to +2147483647 -9223372036854775808 to bigint 8 bytes large-range integer 9223372036854775807 decimal variable user-specified precision, exact no limit numeric variable user-specified precision, exact no limit real 4 bytes variable-precision, inexact 6 decimal digits precision double precision 8 bytes variable-precision, inexact 15 decimal digits precision serial 4 bytes autoincrementing integer 1 to 2147483647 bigserial 8 bytes large autoincrementing integer 1 to 9223372036854775807 JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  18. 18. TIPOS DE DATOS (CARACTER) http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Name Description character varying(n), varchar(n) variable-length with limit character(n), char(n) fixed-length, blank padded text variable unlimited length JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  19. 19. TIPOS DE DATOS (Date/Time) •Fechas se almacenan internamente como datos numéricos, por lo que es http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ posible realizar operaciones aritméticas con ellas. • Timestamps (fractional seconds precision) son típicamente usados para seguimiento de eventos, controlar concurrencia entre otros, se genera automáticamente cada vez que insertamos o modificamos una fila. •Time zone el valor de la hora será ajustado a la zona horaria de la sesión actual. •Intervals son intervalos de tiempo. •functions-datetime Funciones definidas que permiten obtener información de estos tipos de datos. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  20. 20. TIPOS DE DATOS (Date/Time) Storage Name Description Low Value High Value Resolution Size http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ timestamp [ (p) ] 1 [ without time microsecond zone ] 8 bytes both date and time 4713 BC 5874897 AD / 14 digits 1 timestamp [ (p) ] both date and time, microsecond with time zone 8 bytes with time zone 4713 BC 5874897 AD / 14 digits 1 178000000 microsecond interval [ (p) ] 12 bytes time intervals -178000000 years years / 14 digits date 4 bytes dates only 4713 BC 5874897 AD 1 day time [ (p) ] [ 1 without time microsecond zone ] 8 bytes times of day only 00:00:00 24:00:00 / 14 digits 1 time [ (p) ] with times of day only, microsecond time zone 12 bytes with time zone 00:00:00+1359 24:00:00-1359 / 14 digits JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  21. 21. TIPOS DE DATOS (BOLEANO) •El tipo de datos Boleano permite manejar dos estados como verdadero/falso, sí/no o activado/desactivado. http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ •Lo valores permitidos para representar el estado verdadero •TRUE •t‘ •‘true‘ •y‘ •yes‘ •1‘ •Valores permitidos para representar el estado falso •FALSE •‘f‘ •false‘ •n‘ •no‘ •0’ JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  22. 22. Restricciones de Integridad http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Los cinco tipos de restricciones aplicados en sentecias SQL: Restricciones (CONSTRAINT ) NOT NULL UNIQUE PRIMARY KEY FOREING KEY CHECK JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  23. 23. Restricciones de Integridad http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ • Nulos: Un atributo puede o no admitir nulos. En SQL se especifica mediante la cláusula NOT NULL. • Integridad Referencial: Garantiza la existencia de las Claves Foráneas. Para ello se utilizan las cláusulas REFERENCES y FOREIGN KEY • Clave Primaria: Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Para ello se utiliza la cláusula PRIMARY KEY. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  24. 24. Restricciones de Integridad• Clave Alternativa: Garantiza la unicidad de los atributos declarados como tal. Se utiliza la cláusula UNIQUE. Si se desea hacer obligatoria debe especificarse adicionalmente NOT NULL.• Las reglas CHECK para atributos: Involucra condiciones de chequeo para uno o varios atributos. Sintaxis : CHECK ( condicion) • Mantención de la integridad • Medida básica (después de llaves foráneas) • Restringir valores lo más posible• Clases de CHECK para restringir el dominio de datos • CHECK ( x = 1 ) • CHECK ( pais IN ( „Colombia, „Mexico, „Brasil )) • CHECK ( valor >= 100 AND valor < 200 ) JOSÉ CUARTAS BASES DE DATOS
  25. 25. Apliquemos SQL Restricción - UNIQUE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ La restricción UNIQUE asegura que una columna o un grupo de columnas no permitirán valores repetidos – en otras palabras, se impone la unicidad de los valores en la columna o el conjunto. Una restricción UNIQUE se puede utilizar en cualquier columna que no sea parte de una restricción PRIMARY KEY, que también impone valores únicos. Además, las restricciones UNIQUE se pueden usar en columnas que permitan valores nulos, mientras que las restricciones PRIMARY KEY no pueden. Los valores nulos son ignorados por la restricción UNIQUE. Una columna con una restricción UNIQUE puede referenciarse con una restricción FOREIGN KEY. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  26. 26. Apliquemos SQL Restricción - UNIQUEPara crear una restricción UNIQUE en una tabla, se usa el comando CREATETABLE o ALTER TABLE.Nomenclatura para crear un UNIQUE en CREATE TABLE en una columna:UNIQUE nombre_columna tipo_dato [Opcional: NOT NULL] UNIQUEEjemplo 1: Cree una tabla llamada ejemplo_UNICO definida por la siguienteestructura: ejemplo_UNIQUE_columna (codigo: smallint, nombre: varchar (20)).Colocando el Campo código con una Restricción UNIQUE y NOT NULL.CREATE TABLE ejemplo_UNIQUE_columna ( codigo smallint NOT NULL UNIQUE, nombre varchar(20) Compruebe la restricción UNIQUE insertando dos filas utilizando el mismo código.) JOSÉ CUARTAS BASES DE DATOS
  27. 27. Apliquemos SQL Restricción - UNIQUE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura para creación UNIQUE en CREATE TABLE en múltiples columnas: UNIQUE En este caso la restricción no es por una columna en particular, sino que por un conjunto de columnas. Por lo tanto la restricción se coloca después de haber definido todos los campos de la tabla y antes de cerrar la instrucción CREATE TABLE. Se utiliza para crear esta restricción la instrucción CONSTRAINT. Nomenclatura: CONSTRAINT nombre_restriccion UNIQUE (campo1, …, campoN) NOTA: el nombre de la restricción UNIQUE se recomienda por norma que comience con UQ_nombre_restriccion. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  28. 28. Apliquemos SQL Restricción - UNIQUE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura para creación UNIQUE en CREATE TABLE: UNIQUE agrupado Ejemplo 2: Crear la tabla ejemplo_UNICO_GR basada en la siguiente estructura: ejemplo_UNIQUE_GR (tipodocumento : smallint, digito: char(2),nombre: varchar(20)). El tipodocumento y digito deben ser no nulos y además en conjunto deben ser únicos. CREATE TABLE ejemplo_UNICO_GR( tipodocumento smallint NOT NULL, Compruebe la restricción UNIQUE agrupada, dos filas con los mismos digito char(2) NOT NULL, valores en el campo tipodocumento y digito. nombre varchar(20), CONSTRAINT UQ_documento_digito UNIQUE (tipodocumento,digito) ) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  29. 29. Apliquemos SQL Restricción - UNIQUE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura para creación UNIQUE en ALTER TABLE: UNIQUE realizando una alteración de una tabla ya creada Nomenclatura ALTER TABLE nombre_tabla ADD CONSTRAINT UQ_nombre_restriccion UNIQUE (nombre_campo) Ejemplo 3: Adicione una restricción UQ_nombre_ALT a la tabla ejemplo_UNIQUE_columna, para el atributo nombre. ALTER TABLE "ejemplo_UNIQUE_columna“ ADD COSNTRAINT "UQ_nombre_restriccion" UNIQUE (nombre) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  30. 30. Apliquemos SQL Restricción - UNIQUE http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Borrar una restricción UNIQUE creada. Para borrar una restricción UNIQUE se debe utilizar la instrucción ALTER TABLE con su opción DROP. Nomenclatura ALTER TABLE nombre_tabla DROP CONSTRAINT UQ_nombre_restriccion Ejemplo 4: Borre la restricción UQ_nombre_restriccion de la tabla ejemplo_UNIQUE_columna. ALTER TABLE "ejemplo_UNIQUE_columna“ DROP CONSTRAINT "UQ_nombre_restriccion" JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  31. 31. Apliquemos SQL Restricción – PRIMARY KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ La restricción PRIMARY KEY se usa para especificar la clave primaria de una tabla, la columna o conjunto de columnas que identifican unívocamente a una fila. Debido a que identifica a una fila la clave primaria nunca puede ser NULL, esto es la que lo diferencia de la restricción UNIQUE. Para la definición de la restricción PRIMARY KEY se pueden utilizar las instrucciones CREATE TABLE y ALTER TABLE. Nomenclatura para CREATE TABLE: nombre_campo tipo_dato PRIMARY KEY Ejemplo 1: Crea una Tabla denominada ejemplo_Clave_PK, basada en la siguiente estructura: ejemplo_Clave_PK (codigo: integer, nombre: varchar(20)). Colocando el campo código como clave primaria. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  32. 32. Apliquemos SQL Restricción – PRIMARY KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo 1: CREATE TABLE “ejemplo_Clave_PK” ( Compruebe si se cumple la codigo integer PRIMARY KEY, restricción de clave primaria ingresando dos filas con el nombre varchar(20) mismo código. ) Además usando CREATE TABLE se le puede asignar un nombre a la restricción PRIMARY KEY (IDEAL) , usando la siguiente nomenclatura: Para cuando se coloca al lado del campo: nombre_campo tipo_dato CONSTRAINT PK_nombre_clave PRIMARY KEY Para cuando se coloca antes de cerrar el CREATE TABLE CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  33. 33. Apliquemos SQL Restricción – PRIMARY KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura para ALTER TABLE: ALTER TABLE nombre_tabla ADD CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas) Nomenclatura para BORRAR una clave primaria: ALTER TABLE nombre_tabla DROP CONSTRAINT PK_nombre_clave NOTA: EN LA BASE DE DATOS NO PUEDEN EXISTIR DOS RESTRICCIONES CON EL MISMO NOMBRE, AUNQUE SEAN DE TABLAS DISTINTAS. NOTA: Por nomenclatura al dar un nombre a una clave primaria es ideal comenzar con la letras PK JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  34. 34. Apliquemos SQL Restricción – PRIMARY KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo 2: Compruebe si se cumple la restricción de clave primaria Eliminamos la PK del ejmplo anterior. ingresando dos filas con el mismo código. ALTER TABLE “ejemplo_Clave_PK” DROP CONSTRAINT nombre_de_la_restriccion ALTER TABLE “ejemplo_Clave_PK” ADD CONSTRAINT “PK_ejemplo_Clave” PRIMARY KEY (codigo, nombre ) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  35. 35. Apliquemos SQL Restricción – FOREIGN KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Una restricción FOREIGN KEY define una clave externa, que identifica una relación entre dos tablas. La columna o columnas clave externa de una tabla referencia a una clave candidata – una o varias columnas – de otra tabla. Cuando se inserta una fila en la tabla con la restricción FOREIGN KEY, los valores que se van a introducir en la columna o columnas que se han definido como clave externa se comprueban frente a los valores de la clave candidata de la tabla referenciada. Si ninguna fila de la tabla referenciada se ajusta a los valores de la clave externa, la nueva fila no se puede insertar. La restricción FOREIGN KEY también se comprueba cuando se realizan actualizaciones y borrados en la tabla referenciada o la tabla que posee la clave externa. Una clave externa sólo puede referenciar columnas que tengan las restricciones PRIMARY KEY o UNIQUE en la tabla referenciada. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  36. 36. Apliquemos SQL Restricción – FOREIGN KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Además, el tipo de dato y el tamaño de la columna o columnas de la clave externa, también debe coincidir con el de la columna o columnas referenciadas. Esta restricción FOREIGN KEY se puede asignar utilizando la sentencia CREATE TABLE y ALTER TABLE. Nomenclatura en CREATE TABLE (Siempre se agrega antes de finalizar la creación de la tabla): CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o columnas que guardaran los valores de la clave ajena) REFERENCES nombre_tabla_referencia (columna o columna que poseen datos a validar) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  37. 37. Apliquemos SQL Restricción – FOREIGN KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo 1: Crear las siguientes tablas basadas en las siguientes estructuras: universidad(codigo_uni: integer,nombre:varchar(20)) estudiante (tipo_documento: char(2), numero_documento: integer, nombre: varchar(20), universidad: integer) Restricciones: Universidad clave primaria codigo_uni y Estudiante clave primaria tipo_documento y numero_documento. Además en estudiante universidad es una clave externa que se debe verificar en universidad. Paso 1: Crear la Tabla UNIVERSIDAD CREATE TABLE “UNIVERSIDAD” ( codigo_uni integer, nombre varchar(20) NOT NULL, CONSTRAINT PK_universidad PRIMARY KEY (codigo_uni) ) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  38. 38. Apliquemos SQL Restricción – FOREIGN KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo 1: Paso 2: Crear la Tabla ESTUDIANTE CREATE TABLE “ESTUDIANTE” ( tipo_documento char(2), numero_documento integer), nombre varchar(20) NOT NULL, universidad integer NOT NULL, CONSTRAINT PK_estudiante PRIMARY KEY (tipo_documento, numero_documento), CONSTRAINT FK_estudiante_universidad FOREIGN KEY (universidad) REFERENCES “UNIVERSDIAD”(codigo_uni) ) JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  39. 39. Apliquemos SQL Restricción – FOREIGN KEY http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura en ALTER TABLE (para cuando se desea crear una clave externa después de haber creado la tabla): ALTER TABLE nombre_tabla ADD CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o columnas para recepción de clave ajena) REFERENCES nombre_tabla_referencia (columna o columnas de referencia) Nomenclatura para borrar una clave foránea: ALTER TABLE nombre_tabla DROP CONSTRAINT FK_nombre_restriccion JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  40. 40. Apliquemos SQL Restricción – CHECK http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ La restricción CHECK se usa para restringir los valores permitidos de una columna o unos valores específicos. Los valores de una columna que se van a introducir o actualizar se confirman. Se puede agregar esta restricción utilizando las instrucciones CREATE TABLE o ALTER TABLE. Nomenclatura CREATE TABLE: CONSTRAINT CK_nombre_restriccion CHECK (condiciones) Ejemplo 6: Crear una Tabla ejemplo_CH basandose en la siguiente estructura: ejemplo_CK (codigo: integer, nombre: varchar(20)). Donde codigo es la clave primaria y solo puede aceptar valores entre 1 y 100. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  41. 41. Apliquemos SQL Restricción – CHECK http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplo 6: CREATE TABLE Ejemplo_CK ( codigo integer, nombre varchar(20), CONSTRAINT PK_codigo PRIMARY KEY (codigo), CONSTRAINT CK_codigo_condicion CHECK (codigo > 0 and codigo < 101) ) Para probar la realidad de la restricción ingrese un registro a la tabla Ejemplo_CK con un codigo con valor mayor que 100. JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  42. 42. Apliquemos SQL Restricción – CHECK http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Nomenclatura para ALTER TABLE (en el caso de que se cree una restricción después de haber creado la tabla): ALTER TABLE nombre_tabla ADD CONSTRAINT CK_nombre_restriccion CHECK (condiciones) Nomenclatura para Borrar una restricción CHECK: ALTER TABLE nombre_tabla DROP CONSTRAINT CK_nombre_restriccion JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
  43. 43. Apliquemos SQL Restricción – CHECK http://datosintensos.blogspot.com/http://datosintensos.blogspot.com/ Ejemplos con la cláusula CHECK: CREATE TABLE empleado ( documento INTEGER PRIMARY KEY, nombre VARCHAR(30) NOT NULL, pais VARCHAR(30) salario INTEGER NOT NULL CHECK (salario > 0 ) , comision INTEGER CHECK (comision between 0 and 100), cargo VARCHAR(20) NOT NULL, depto INTEGER NOT NULL, CONSTRAINT CK_pais CHECK ( pais IN ( „Colombia, „Mexico, „Brasil )) ); JOSÉ CUARTAS BASES DE DATOS Actualízate sobre gestión de información en http://datosintensos.blogspot.com/

×