Manual Postgresql
Manual Postgresql
DATOS
Descripción breve
Proporciona comandos para la definición de esquemas de relación, borrado de relaciones y
modificaciones de los esquemas de relación.
TABLA DE CONTENIDO
TABLA DE CONTENIDO .............................................................................................................................................. 1
LENGUAJE ESTRUCTURADO DE CONSULTAS - SQL ........................................................................................... 3
Características generales del SQL ................................................................................................................................ 3
pgAdmin III ...................................................................................................................................................................... 4
Definición ..................................................................................................................................................................... 4
Entorno trabajo ............................................................................................................................................................. 5
Conexión al servidor PostgreSQL ................................................................................................................................ 5
Creación de usuarios ..................................................................................................................................................... 6
Herramienta de edición de datos ................................................................................................................................... 8
Herramienta de Consulta SQL ...................................................................................................................................... 9
TIPO DE DATOS .......................................................................................................................................................................... 10
Numéricos................................................................................................................................................................... 10
Texto ........................................................................................................................................................................... 10
Hora y Fecha ............................................................................................................................................................... 10
OPERADORES Y FUNCIONES ................................................................................................................................... 11
Operadores .................................................................................................................................................................. 11
Operadores Matemáticos ........................................................................................................................................ 11
Operadores de Relacionales .................................................................................................................................... 11
Coincidencia de Patrones ........................................................................................................................................ 12
Coincidencia de rango ............................................................................................................................................ 14
Operadores Lógicos ................................................................................................................................................ 15
Funciones .................................................................................................................................................................... 16
Funciones matemáticas ........................................................................................................................................... 16
Funciones de Cadena .....................................................................................................................................................17
Funciones de Fecha ................................................................................................................................................. 18
LENGUAJE DE DEFINICIÓN DE DATOS (DDL) ...................................................................................................... 19
Estructura de una tabla................................................................................................................................................ 19
CREATE TABLE ........................................................................................................................................................... 20
SINTAXIS GENERAL CREATE TABLE................................................................................................................. 20
RESTRICCIONES ......................................................................................................................................................... 22
Not Null ...................................................................................................................................................................... 22
LLAVES .............................................................................................................................................................................22
Llave primaria ......................................................................................................................................................... 23
Llave foránea .......................................................................................................................................................... 26
Unique ........................................................................................................................................................................ 28
Sintaxis de la restricción Unique ............................................................................................................................ 28
Check .......................................................................................................................................................................... 29
Página|1
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Sintaxis de la restricción check ............................................................................................................................... 29
Default ........................................................................................................................................................................ 33
Sintaxis Default ...................................................................................................................................................... 33
ALTER TABLE ............................................................................................................................................................. 34
Tablas ......................................................................................................................................................................... 34
Establecer dueño de la tabla .................................................................................................................................... 34
Renombrar tabla...................................................................................................................................................... 34
Columnas .................................................................................................................................................................... 34
Agregar columna a una tabla .................................................................................................................................. 34
Renombrar columna en una tabla ........................................................................................................................... 34
Modificar columna(s) en una tabla ......................................................................................................................... 35
Eliminar columnas en una tabla .............................................................................................................................. 35
Default ........................................................................................................................................................................ 35
Establecer un valor por defecto............................................................................................................................... 35
Borrar un valor por defecto ..................................................................................................................................... 35
Not Null ...................................................................................................................................................................... 35
Establecer la restricción no nula sobre un campo ................................................................................................... 35
Borrar la restricción de no nulo de un campo ...............................................................................................................35
Constraints .................................................................................................................................................................. 36
Agregar la restricción de llave primaria a una columna .......................................................................................... 36
Agregar la restricción de chequeo .................................................................................................................................36
Agregar la restricción de valor Único a un campo .................................................................................................. 36
Eliminar una restricción utilizando el nombre ........................................................................................................ 36
DROP TABLE ........................................................................................................................................................................37
Página|2
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje
declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una
de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de
recuperar de forma sencilla información de interés de bases de datos, así como hacer cambios en ella.
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales y
permite así gran variedad de operaciones.
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte base teórica y su orientación
al manejo de conjuntos de registros —y no a registros individuales— permite una alta productividad en codificación y la
orientación a objetos. De esta forma, una sola sentencia puede equivaler a uno o más programas que se utilizarían en
un lenguaje de bajo nivel orientado a registros. SQL también tiene las siguientes características:
Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la definición de esquemas de
relación, borrado de relaciones y modificaciones de los esquemas de relación.
Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes de consultas basado tanto
en álgebra relacional como en cálculo relacional de tuplas.
Integridad: El LDD de SQL incluye comandos para especificar las restricciones de integridad que deben
cumplir los datos almacenados en la base de datos.
Página|3
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
pgAdmin III
Definición
PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos, de código abierto (gratuito) y
código fuente disponible y basada en lenguaje C. Presenta atomicidad, consistencia, aislamiento y durabilidad.
Resistencia a fallas (Write Ahead Logging) lo que garantiza que en el caso de que la base de datos se caiga, existirá un
registro de las transacciones a partir del cual puedes restaurarla.
Herramienta de diseño y mantenimiento de Bases de Datos para Windows, de propósito general para diseñar,
mantener y administrar las bases de datos PostgresSQL.
Se caracteriza por:
Pantallas de información y ayuda para bases de Datos, Tablas, Índices, Secuencias, Visitas, Programas de
arranque, etc.
Página|4
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Entorno trabajo
1. Para acceder a PgAdmin debemos:
2. Seleccionar Inicio PostgreSQL x.x pgAdmin III
Página|5
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Se mostrará la relación de Base de Datos, tablespace, roles de grupos y roles de login creados por defecto al
momento de la instalación y los creados por el usuario.
Creación de usuarios
1. Clic derecho en roles de login y seleccionar New Login Role
Página|6
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Para poder agregar tablas, es necesario crear primero una base de datos.
Name: denominación de la base de datos (por simplicidad, evitar espacios, MAYÚSCUlas, acentos y guion
bajo '_')
Propietario: usuario (rol) que tendrá derechos especiales sobre la base de datos
Página|7
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
La grilla de edición permite ver y editar los datos seleccionados en una tabla o vista.
Para ello, seleccionar la tabla Object browser y luego presionar el botón Ver los datos del objeto seleccionado (ícono
similar a una grilla) de la barra de herramientas o por el menÚ Herramientas, Ver Datos:
Para editar, hacer doble clic en la celda a modificar. Los ítems principales de la barra de herramienta son:
Refrescar (ícono similar a reciclado): actualiza la grilla con datos recientes (por ejemplo,
nÚmero de secuencia)
Página|8
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Al seleccionar una base de datos, se habilita la herramienta de consulta, que permite ejecutar consultas SQL
arbitrarias.
Para ingresar a dicha herramienta, presionar el botón Ejecutar consultas SQL arbritrarias
(ícono similar a una hoja, sql, lapiz) de la barra de herramientas o dirigirse al menÚ Herramientas, Herramienta
de consulta (Ctrl+E).
Funcionalidades importantes:
Exportar datos consulta (ícono similar a un Play con Disquete): para guardar las filas resultantes (ver
siguiente)
Página|9
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
TIPO DE DATOS
Numéricos
Tamaño de
Nombre almacenamiento Descripción Rango
6 dígitos de precisión
FLOAT4 4 bytes Precisión variable, Inexacto
decimal
15 dígitos de precisión
FLOAT8 8 bytes Precisión variable, Inexacto
decimal
SERIAL 4 bytes Entero incremental 1 a 2147483647
Lógico
Nombre Descripción
BOOLEA Booleano lógico (True/False)
N
Texto
Nombre Descripción
CHAR(N) Longitud fija con limite
VARCHAR(n Longitud variable con limite
)
TEXT Longitud variable sin limite
Hora y Fecha
Nombre Tamaño de almacenamiento Descripción Límite inferior Límite superior
TIMESTAMP 8 bytes Fecha y hora 4713 AC 294276 DC
DATE 4 bytes Fecha sin hora 4713 AC 5874897 DC
TIME 8 bytes Hora sin fecha 00:00:00 24:00:00
P á g i n a | 10
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
OPERADORES Y FUNCIONES
Operadores
Operadores Matemáticos
+ Adición 2 + 3 5
- Substracción 2 – 3 -1
* Multiplicación 2 * 3 6
^ Exponenciación 3 ^ 2 9
Operadores de Relacionales
= Igual 2 = 3 False
P á g i n a | 11
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Coincidencia de Patrones
Operador LIKE
Existe un operador relacional que se usa para realizar comparaciones exclusivamente de cadenas, LIKE y la
negación NOT LIKE.
El operador igual ("=") nos permite comparar cadenas de caracteres, pero al realizar la comparación, busca
coincidencias de cadenas completas, realiza una BÚSqueda exacta. Se utiliza para comparar una expresión de cadena
con un modelo en una expresión SQL. Su sintaxis es:
Se puede utilizar el operador LIKE para encontrar valores en los campos que coincidan con el modelo especificado.
Por modelo puede especificar un valor completo (Ana María), o se pueden utilizar carácter comodín para encontrar un
patrón de valores).
El operador LIKE se puede utilizar en una expresión para comparar un valor de un campo con una expresión de
cadena. Por ejemplo, si introduce LIKE ‘C%’ en una consulta SQL, la consulta devuelve todos los valores de
campo que comiencen por la letra C. En una consulta con parámetros, puede hacer que el usuario escriba el
modelo que se va a utilizar. En la tabla siguiente se muestra cómo utilizar el operador LIKE para comprobar
expresiones con diferentes modelos.
Ejemplo:
SELECT *
FROM empleado
WHERE nombre LIKE 'a_a';
P á g i n a | 12
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Una expresión regular es una secuencia de caracteres que es una definición abreviada de un conjunto de cadenas (un
conjunto regular). Una cadena se dice para que coincida con una expresión regular si es un miembro del conjunto
regular descrito por la expresión regular.
Al igual que con LIKE, caracteres de patrones coinciden con caracteres de cadena exactamente a menos que sean
caracteres especiales en el lenguaje de expresiones regulares - pero las expresiones regulares utilizan diferentes
caracteres especiales que el LIKE.
A diferencia de los patrones LIKE, se permite una expresión regular para que coincida con cualquier parte dentro de
una cadena, a menos que la expresión regular está anclado de forma explícita al principio o al final de la cadena.
P á g i n a | 13
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Coincidencia de rango
Para indicar que deseamos recuperar los registros segÚn el intervalo de valores de un campo emplearemos el operador
BETWEEN cuya sintaxis es:
En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo valor1,
valor2 (ambos inclusive). Si anteponemos la condición NOT devolverá aquellos valores no incluidos en el intervalo.
SELECT *
FROM Pedidos
WHERE CodPostal BETWEEN 28000 AND 28999;
Operador IN
Se puede usar el operador IN para verificar si un valor o campo coincide cualquier valor de una lista de valores.
Supongamos que posees una tabla llamada empleado y que deseas consultar los empleados que tengan los
siguientes nombres: ‘James’, ‘Ricardo’, ‘Brayan’ y ‘Laura’. Normalmente muchas personas que
desconozcan la función de IN harán lo siguiente:
SELECT *
FROM empleado
WHERE nombre = 'James' OR
nombre = 'Ricardo' OR
nombre = 'Brayan' OR
nombre = 'Laura';
SELECT *
FROM empleado
WHERE nombre IN ('James', 'Ricardo', 'Brayan', 'Laura';
P á g i n a | 14
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Operadores Lógicos
Los operadores lógicos soportados por SQL son: AND, OR y NOT.
Operador Descripción
Es el "y" lógico. EvalÚa dos condiciones y devuelve un valor de verdad sólo si ambas son
AND ciertas.
Es el "o" lógico. EvalÚa dos condiciones y devuelve un valor de verdad si alguna de las dos es
OR cierta.
Tablas de verdad
<expresión1> Operador <expresión2> Resultado
Verdad AND Falso Falso
Verdad AND Verdad Verdad
Falso AND Verdad Falso
Falso AND Falso Falso
Verdad OR Falso Verdad
Verdad OR Verdad Verdad
Falso OR Verdad Verdad
Falso OR Falso Falso
Sintaxis:
A excepción del NOT todos poseen la siguiente sintaxis:
<expresión1> OPERADOR <expresión2>
En donde expresión1 y expresión2 son las condiciones a evaluar, el resultado de la operación varía en función del
operador lógico. La tabla adjunta muestra los diferentes posibles resultados: Si a cualquiera de las anteriores
condiciones le anteponemos el operador NOT el resultado de la operación será el contrario al devuelto sin el
operador NOT.
Ejemplos:
Edad > 25 AND Edad <= 50
(Edad => 25 AND Edad < 50) OR Sueldo = 100
NOT Estado <> 'Soltero'
(Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado')
P á g i n a | 15
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Funciones
Funciones matemáticas
Funcion Descripción Ejemplo Resultado
ABS(x) Devuelve el valor absoluto del argumento "x" ABS(-20) 20
CEILING(x) Redondea hacia arriba el argumento "x". CEILING(12.34) 13
CBRT(dp) Devuelve la raíz cuadrada del argumento "dp" CBRT(27) 3
FLOOR(x) Redondea hacia abajo el argumento "x". FLOOR(12.34) 12
POWER(x,y) Devuelve el valor de "x" elevado a la "y" potencia. POWER(2, 3) 8
ROUND(numero) Devuelve un nÚmero redondeado al valor más próximo ROUND(10.4) 10
TRUNC(x) Trunca los decimales del nÚmero “x” TRUNC(42.4382,2) 42
Trunca la cantidad de decimales “d” a mostrar del
TRUNC(x,d) TRUNC(42.4382,2) 42.43
nÚmero “x”
MOD(x,y) Devuelve el residuo de la división entre “x” / “y”. MOD(9,4) 1
RANDOM() Numero aleatorio entre 0.0 y 1,0. RANDOM() 0.665044381283224
Si el argumento es un valor positivo devuelve 1;-1 si es
SIGN(x) SIGN(-23.4) -1
negativo y si es 0, 0.
Funciones de Cadena
Función Descripción Ejemplo Resultado
LENGTH(string) Retorna la longitud del texto LENGTH('Hola') 4
UPPER(string) Retorna el texto convertido a maYÚSCUlas UPPER('Hola') HOLA
LOWER(string) Retorna el texto convertido a minÚSCUlas LOWER('Hola') hola
STRING || string Concatenación de cadena 'Post' || 'greSQL' PostgreSQL
Convierte la primera letra de cada palabra en
INITCAP(string) maYÚSCUla y el resto en minÚSCUla. INITCAP('Hola TOMAS') Hola Tomas
LTRIM(string,string)
Elimina los caracteres de la izquierda segÚn el dato del CHAR_LENGTH(LTRIM(' Hola')) 4
segundo parámetro de la función ltrim('---Hola','-') Hola
Elimina los caracteres de la derecha segÚn el dato del
RTRIM(string,string) segundo parámetro de la función. Ejemplo: CHAR_LENGTH(RTRIM('Hola ') 4
Funciones de Fecha
Función Descripción Ejemplo Resultado
retorna una parte de la fecha u hora segÚn le indiquemos antes del from, luego del from debemos indicar un campo o valor de tipo timestamp (o en su defecto
anteceder la palabra clave timestamp para convertirlo)
Retorna el día de la
EXTRACT(DOW FROM TIMESTAMP'2016-02-01 12:25:50') 1
semana
Retorna el nÚmero de
EXTRACT(WEEK FROM TIMESTAMP'2016-02-01 12:25:50') 6
semana dentro del año
COMANDOS
DLL
Comando Descripción
Cada columna tiene un tipo de datos. Las limitaciones de tipo de datos el conjunto de posibles valores que pueden
asignarse a una columna y asigna a la semántica de los datos almacenados en la columna de modo que pueda ser
utilizado para los cálculos. Por ejemplo, una columna declarada de un tipo numérico no aceptará cadenas de texto
arbitrarias, y los datos almacenados en una columna de este tipo puede ser utilizado para cálculos matemáticos. Por el
contrario, una columna declarada de un tipo de cadena de caracteres aceptará casi cualquier tipo de datos, pero no se
presta a cálculos matemáticos, aunque otras operaciones, como la concatenación de cadenas están disponibles.
CREATE TABLE
Las tablas son la estructura básica donde se almacena la información en la base de datos. Dado que en la mayoría de
los casos, no hay forma de que el proveedor de base de datos sepa con antelación cuáles son sus necesidades de
almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted mismo.
Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en
una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede
pensarse como la representación de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos
una tabla para registrar la información del cliente, las columnas pueden incluir información tal como Primer Nombre,
Apellido, Dirección, Ciudad, País, Fecha de Nacimiento y demás. Como resultado, cuando especificamos una tabla,
incluimos los títulos de columna y los tipos de datos para esta columna en particular.
Entonces ¿Qué son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podría ser un entero
(tal como 1), un nÚmero real (tal como 0,55), una línea (tal como 'sql'), una fecha/expresión de tiempo (tal como '25-
ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de
dato asociado con cada columna (es decir, especificaremos que ‘firstname’ es de varchar(50) tipo – lo que
significa que es una línea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales
permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia específica de base de
datos.
P Á G I N A | 20
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Los nombres de las tablas y las columnas deben respetar las siguientes reglas:
Por ejemplo:
Esto crea una tabla denominada miprimeratabla con dos columnas. La primera columna es de nombre
primeracolumna y tiene un tipo de datos de SERIAL; la segunda columna tiene el nombre segundacolumna y
el tipo INT4. Tenga en cuenta que la lista de la columnas está separada por comas y rodeado de paréntesis ( ).
Por supuesto, el ejemplo anterior era muy artificial. Normalmente, se da nombres a las tablas y columnas que
transmiten el tipo de datos que almacenan. Así que echemos un vistazo a un ejemplo más realista:
Se crea una tabla llamada productos con tres columnas. La primera columna se llama nroproducto y
tiene un tipo de dato SERIAL, la segunda columna es nombre y tiene un tipo de dato VARCHAR(40) con una
longitud de cadena máxima de 40 y por Último el PRECIO que es de tipo DECIMAL(10,1) y consta de una longitud
de 10 nÚmeros y uno de ellos es decimal.
P Á G I N A | 21
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
RESTRICCIONES
Para asegurar la integridad de los datos almacenados en nuestras tablas, podemos crear restricciones, algunos
los hemos utilizado sin querer o simplemente desconocemos que lo que hicimos fue una restricción, por ejemplo
una llave primaria. Estas restricciones las podemos implementar al momento de crear nuestras tablas o de
modificarlas, también es necesario señalar que dichas restricciones son objetos propios de la base de datos y por lo
tanto requieren de un nombre Único
Not Null
La restricción NOT NULL sirve para especificar que una columna no acepta el valor NULL, es decir, que esa columna
siempre tiene que tener algÚn valor, no puede estar vacía.
Esta sentencia crea una tabla denominada productos, donde tenemos 3 columnas. Las columnas nroproducto y
nombre llevan NOT NULL, esto quiere decir que cualquier fila insertada en esta tabla tiene que tener algÚn valor
para las columnas nroproducto y nombre.
LLAVES
Llaves
Únicas No Únicas
Llaves candidata Llave compuesta Llave primaria Llave alternativa Llave foránea
Las llaves son una o más columnas que están en una relación (tabla) y que su valores son utilizados para identificar a
cada tupla, algunas clave son Únicas y otras no, si una llave es Única lo que significa es que los valores de la
columna llave van hacer Únicas en toda la tabla.
Por ejemplo, si tenemos una tabla empleados, la columna documento del empleado es una llave Única por lo cual no
podrá permitir que haya dos valores iguales.
Cada tabla puede poseer más de una llave. Por ejemplo, La tabla empleados, la llave puede ser tanto el atributo
codigo, como el atributo docemp (documento de identidad del empleado). Tenemos dos llaves potenciales,
también llamadas llaves candidatas.
De entre todas las llaves candidatas, el administrador, cuando define la tabla, debe decidir cuál de ellas va a ser la
llave principal o llave primaria, mientras que el resto de las claves pasan a denominarse llaves alternativas o llaves
alternas.
P Á G I N A | 22
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Llave primaria
La llave principal o primaria proporciona un valor Único para cada fila de la tabla y nos sirve de identificador de
registros de forma que con esta llave podamos saber sin ningÚn tipo de equivocación el registro al cual
identifica. No podemos definir más de una llave principal, pero podemos tener una clave principal compuesta por más
de un campo.
Necesitamos definir una llave primaria para una tabla con los datos descriptos arriba. No podemos usar la columna
nomemp porque varios empleados pueden tener el mismo nombre; tampoco podemos usar la fecnacemp
porque varios empleados pueden haber nacido el mismo día. Tampoco sirve el campo apeemp. El campo
docemp: el documento de empleado representa de forma Única al empleado dentro de la empresa y usamos la
siguiente sintaxis para definir la llave primaria.
Donde, CONSTRAINT, sirve para definir una restricción que se podrá eliminar cuando queramos sin tener que borrar la
columna. A cada restricción se le asigna un nombre <pknombreconstraint> que se utiliza para identificarla y
para poder eliminarla cuando se quiera. Es una restricción de clave primaria (llave principal) porque son campo con
valores Únicos (sin duplicados. Entonces, la tabla llamada empleados queda de la siguiente forma:
P Á G I N A | 23
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Ejemplo, el estacionamiento almacena cada día los datos de los vehículos que ingresan en la tabla llamada ingreso con
los siguientes campos:
No podemos usar la matricula porque un mismo auto puede ingresar más de una vez en el día al estacionamiento;
tampoco podemos usar la hora de entrada porque varios autos pueden ingresar a una misma hora. Tampoco
sirve la hora de salida.
Como ningÚn campo, por si solo cumple con la condición para ser clave, es decir, debe identificar un solo registro, el
valor no puede repetirse, debemos usar dos campos.
Definimos una clave compuesta cuando ningún campo por si solo cumple con la condición para ser clave. En este
ejemplo, usamos dos campos como clave, la matricula junto con la hora de llegada, así identificamos
unívocamente cada registro.
Para establecer más de un campo como clave primaria usamos la siguiente sintaxis:
Nombramos los campos que formarán parte de la clave separados por comas.
(matricula, horallegada)
Un campo que es parte de una clave primaria puede ser auto-incremental sólo si es el primer campo que compone la
clave, si es secundario no se permite.
P Á G I N A | 24
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Seleccione un clave que no contenga valores desconocidos (NULL). Técnicamente las claves candidatas
pueden contener valores desconocidos (NULL).
En el caso, que una clave candidata pueda contener este tipo de valores, esta clave se descartar como clave
primaria.
Seleccione un clave que sea Única y que no se repita en el tiempo. Es posible que las claves candidatas que son
Únicas en este momento puede contener valor duplicados en otro instante de tiempo.
Este tipo de claves candidatas no reÚnen los requisitos para ser clave principal.
Las claves primarias no cambian en el tiempo. Los valores de clave primaria no deben seguir cambiando en el
tiempo. Es conveniente para una base de datos que los valores almacenados en la columna de la clave
primaria sean estáticos.
Recuerde, un cambio en los valores afecta negativamente la integridad de la base de datos, los índices
primarios y secundarios, ya que las claves primarias hacen referencia a numerosos lugares en la base de datos.
El concepto de llave es tan importante, que da lugar a una serie de restricciones fundamentales sobre la base de datos.
Son la regla de identificación Única y la regla de integridad referencial.
«En ninguna tupla de una tabla, ninguno de los atributos que formen parte de la clave primaria de una relación podrá
tomar un valor nulo. El valor de la clave será único para cada tupla de la tabla».
Esta regla nos dice que una vez escogida la clave primaria de una tabla, y dado que ninguno de los atributos que la
componen es superfluo, no podemos dejar de lado el valor de ninguno de ellos para identificar unívocamente a una tupla.
NingÚn atributo de la clave puede ser vacío porque en tal caso no sería una característica identificativa propia del
objeto a que pertenece.
P Á G I N A | 25
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Llave foránea
Es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de
las tablas relacionadas son válidas y que no se borren o cambien datos relacionados de forma accidental produciendo
errores de integridad.
Cuando se define una columna como llave foránea, las filas de la tabla pueden contener en esa columna o bien el valor
nulo (ningÚn valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante un municipio que
no está en la tabla de municipios.
Esto es lo que se denomina integridad referencial (claves foráneas) debe ser correctos. La integridad referencial hace
que el sistema gestor de base de datos se asegure que no haya en las claves foráneas, valores que no estén en la tabla
principal.
Tip: Al crear muchas tablas relacionadas entre sí, es conveniente elegir un patrón de nomenclatura coherente para las
tablas y columnas. Por ejemplo, existe la opción de utilizar una combinación entre el nombre de la tabla y el atributo.
La clave externa, foránea, ajena o FOREIGN KEY, es una columna o varias columnas, que sirven para señalar cual
es la clave primaria de otra tabla.
La columna o columnas señaladas como FOREIGN KEY, solo podrán tener valores que ya existan en la clave
primaria PRIMARY KEY de la otra tabla.
P Á G I N A | 26
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
coddpto nomdpto
1 Recursos Humanos
2 Financiera
3 Secretaria General
Tabla empleado, con una clave externa FOREIGN KEY coddpto, que hace referencia a la clave primaria
coddpto de la tabla anterior departamento y por tanto, solo puede tener un valor de los que tiene en esa tabla
REFERENCES nombretabla(nombrecolumnapk)
P Á G I N A | 27
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Unique
Puede utilizar la restricción UNIQUE para asegurarse de que no hay valores duplicados en columnas específicas que no
participan en una clave principal.
Aunque tanto una restricción UNIQUE y una restricción PRIMARY KEY cumplen singularidad, utilice una restricción
UNIQUE en lugar de una restricción PRIMARY KEY cuando se quiere hacer cumplir la singularidad de una columna
o combinación de columnas, que no es la clave principal.
MÚltiples restricciones UNIQUE se pueden definir en una tabla, mientras que sólo una restricción
PRIMARY KEY se puede definir.
También, a diferencia de las restricciones PRIMARY KEY, UNIQUE permiten el valor NULL. Sin embargo, como
con cualquier valor de la participación en una restricción UNIQUE, sólo un valor nulo es permitido por la columna.
La columna email NO puede incluir valores duplicados, mientras dicha restricción no se aplica para columnas
apellido y nombre.
Por favor note que una columna que se especifica como clave primaria también puede ser Única. Al mismo tiempo,
una columna que es Única puede o no ser clave primaria.
P Á G I N A | 28
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Check
La restricción CHECK asegura que todos los valores en una columna cumplan ciertas condiciones.
Una restricción de comprobación es el tipo de restricción más genérico. Se le permite especificar que el valor de una
determinada columna debe satisfacer una expresión booleana (valor de verdad).
Exigir que la fecha de terminación del proyecto sea mayor a la de finalización o que sea nula significando que no se
ha terminado aÚn:
P Á G I N A | 29
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
La tabla producto cuenta con un código que está conformado por tres letras y tres nÚmeros separados por un
guion. Verifique mediante una restricción CHECK, si el código cumple con los requerimientos:
La tabla producto cuenta con un código que está conformado por tres letras (la primera letra solo puede ser A, B o C) y
tres nÚmeros separados por un guion. Verifique mediante una restricción CHECK, si el código cumple con los
requerimientos:
P Á G I N A | 30
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
La validación de un valor que representa la nota de un estudiante debe cumplir con el intervalo
DECIMAL de 0,0 a 5,0.
Validar que la fecha de manufactura sea menor que la fecha de compra, además, necesitamos que la fecha de
vencimiento sea mayor a la fecha de manufactura y la fecha de compra este entre la fecha de manufactura y la fecha
de vencimiento.
P Á G I N A | 31
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Al ingresar cadena de caracteres en el campo de día de la semana ingresado, validar que corresponde con los nombres
de los días de la semana.
P Á G I N A | 32
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Default
La restricción DEFAULT se utiliza para establecer un valor por defecto a una columna.
Si no se especifica un valor al insertar una fila, entonces se podrá el valor por defecto (DEFAULT) que tenga cada
columna.
Sintaxis Default
[ALTER TABLE nombretabla
Si el usuario final no ingresa la fecha de contratación de un empleado, se tomara por defecto la fecha actual,
utilizando la función CURRENT_DATE que permite retornar la fecha actual.
P Á G I N A | 33
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
ALTER TABLE
Para modificar la definición de una tabla se utiliza el comando ALTER TABLE. Las posibles modificaciones que se
pueden hacer sobre la definición de una tabla son añadir un nuevo atributo o modificar uno ya existente. Estas dos
operaciones se podrán realizar pero teniendo en cuenta una serie de restricciones que posteriormente se detallarán.
Tablas
Establecer dueño de la tabla
Esta forma cambia el propietario de la tabla al usuario especificado.
OWNER TO nuevodueño];
Renombrar tabla
La forma RENAME cambia el nombre de la tabla. No hay efectos sobre los datos almacenados.
RENAME TO nuevonombretabla];
Columnas
Agregar columna a una tabla
Esta forma agrega una nueva columna a la tabla.
P Á G I N A | 34
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Default
Establecer un valor por defecto
[ALTER TABLE nombretabla
Not Null
Establecer la restricción no nula sobre un campo
[ALTER TABLE nombretabla
P Á G I N A | 35
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
Constraints
P Á G I N A | 36
LENGUAJE DE DEFINICIÓN DE BASE DE
DATOS
DROP TABLE
La orden DROP TABLE seguida del nombre de una tabla, permite eliminar la tabla en cuestión.
El borrado de una tabla es irreversible, y no hay ninguna petición de confirmación, por lo que
conviene ser muy cuidadoso con esta operación.
Ejemplos:
P Á G I N A | 37