Está en la página 1de 25

2.

01
objetos de base de datos
 Constraints
 Indexes
 Roles
 Sequences
 Synonyms
 Tables
 Users
 Views

TABLA(Table): Una estructura que puede almacenar datos. Todos los datos están estructurados en
columnas y filas. Los tipos de datos de cada columna se definen explícitamente.

ÍNDICE (Index): un objeto diseñado para acelerar las búsquedas en una tabla, copia un monto
pequeño y selecto de la información ordenada para referencia rápidamente la vinculación sobre
la tabla fuente.

Vista (View): Un "filtro" a través del cual se puede buscar e interactuar con una tabla, pero no
almacena datos en sí, y simplemente sirve como una "ventana" para una o más tablas. Una vista
se utiliza para añadir una capa de seguridad al ocultar la verdadera fuente de la información,
además se puede utilizar para visualizar ciertas partes de una tabla, al tiempo que oculta otras
partes de la misma tabla.
SECUENCIA (SEQUENCE): un contador, a menudo utilizado para generar números únicos como
identificadores para las nuevas filas a medida que se añaden a una tabla.
SINÓNIMO (SYNONYM): un alias para otro objeto en la base de datos, de uso frecuente para
especificar un nombre alternativo para una tabla o vista.
RESTRICCIÓN (CONSTRAINT): Un poco de lógica definida por uno, para instruir a una tabla
particular acerca de cómo se va a aceptar, modificar o rechazar los datos entrantes.

USUARIOS (Users): Los "dueños" de los objetos de base de datos.

ROLES: Un conjunto de uno o más privilegios que se pueden conceder a un usuario.


“cada objeto de base de datos se considera ser un "objeto de esquema””

¿Qué es un esquema?
Un esquema es una colección de objetos de la base de datos de términos tales como tablas,
índices, y vistas, los cuales son propiedad de una cuenta de usuario.
Los objetos pertenecen a un usuario y el esquema es el conjunto de objetos
alojada en el mismo.

Esquema y los objetos que no son de esquema


Todos los objetos de la base de datos caen en una de dos categorías ó tipos.
Estos "tipos" son "esquema" y "no-esquema

La Tabla 2-1 muestra la lista de ambos "esquema" y "no-esquema"

“Esquema" los objetos que pueden ser propiedad de una cuenta de usuario.
"Non-esquema" los objetos no pueden ser propiedad de una cuenta de usuario.

Crear una tabla simple

El examen espera que usted sea capaz de reconocer el código correcto para crear una tabla
simple. Por "simple", Oracle quiere decir que se le requiere para definir el nombre de la tabla,
nombres de columnas, tipos de datos y todas las restricciones (constraints)

La sintaxis de la sentencia "CREATE objectType" esta declaración aparece en el siguiente listado


de código:

CREATE objectType objectName attributes;

Donde:

- objectType: es un objeto que aparece en la Tabla 2-1 (a excepción de restricción).

- objectName: es un nombre que ha especificado de acuerdo con las reglas de nomenclatura y


directrices descritas más adelante en este capítulo.
- attributes: es entre cero y una serie de cláusulas que son únicos para cada
Tipo de objeto individual, que vamos a revisar en otro momento

Ej:

CREATE TABLE work_schedule


(work_schedule_id NUMBER,
start_date DATE,
end_date DATE);

Si se va a ejecutar este comando en un esquema que no tuviera ya una tabla con el nombre
"work_schedule", entonces se obtendría el resultado que se muestra en
Figura 2-1.

Vamos a analizar la sintaxis del ejemplo anterior de una sentencia CREATE TABLE:
-La palabra reservada CREATE
-La palabra reservada TABLE
-El nombre de la tabla, elegido por uno, de conformidad con las normas de
nombrar objetos.
-Un par de paréntesis, en la que hay una serie de declaraciones de columna, cada uno
separados por una coma. Declaraciones de columna consisten en:
-El nombre de la columna, elegido por uno, de conformidad con las normas de
nombrar objetos
-El tipo de datos de la columna, tomado de la lista de tipos de datos disponibles
-una coma para separar cada definición de la columna de la siguiente
-Un punto y coma al final de la declaración, como es el caso de todas las sentencias SQL

Normas de denominación Básicas

 La longitud del nombre debe ser al menos un carácter, y no más de 30 caracteres.


 El primer carácter de un nombre debe ser una letra.
 Después de la primera letra, los nombres pueden incluir letras, números, signos de
dólar ($),el guión bajo (_) y el signo de número (#). No está permitido otros
caracteres especiales en cualquier parte del nombre.
 Los nombres no pueden ser palabras reservadas, que se utilizan en sentencias SQL
Sensibilidad a mayúsculas y comillas dobles

 Si el nombre no está encerrado entre comillas dobles cuando se crea, será tratado
como mayúscula, independientemente de cómo se crea o se hace referencia.
 Si un nombre está encerrado entre comillas dobles, es sensible y siempre debe
hacer referencia con mayúsculas y minúsculas y con doble comillas.

Ejemplo:

CREATE TABLE ports


(port_id NUMBER,
port_name VARCHAR2(20));

"ports" en las instrucciones SQL se aceptará ya sea en mayúsculas o en minúsculas .

SELECT * FROM ports;


and
SELECT * FROM PORTS;

Sin embargo, lo mismo no es cierto si se crea el objeto con comillas dobles:

CREATE TABLE "ports"


(port_id NUMBER,
port_name VARCHAR2(20));

SELECT * FROM "ports";

Pero estos no van a funcionar:


SELECT * FROM "PORTS";
SELECT * FROM ports;

Mediante el uso de comillas dobles, también puede incluir caracteres especiales que de otra
manera no se les permite, como espacios. Por ejemplo, este funcionará:

CREATE TABLE "Company Employees"


(employee_id NUMBER,
name VARCHAR2(35));

Pero recuerda que para referirse a la tabla después, se tiene que poner las comillas dobles, así:
SELECT * FROM "Company Employees";

En otras palabras, mediante el uso de comillas dobles, puede especificar objetos de base de datos
nombres que van más allá de las reglas de nomenclatura estándar de los objetos de Oracle. Pero
si lo hace, siempre tendrá que utilizar comillas dobles en todas las futuras consultas a ese objeto,
y tendrá que ser específico con respecto al caso de su objeto nombre.

Nombres únicos y espacios de nombres


El espacio de nombres es un límite lógico dentro de la base de datos que abarca una
conjunto determinado de objetos de base de datos. En realidad, hay varios espacios de
nombres en el trabajo en cualquier momento dado, dependiendo del contexto en el que se
está trabajando.

-USER, ROLE, and PUBLIC SYNONYM OBJECTS: están en su propio espacio colectivo
de nombres.
-TABLE, VIEW, SEQUENCE, PRIVATE SYNONYM, y tipos de objetos definidos por el
usuario: tienen su propio espacio de nombres único dentro de un esquema determinado.
- INDEX: tienen su propio espacio de nombres dentro de un esquema determinado.
- CONSTRAINT: tienen su propio espacio de nombres dentro de un esquema
determinado.
Lo que todo esto significa es que usted debe proporcionar nombres únicos para un objeto dentro
de su propio espacio de nombres.

- Si crea una tabla en un esquema denominado WORK_SCHEDULE, entonces


No se puede crear otra tabla llamada WORK_SCHEDULE dentro de ese mismo
esquema. Pero se puede hacer en otro esquema, siempre y cuando no exista ya una
WORK_SCHEDULE en ese esquema.

- Digamos que usted tiene un esquema denominado HR. (Como en Recursos Humanos.) En el
Esquema de recursos humanos, puede crear una tabla llamada PAYROLL. No se puede crear
una vista en ese mismo esquema llamado PAYROLL. Sin embargo, puede crear una
ÍNDICE llamado PAYROLL. También puede crear una restricción (constraint) llamado PAYROLL.
Pero no se puede crear una secuencia llamada PAYROLL.

- En la base de datos, cada USER debe tener un nombre único, como cada ROLE

System Assigned Names

Se puede crear un objeto indirecto. Esto sucede, por ejemplo, cuando se crea una tabla, y en la
sentencia CREATE TABLE opcionalmente se define un constraint asociado, pero sin proporcionar
un nombre para el CONSTRAINT. Algunos desarrolladores se refieren a estas restricciones como
"anónimo" (anonymous).

Es un buen diseño evitar la creación indirecta de los nombres generados automáticamente


siempre que sea posible. Esa es una manera indirecta de decir: asegúrese de nombrar todas las
bases de datos, objetos creados, incluyendo restricciones, índices y otros.

La instrucción SQL CREATE TABLE

CREATE TABLE cruises


( cruise_id NUMBER,
cruise_type_id NUMBER,
cruise_name VARCHAR2(20),
captain_id NUMBER NOT NULL,
start_date DATE,
end_date DATE,
status VARCHAR2(5) DEFAULT 'DOCK',
CONSTRAINT cruise_pk PRIMARY KEY (cruise_id) );
En este ejemplo, se crea una tabla con siete columnas y dos restricciones, a cada columna se le da
un nombre y tipo de datos, los tipos de datos proporcionan algunas reglas y los requisitos para
los datos que se entró en las columnas.

Por ejemplo, sólo se pueden introducir números en CRUISE_TYPE_ID.


Sólo los valores de fecha se pueden introducir en START_DATE.
Tenga en cuenta que la columna Estado tiene un valor por defecto de 'DOCK'. Si se agrega una fila
que no incluye un valor para el estado, entonces el valor será automáticamente asignado como
'DOCK'.
Al final de la sentencia CREATE TABLE es una línea adicional que crea una CONSTRAINT. Esta
restricción particular define la columna CRUISE_ID como clave principal, lo que significa que
cualquier fila que se agregue a la tabla cruises debe incluir un valor para CRUISE_ID, y ese valor
debe ser único, no puede estar duplicado. También hay una restricción NOT NULL que se aplica a
la columna CAPTAIN_ID, esa restricción no se mencionan explícitamente, pero es una limitación
, y se le asignará un nombre generado por el sistema.

Revise la estructura de la tabla


Sentencia DESC es útil para revisar rápidamente la estructura de una tabla.

CREATE TABLE cruises


( cruise_id NUMBER,
cruise_type_id NUMBER,
cruise_name VARCHAR2(20),
captain_id NUMBER NOT NULL,
start_date DATE,
end_date DATE,
status VARCHAR2(5) DEFAULT 'DOCK',
CONSTRAINT cruise_pk PRIMARY KEY (cruise_id) );
- "Name" y muestra las nombres de las columnas de la tabla.
- "Null?" Muestra si hay una restricción NOT NULL aplicado a la columna en particular en la tabla.
- "Type" y muestra el tipo de datos de columna de la tabla en particular de que se trate.

Por ejemplo, la salida DESC cruises nos muestra que la tabla cruises tiene una columna titulada
CAPTAIN_ID, su tipo de datos es number, y tiene como restricción un NOT NULL .

Lista de los tipos de datos que están disponibles para las columnas

El tipo de datos de columna define qué tipo de información es-y no es aceptada como entrada.
La mayoría de los tipos de datos son numéricos, caracteres o de fecha
Además de estos tres es una categoría mencionada como " Large Database Objects ", o tipos de
datos LOB. LOB puede incluir datos de carácter pero no pueden ser incluidos en primary key,
DISTINCT, GROUP BY, ORDER BY, o joins.

Character

 CHAR (n) El nombre de "char" Esta es una longitud fija valor alfanumérico. La n indica la
longitud del dato. Cuando no se manda un valor con la longitud n rellena con espacios en
blanco para asegurarse de que la longitud de su valor siempre será igual al valor de n.
Cualquier intento de introducir un valor que es mayor que n se traducirá en un error, y el
valor no será aceptado. La inclusión de n es opcional, si se omite en la declaración, se
tomara como 1, el valor máximo permitido para n es 2000.
 VARCHAR2 (n) El nombre de "varchar" es una especie de abreviatura de "Carácter
variable". Este de longitud variable. el n indica la longitud máxima permisible del valor
almacenado dentro, pero contrario a CHAR, VARCHAR2 el formato no se rellenará con sus
valores espacios en blanco. Su longitud varía en función de los datos que contiene,
VARCHAR2 n requiere que se determine. El valor mínimo de n es 1; La longitud máxima
permitida de VARCHAR2 es 4000.

Numeric

 n Number (n, m) acepta datos numéricos, incluyendo cero, números negativos, y


positivos, donde n es la "precisión", que es el número máximo de dígitos significativos
(en cualquier lado del punto decimal), y M es la "escala", es decir, el número total de
dígitos a la derecha del punto decimal, n y m son opcionales, por defecto n va hasta el
valor máximo, y M a cero. El valor de n puede variar de 1 a 38; el valor de m puede variar
desde -84 hasta 127. Si se introduce un valor que excede la escala declarada, el valor
introducido se completará (.5 se redondea hacia arriba) y aceptada

DATE

 Date: Acepta la información de fecha y hora. Los campos almacenados incluyen


año, mes, día, hora, minuto y segundo. Los valores de fecha se almacenan como
literales. Los literales de fecha se escriben entre comillas simples. El valor por defecto del
formato Oracle para una fecha se define por la NLS_DATE_FORMAT parámetro. El valor de
NLS_DATE_FORMAT se pueden visualizar con base de datos por el comando SHOW
PARAMETER NLS_DATE_FORMAT (Tenga en cuenta que el parámetro NLS_TERRITORY
también puede cambiar la configuración para NLS_DATE_FORMAT-su valor se puede
visualizar con el comando show NLS_TERRITORY) El NLS_DATE_FORMAT puede
cambiarse con ALTER SESSION o ALTER SYSTEM, por defecto, las instalaciones en los
EE.UU. y el Reino Unido utiliza la NLS_DATE_FORMAT de 'DD-MON-RR', donde DD es el
día de dos dígitos, MON con tres letras es la abreviatura para el mes, y RR es el año de
dos dígitos, donde los valores de RR comprendida entre 00 y 49 se supone que en el siglo
21 (2000 a 2049), mientras que valores de RR que van de 50 a 99 se supone que están en
la
Siglo 20 (1950 a 1999). Por ejemplo, '10-NOV-10 'es el primer de
Tof noviembre de 2010. (Nota: La misma fecha en formato ANSI es '2010-11-
01 '. Formato ANSI es 'AAAA-MM-DD', donde AAAA es el año de cuatro dígitos,
MM es el mes de dos dígitos, y DD es el día de dos dígitos.)

TIMESTAMP (n): es una extensión de DATE que añade precisión de fracciones de segundo.
Así: año, mes, día, horas, minutos y segundos y fracciones de segundo. El valor de n indica la
precisión de fracciones de segundos. El rango para n es 1-9. Si n se omite, el valor
predeterminado es un valor de 6.

TIMESTAMP(n) WITH TIME ZONE: Una variación de TIMESTAMP que añade ya sea una
zona horaria nombre de una región, o un desplazamiento de la zona horaria. TIMESTAMP WITH
TIME ZONE se utiliza en el seguimiento de información de la fecha en diferentes zonas horarias y
zonas geográficas. El rango para n es 1-9. Si n se omite, el valor predeterminado es un valor de 6.

TIMESTAMP(n) WITH LOCAL TIME ZONE: En este la zona horaria no está


almacenado con el valor de la columna, y el valor recuperado es enviado en el de sesión de
usuario de zona horaria local. El desplazamiento se calcula automáticamente. Si n se omite, el
valor predeterminado es un valor de 6

INTERVAL YEAR(n) TO MONTH: almacena un lapso de tiempo definido en año


solamente y valores del mes, donde n es el número de dígitos utilizados para definir el
valor del año. El rango de valores aceptables para n es 0-9; el predeterminado para n es
2. Este tipo de datos es útil para almacenar la diferencia entre dos valores de fecha.

INTERVAL DAY(n1) TO SECOND(n2): Almacena un lapso de tiempo definido en


días, horas, minutos y segundos, donde n1 es la precisión durante días,
y n2 es la precisión de segundos. El rango de valores de n1 es 0-9, y el valor
predeterminado es 2. El valor de n1 especifica cuántos dígitos son aceptadas en la
declaración del tamaño de un número para el día a ser especificado. El valor de n2 es la
precisión de fracciones de segundo para el segundo, los valores aceptables oscilan entre
0 a 9, y el valor predeterminado es 6. Útil para almacenar la diferencia entre dos valores
de fecha.

Datetime Field Range of Valid Values


YEAR -4712 A 9,999 (sin incluir el año 0)
MONTH 01 a 12
DAY 01 a 31 (Limitado en su caso durante los meses en los que
hay menos de 31 días, de acuerdo a los valores de MES y
AÑO.)

HOUR 00 a 23
MINUTE 00 a 59
SECOND 00 a 59,9 (n), donde 9 (n) es la precisión de tiempo en
fracciones de segundo. La parte-9 (n)-no aplica para DATE

TIMEZONE_HOUR -12 A 14. Diseñado para adaptarse a los cambios en el


horario de verano. No se aplica a DATE o TIMESTAMP.

TIMEZONE_MINUTE 00 a 59. No se aplica a DATE o TIMESTAMP.


TIMEZONE_REGION La lista de valores posibles aquí se contiene en la columna
TZNAME del diccionario de datos de vista V $
TIMEZONE_NAMES. Ejemplos: 'America / Chicago', 'Australia /
Queensland. No se aplica a DATE o TIMESTAMP.

TIMEZONE_ABBR La lista de valores posibles aquí se contiene en la columna


TZABBREV del diccionario de datos de vista V $
TIMEZONE_NAMES. Ejemplos: "CWT", "LMT". No se aplica a
DATE o TIMESTAMP.

Heads up: los tipos de datos que manejan las diferencias horarias son muy importantes
para el examen, se hace referencia expresa en uno de los objetivos de la certificación.

Large Objects (LOBs)

BLOB acepta grandes objetos binarios, como imágenes o archivos de


vídeo. Declaración se hace sin precisión o escala. El tamaño máximo se
calcula por medio de una fórmula que incluye varios elementos, incluyendo
un tamaño de partida de 4 GB, algo que se llama el parámetro Chunk. LOB
se puede utilizar generalmente como otros tipos de datos. Las tablas
pueden tener varias columnas con tipos de datos LOB. Sin embargo, los
LOB no pueden ser claves primarias, no podrán utilizarse con grupo
distinto, BY, ORDER BY, o join.

CLOB acepta grandes elementos de datos de texto. Declaración se hace sin


precisión o escala. Tamaño máximo se calcula de la misma manera que espara el
tipo de datos BLOB

NCLOB Acepta datos CLOB en Unicode. Tamaño máximo se calcula de la misma


manera que lo es para el tipo de datos BLOB. En cuanto a Unicode es un
conjunto de caracteres que sirve como alternativa a ASCII y representa un
estándar más universal que soporta todos los principales idiomas con más
facilidad que las otras puestas en práctica en la actualidad.
He aquí un ejemplo de una tabla que incluye una columna del tipo de datos
CLOB:

CREATE TABLE
CRUISE_NOTES
(CRUISE_NOTES_ID
NUMBER,
CRUISE_NOTES CLOB);

Por ejemplo, puede agregar más de una columna LOB en una tabla, puede
utilizar sentencias SELECT, se puede insertar en las tablas con columnas LOB, y
eliminar filas con valores LOB. Sin embargo, no puede utilizar los LOB en GROUP
BY u ORDER BY.

Usted puede crear una CONSTRAINT para apoyar otros objetos, especialmente
objetos de tabla. no hay un CREATE CONSTRAINT. En su lugar, se crea una
restricción como parte de otro estado, como CREATE TABLE o ALTER TABLE

CREATE TABLE positions


( position_id NUMBER
, position VARCHAR2(20)
, exempt CHAR(1)
, CONSTRAINT positions_pk PRIMARY KEY (position_id)
);

Existen dos formas en las que se puede crear una CONSTRAINT, Creación de la
tabla: "en línea" y "fuera de línea".

en línea":
CREATE TABLE PORTS
(PORT_ID

NUMBER PRIMARY KEY,


PORT_NAME VARCHAR2(20));

CONSTRAINT anónima PRIMARY KEY en la columna ID_de_Puerto.


Constraint con nombre:

CREATE TABLE PORTS


(PORT_ID NUMBER CONSTRAINT
PORT_ID_PK PRIMARY KEY, PORT_NAME
VARCHAR2(20));

CREATE TABLE
VENDORS
(VENDOR_ID

NUMBER,
VENDOR_NAME VARCHAR2(20),
STATUS

NUMBER(1) NOT NULL,


CATEGORY

VARCHAR2(5));

El resultado de esta limitación es asegurar que para la columna STATUS deben ser
incluidos con cada fila dentro de VENTORS. El valor puede ser cero o cualquier otro de un
solo dígito, pero debe ser proporcionado y no puede ser NULO. Aquí está la misma tabla
con un nombre asignado a la restricción:

CREATE TABLE
VENDORS
(VENDOR_ID

NUMBER,
VENDOR_NAME VARCHAR2(20),
STATUS NUMBER(1)
CONSTRAINT STATUS_NN NOT NULL, CATEGORY
VARCHAR2(5));

Usted puede combinar múltiples declaraciones de restricción en una sentencia CREATE


TABLE, así:

CREATE TABLE VENDORS


(VENDOR_ID

NUMBER

PRIMARY KEY, VENDOR_NAME

VARCHAR2(20),
STATUS NUMBER(1)
CONSTRAINT STATUS_NN NOT NULL, CATEGORY
VARCHAR2(5));
Tenga en cuenta que si no se proporciona un nombre para una restricción, el sistema le
asignará uno automáticamente, y será algo como esto:
SYS_C009981

Create tabLe: “out of Line” Constraints


He aquí un ejemplo de una clave principal definida con el "fuera de línea":

CREATE TABLE PORTS


(PORT_ID

NUMBER,
PORT_NAME

VARCHAR2(20), PRIMARY KEY


(PORT_ID) );

Tenga en cuenta que el "fuera de línea" requiere que usted indique qué columna (o
columnas) se ven afectados por la restricción.

con nombre:
CREATE TABLE PORTS
(PORT_ID
NUMBER,
PORT_NAME VARCHAR2(20),
CONSTRAINT PORT_ID_PK PRIMARY KEY (PORT_ID) );

La sentencia CREATE TABLE no es la única manera de crear una restricción. Las


restricciones también se pueden crear mediante la instrucción ALTER TABLE. Por
ejemplo, lo primero que puede crear la tabla PORTS como esto:

CREATE TABLE PORTS (PORT_ID NUMBER,


PORT_NAME VARCHAR2(20));
Después, podemos alterar la tabla para añadir una restricción, modificando la definición
de una columna:

ALTER TABLE PORTS


MODIFY PORT_ID PRIMARY KEY;

En el código anterior, estamos modificando la declaración de la propia columna mediante


la adición de la clave principal y dejar que el sistema asigne un nombre. Esa es la
sintaxis ALTER equivalente a esto:

CREATE TABLE PORTS


(PORT_ID

NUMBER PRIMARY KEY,


PORT_NAME VARCHAR2(20));
Además, podemos utilizar ALTER para hacer lo mismo con un nombre de restricción que
le asignamos, así:
ALTER TABLE PORTS
MODIFY PORT_ID CONSTRAINT PORT_ID_PK PRIMARY KEY;
Esos son los "en línea" equivalentes de ALTER TABLE. Aquí están los "fuera de línea"
equivalentes. En primer lugar, en función de un nombre definido por el sistema:

ALTER TABLE PORTS


ADD PRIMARY KEY (PORT_ID);
Alternativamente, podemos nombrar la restricción de nosotros mismos:
ALTER TABLE PORTS
ADD CONSTRAINT PORT_ID_PK PRIMARY KEY (PORT_ID);

Warning: not nuLL is Different


Estamos a punto de ver los cinco diferentes tipos de limitaciones, pero antes de hacerlo,
una palabra de advertencia acerca de las variaciones de sintaxis para una restricción
particular: la
Restricción NOT NULL es un poco diferente cuando se trata de la sintaxis. El NOT NULL
restricción no puede ser creado "fuera de línea". En otras palabras, esto no es válido:
CREATE TABLE
PORTS (PORT_ID

NUMBER,
PORT_NAME

VARCHAR2(20), NOT
NULL

(PORT_ID) );
Esto también es inválido:

CREATE TABLE
PORTS (PORT_ID

NUMBER,
PORT_NAME VARCHAR2(20),
CONSTRAINT PORT_ID_NN NOT NULL (PORT_ID) );

Cualquiera de los que producen mensajes de error si intenta ejecutar cualquiera de ellos.
Ninguna tabla o restricción se creará. Y, sin embargo, la misma sintaxis es perfectamente
bien para otros tipos de restricciones. Por ejemplo, aquí está la restricción UNIQUE:

CREATE TABLE PORTS


(PORT_ID

NUMBER,
PORT_NAME VARCHAR2(20),
CONSTRAINT PORT_ID_UN UNIQUE (PORT_ID) );
Y por supuesto, esto está muy bien, también-esta es la restricción PRIMARY KEY:

CREATE TABLE PORTS


(PORT_ID

NUMBER,
PORT_NAME VARCHAR2(20),
CONSTRAINT PORT_ID_PK PRIMARY KEY (PORT_ID) );
Así NOT NULL no se pueden declarar con el "fuera de línea" en formato. Los otros
pueden. Pero espere, hay más acerca de NOT NULL. Esto no va a funcionar bien:
ALTER TABLE PORTS
ADD NOT NULL (PORT_NAME);
Y esto no podrá:
ALTER TABLE PORTS
ADD CONSTRAINT PORT_NAME_NN NOT NULL (PORT_NAME);
Los que no va a funcionar porque son los equivalentes ALTER TABLE para "fuera de
línea". Pero el ALTER TABLE "en línea" equivalentes están muy bien:

ALTER TABLE PORTS


MODIFY PORT_NAME NOT NULL;

EXAM:

ALTER TABLE PORTS


MODIFY PORT_NAME CONSTRAINT PORT_NAME_NN NOT NULL;

Así que ten cuidado. NOT NULL es un poco inusual. Es una restricción válida y se
puede crear con las otras formas de sintaxis, pero no con el "fuera de línea".

Tipos Constraints
Hay varios tipos de restricciones que se pueden aplicar a una tabla. Son los siguientes:
PRIMARY KEY, FOREIGN KEY, NOT NULL, CHECK, y UNIQUE.

not nuLL
La restricción NOT NULL es muy simple: cuando se aplica a una columna, se asegura
que para cualquier fila que se agrega a la tabla, la columna sobre la que se aplica la
restricción NOT NULL siempre deberán estar provistos de un valor.
No quiere decir "cero" o "blanco",
Por ejemplo, considere una tabla que contiene los nombres de los clientes:

CREATE TABLE CUSTOMERS


( FIRST_NAME

VARCHAR2(20),
MIDDLE_NAME
VARCHAR2(20),
LAST_NAME

VARCHAR2(30));
Vamos a añadir una fila a la siguiente tabla:

INSERT INTO CUSTOMERS (FIRST_NAME, LAST_NAME) VALUES ('Angelina', 'Ellison');


Tenga en cuenta que ningún valor se proporciona aquí para MIDDLE_NAME. Cuando
esto sucede, a continuación, en ausencia de otra información, la base de datos almacena
un valor NULL en su lugar.
Considere la siguiente expresión:

CRUISE_PRICE * DISCOUNT
La respuesta es NULL. La razón es simple: "300" multiplicado por "Yo no sé"
resultados en. . . "No lo sé".NULL.

Volvamos a nuestro ejemplo anterior. Si se hubiera aplicado una restricción NOT


NULL
a la columna MIDDLE_NAME de la tabla CLIENTES, entonces nunca lo

uniQue
La restricción UNIQUE, cuando se aplica a una columna, garantiza que los datos
añadidos a la columna en el futuro será único en comparación con los datos ya
existentes en la columna.
n UNIQUE se puede aplicar a una columna o varias columnas.
n UNIQUE, por sí mismo, permite valores NULL que se añaden a la columna

Tenga en cuenta que la restricción PRIMARY KEY representa la combinación de


NOT NULL y UNIQUE. Utilice la restricción PRIMARY KEY en lugar de las
restricciones NOT NULL UNIQUE y si su intención es crear un único identificador
único para cada fila de la tabla.

Composite uniQue Constraint Usted puede crear una restricción UNIQUE


que se aplica a varias columnas a la vez. Esto tiene el efecto de requerir que la
combinación de columnas que ser único.

PriMarY KeY
La clave principal define una o más columnas en una tabla que formarán el identificador
único para cada fila de datos que se agregan a la tabla. La restricción PRIMARY KEY es
una combinación de las restricciones NOT NULL y UNIQUE.
Una tabla puede tener sólo una restricción PRIMARY KEY.
CREATE TABLE employees
( employee_id NUMBER
, ship_id NUMBER
, first_name VARCHAR2(20)
, last_name VARCHAR2(30)
, position_id NUMBER
, CONSTRAINT employees_pk PRIMARY KEY (employee_id));
cualquier fila que se agrega a la tabla de empleados en el futuro será necesario
un valor único para cada fila agregada.

Composite Primary Keys Una clave principal se basa en


dos o más columnas que sirven colectivamente el mismo propósito que una sola
columnaPRIMARY KEY.

CREATE TABLE HelpDesk


( HD_Category

NUMBER, HD_Year

NUMBER, HD_Ticket_No NUMBER,


HD_Title

VARCHAR2(30),
CONSTRAINT HelpDesk_PK PRIMARY KEY (HD_Category,
HD_Year, HD_Ticket_No));

FOREIGN KEY

Una restricción FOREIGN KEY se aplica a una o varias columnas de una tabla en particular, y
trabaja en conjunto con la restricción PRIMARY KEY de otra tabla. Una clave externa es la
característica que ayuda a asegurar que las dos tablas se "corresponden" a la otra.
-Se identifica una o más columnas en la tabla actual.
- Para cada una de esas columnas, también identifica una o más columnas correspondientes en
una segunda tabla.
- Se asegura de que la otra tabla ya tiene una clave principal (o única)
restricción en las columnas correspondientes en la tabla segundos.
- A continuación, se asegura de que todos los valores futuros agregados a los de clave externa con
restricciones de columnas de la tabla actual ya están almacenados en las columnas
correspondientes de la segunda tabla.

En otras palabras, una restricción FOREIGN KEY, junto con la restricción PRIMARY KEY
en la segunda tabla hace referencia, aplica la "integridad referencial" entre las dos
tablas.

Nota: la tabla de referencia no es realmente necesario tener una restricción PRIMARY


KEY en las columnas referenciadas, pero sólo una restricción UNIQUE en la columna de
referencia

PORT_ID PORT_NAME COUNTRY CAPACITY


------- --------- ------- --------
1 Baltimore USA 2
2 Charleston USA 2
3 Tampa USA 8
4 Miami USA 6
5 Galveston USA 4

A continuación, una lista de información de la tabla SHIPS:

SHIP_ID SHIP_NAME HOME_PORT_I


------- ---------- D
------------
1 Codd Crystal 1
2 Codd Elegance 3
3 Codd Champion 4
4 Codd Victorious 4

01 CREATE TABLE PORTS


02 (PORT_I NUMBER,
03 PORT_N VARCHAR2(20),
04 COUNTR VARCHAR2(40),
05 CAPACIT NUMBER,
06 CONSTR PORT_PK PRIMARY KEY (PORT_ID));
AINT SHIPS:
A continuación, la tabla
07 CREATE TABLE SHIPS
08 (SHIP_ID NUMBER,
09 SHIP_NAME VARCHAR2(20),
10 HOME_PORT_ID NUMBER,
11 CONSTRAINT SHIPS_PORTS_FK FOREIGN KEY (HOME_PORT_ID)
12 REFERENCES PORTS (PORT_ID));

Tenga en cuenta que la cláusula de restricción de clave externa en la declaración


CREATE TABLE SHIPS comienza en la línea 11 y continúa a través de la línea 12. Hace
referencia a la columna de la tabla PORT_ID, que ya tiene una restricción PRIMARY KEY
que se le aplica. Si no tuviera ya sea una restricción PRIMARY KEY o una restricción
UNIQUE en ella, entonces la sentencia CREATE TABLE SHIPS se producirá un error y le
hará saber que la tabla PORTS ya debe existir y debe tener una restricción PRIMARY
KEY o UNIQUE en la columna PORT_ID.
FOREIGN KEY en SHIPS se asegura de que cualquier fila agregada a la tabla SHIPS
sólo aceptará valores para HOME_PORT_ID si ese valor ya existe en la
tabla PORTS. Tenga en cuenta que el valor HOME_PORT_ID no es necesario, si su
meta
es asegurar que el valor HOME_PORT_ID siempre está disponible, tendrás que también
añadir una restricción NOT NULL en HOME_PORT_ID así como FOREIGN KEY. esta
es una manera de hacerlo:
07 CREATE
TABLE SHIPS
08 (SHIP_ID
09 SHIP_NAME R2(20),
10 HOME_PORT NOT NULL,
11 _ID NUMBER PORTS_FK FOREIGN KEY (HOME_PORT_ID)
CONSTRAINT
12 REFERENCES PORTS (PORT_ID));

CHeCK
Una restricción CHECK concede una expresión a una restricción. En otras
palabras, se aplica un poco de código para definir una regla de negocio en
particular en las filas de entrada de datos. Una restricción CHECK puede, por
ejemplo, restringir los datos entrantes de modo que todos los valores de entrada
se requieren para ser mayor que un cierto valor mínimo, o caer
dentro de un conjunto de opciones predeterminadas.
CREATE TABLE VENDORS (VENDOR_ID NUMBER,
VENDOR_NAME VARCHAR2(20),
STATUS NUMBER(1) CHECK (STATUS IN (4,5)), CATEGORY VARCHAR2(5));

Multiple Constraints
Una tabla se puede declarar, con múltiples CONSTRAINTS. He aquí un ejemplo:
CREATE TABLE VENDORS
(VENDOR_ID NUMBER CONSTRAINT VENDOR_ID_PK PRIMARY KEY, VENDOR_NAME
VARCHAR2(20) NOT NULL,
STATUS NUMBER(1) CONSTRAINT STATUS_NN NOT NULL, CATEGORY VARCHAR2(20),
CONSTRAINT STATUS_CK CHECK (STATUS IN (4, 5)), CONSTRAINT CATEGORY_CK CHECK
(CATEGORY IN ('Active','Suspended','Inactive')));

En el ejemplo anterior, tenemos una declaración CREATE TABLE simple que crea una
tabla con cinco restricciones:

n Un usuario llamado PRIMARY KEY en Vendor_id


n Un sistema llamado restricción NOT NULL en VENDOR_NAME
n Un usuario llamado restricción NOT NULL en STATUS
n Dos restricciones CHECK: uno sobre la STATUS y en CATEGORY

Cualquier tabla solo puede tener una sola restricción PRIMARY KEY. Puede tener
cualquier otra combinación de restricciones.

Datatype restrictions

t Datatype not uniQue PriMar foreig CHeCK


nuL Y KeY n
L KeY
TIMESTAMP WITH TIME — NO NO NO —
ZONE

BLOB — NO NO NO —
CLOB — NO NO NO —

Clasifique los objetos de base de datos principal


* Tablas de almacenamiento de datos.
* Las restricciones son reglas sobre las tablas.
* Vistas son como una especie de "ventana" sobre tablas.
* Los índices de búsqueda brindan u apoyo para acelerar las consultas en una tabla,
como un índice para un libro.
* Las secuencias son simples objetos de contador.
*Sinónimos son nombres alternativos para los objetos existentes.
* Los usuarios son objetos que poseen otros objetos.
*Roles son un conjunto de derechos o privilegios que se pueden conceder a un usuario
para que dé acceso al usuario a otros objetos.
* Los objetos pueden ser "esquema" o "no" objetos de esquema.
* Las tablas, vistas, índices, secuencias, sinónimos privados son "esquema" de objetos.
* Los usuarios y roles, así como sinónimos públicos, son "no" objetos de esquema.

Crear una tabla simple


* La sentencia CREATE TABLE se utiliza para crear una tabla.
* Se asigna un nombre a una tabla utilizando las reglas de denominación de objetos de
bases de datos.
* También asignar nombres a las columnas de la tabla utilizando las mismas reglas.
* Todas las tablas tienen al menos una columna.

Revisar la estructura de la tabla


* El comando DESC se puede utilizar para mostrar la estructura de una tabla.
* La estructura incluye el nombre de la tabla, las columnas de la tabla, los tipos de datos
y las restricciones opcionales.

Enumere los tipos de datos que están disponibles para las columnas
* Cada columna debe tener asignado un tipo de datos.
Tipos de datos * Incluye numérico, el carácter y los tipos de fecha, como VARCHAR2,
NUMBER y DATE.
* Tipos de datos también incluyen los tipos de objetos grandes, como BLOB.

Explicar cómo las restricciones se crean en el momento de creación de la


tabla
*Los tipos de restricciones son NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN
KEY y CHECK.
*Una columna con una restricción NOT NULL se debe asignar un valor para cada
fila que se agrega a la tabla.
*Una restricción UNIQUE requiere que si los datos se añade a una columna para
una fila dada, que los datos deben ser únicos para cualquier valor existente ya en
la columna.
*Una restricción PRIMARY KEY es la combinación de NOT NULL y
UNIQUE.
*Una PRIMARY KEY puede ser asignada a una o más columnas.
*Una PRIMARY KEY asignado a varias columnas se denomina clave compuesta.
*Una sola tabla puede tener sólo una PRIMARY KEY.
*Una FOREIGN KEY se correlaciona una o más columnas de una tabla con un
conjunto de columnas similares en una segunda tabla.
*FOREIGN KEY requiere que la segunda tabla ya tiene una PRIMARY KEY
asignado a las columnas correlacionadas antes del FOREIGN KEY puede ser
creado.
*Una vez creada, la clave externa se asegura de que todos los valores agregados
a la tabla coincidirá con los valores existentes en las columnas de clave principal
de la segunda tabla.
*CONSTRAINTS se pueden crear con la instrucción CREATE TABLE o dentro de
la instrucción ALTER TABLE.
* CONSTRAINTS se pueden definir como parte de la columna "en línea" o
después de "fuera de línea".

También podría gustarte