Las limitaciones de Oracle son principalmente mantener la integridad de los datos a nivel de lógica empresarial. Principalmente por parte de los programadores para especificar restricciones en la aplicación o definir activadores para mantener la integridad de los datos y, finalmente, utilizar las propias restricciones de Oracle para mantener la integridad de los datos. Si puede utilizar las restricciones propias de Oracle para cumplir con los requisitos, intente utilizar las restricciones propias de Oracle, porque el uso de restricciones definidas por el usuario, como activadores, afectará el rendimiento de la base de datos. Por ejemplo: cuando se utilizan activadores, la tabla se bloqueará y se realizarán escaneos de tabla o de índice, lo que reducirá el rendimiento y la concurrencia de la base de datos.
Las restricciones de Oracle se dividen principalmente en los siguientes tipos:
no nulo restricción no nula, restricción única única, restricción de clave primaria, restricción de clave externa, restricción de clave externa, restricción de verificación.
no nulo restricción no nula:
Método de creación: 1. Definir a nivel de columna al crear la tabla (es decir, solo puede escribir la definición de la restricción después de la columna al definir la tabla), 2 métodos. Uno usa nombres de restricciones personalizados y el otro usa nombres predeterminados del sistema.
¿Ver copia simple en el portapapeles?
crear tabla t
(
la restricción del número tid(8) NK_t1 no es nula,
tname varchar2(10) no nulo
)
crear tabla t
(
la restricción del número tid(8) NK_t1 no es nula,
tname varchar2(10) no nulo
)
¿Ver copia simple en el portapapeles?
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
NK_T1 T HABILITADO NO APLAZABLE
SYS_C003735 T HABILITADO NO APLAZABLE
SQL>
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
NK_T1 T HABILITADO NO APLAZABLE
SYS_C003735 T HABILITADO NO APLAZABLE
SQL>
2. Modifique la tabla después de crearla, pero asegúrese de que los datos de la tabla no violen las restricciones.
¿Ver copia simple en el portapapeles?
SQL> alterar tabla t modificar tid no nulo;
Tabla alterada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
SYS_C003736 T HABILITADO NO APLAZABLE
SQL>
SQL> alterar tabla t modificar tid no nulo;
Tabla alterada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
SYS_C003736 T HABILITADO NO APLAZABLE
SQL>
comprobar restricciones
Método de creación: se puede definir a nivel de tabla y a nivel de columna (se puede definir después de la columna o después de definir la columna). También hay 2 formas de definición.
¿Ver copia simple en el portapapeles?
SQL> crear tabla t
2 (
3 número tid(8),
4 tname varchar2(10),
5 verificación de restricción CK_T1 ((tid no es nulo) y (tid> 0))
6)
7/
Tabla creada
SQL> alterar tabla t agregar restricción CK_T2 check (tname no es nulo);
Tabla alterada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
CK_T1 T HABILITADO NO APLAZABLE
CK_T2 T HABILITADO NO APLAZABLE
SQL>
SQL> crear tabla t
2 (
3 número tid(8),
4 tname varchar2(10),
5 verificación de restricción CK_T1 ((tid no es nulo) y (tid> 0))
6)
7/
Tabla creada
SQL> alterar tabla t agregar restricción CK_T2 check (tname no es nulo);
Tabla alterada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO APLAZABLE
-------------------------------------------------- ------ ----------------
CK_T1 T HABILITADO NO APLAZABLE
CK_T2 T HABILITADO NO APLAZABLE
SQL>
La restricción CK_T1 garantiza que la columna tid no puede estar vacía y es mayor que 0, y CK_T2 garantiza que iname no puede estar vacío. Las restricciones de verificación también pueden ser reglas entre diferentes columnas de la misma fila.
restricción única
Método de creación: si una columna única contiene solo una columna, se puede definir a nivel de columna. Si una columna única contiene varias columnas, solo se puede definir a nivel de tabla.
¿Ver copia simple en el portapapeles?
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 restricción VK_T2 única (vname,vsex)
7)
8/
Tabla creada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.validated, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO VALIDADO APLAZADO
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 HABILITADO VALIDADO NO DIFERIBLE
VK_T2 T2 HABILITADO VALIDADO NO DIFERIBLE
SQL>
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 restricción VK_T2 única (vname,vsex)
7)
8/
Tabla creada
SQL> seleccione t.constraint_name, t.table_name, t.status, t.validated, t.deferrable de user_constraints t;
CONSTRAINT_NAME NOMBRE_TABLA ESTADO VALIDADO APLAZADO
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 HABILITADO VALIDADO NO DIFERIBLE
VK_T2 T2 HABILITADO VALIDADO NO DIFERIBLE
SQL>
Cuando se crea la restricción única, se generará un índice (puede ser un índice único, por lo que también puede ser un índice no único, dependiendo de si la tabla se especifica al crear la tabla para verificar las restricciones de datos inmediatamente cuando se se insertan datos):
¿Ver copia simple en el portapapeles?
SQL> seleccione t.index_name, t.table_name, t.uniqueness de user_indexes t;
INDEX_NAME TABLE_NAME UNICIDAD
---------- ---------- ----------
VK_T1 T2 ÚNICO
VK_T2 T2 ÚNICO
SQL> seleccione t.index_name, t.table_name, t.uniqueness de user_indexes t;
INDEX_NAME TABLE_NAME UNICIDAD
---------- ---------- ----------
VK_T1 T2 ÚNICO
VK_T2 T2 ÚNICO
Dado que existe un índice, puede especificar la ubicación de almacenamiento del índice y algunos parámetros de almacenamiento al crear la tabla.
¿Ver copia simple en el portapapeles?
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 restricción VK_T2 única (vname,vsex) usando índice de espacio de tabla indx
7 almacenamiento (100k iniciales, siguientes 100k pctincrease 0)
8 no registrar
9)
10/
Tabla creada
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 restricción VK_T2 única (vname,vsex) usando índice de espacio de tabla indx
7 almacenamiento (100k iniciales, siguientes 100k pctincrease 0)
8 no registrar
9)
10/
Tabla creada
El espacio de tabla donde se almacena el índice restringido es el espacio de tabla indx, el tamaño del bloque inicial es 100k y no se generan registros para las operaciones dml (pero también se generan registros por otras razones, pero hay menos registros que el registro predeterminado)
clave primaria restricción de clave primaria
Método de creación: la clave principal se compone principalmente de no nula y unicidad. Una tabla solo puede contener una clave principal, pero una clave principal puede contener varias columnas.
¿Ver copia simple en el portapapeles?
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 clave principal VK_T2 de restricción (vname, vsex) usando el índice del espacio de tabla indx
7 almacenamiento (100k iniciales, siguientes 100k pctincrease 0)
8 no registrar
9)
10/
Tabla creada
SQL> crear tabla t2
2 (
3 restricción de número de vídeo VK_T1 única,
4 nombre de usuario varchar2(10),
5vsex varchar2(10),
6 clave principal VK_T2 de restricción (vname, vsex) usando el índice del espacio de tabla indx
7 almacenamiento (100k iniciales, siguientes 100k pctincrease 0)
8 no registrar
9)
10/
Tabla creada
clave externa clave externa
Método de creación: las tablas involucradas en la clave externa pueden tener dos o una tabla. En el caso de dos tablas, la clave a la que hace referencia un campo en una tabla secundaria debe ser la clave principal en la tabla más grande. La restricción se establece en la tabla secundaria, lo que indica que el valor en el campo de la tabla debe existir en la tabla principal o ser un valor NULL.
¿Ver copia simple en el portapapeles?
SQL> crear departamento de tabla
2 (
3 hicieron el número (8),
4 nombre varchar2(20),
5 restricciones clave primaria PK_DEPT (hizo)
6)
7/
Tabla creada
SQL>
SQL> crear tabla emp
2 (
3 clave principal del número eid (8),
4 nombre varchar2(20),
5 hizo el número(8) /*departamento de referencias(hizo)*/,
6 nombre varchar2(20),
7 restricción FK_EMP2 clave externa (did) hace referencia al departamento (did)
8)
9/
Tabla creada
SQL> crear departamento de tabla
2 (
3 hicieron el número (8),
4 nombre varchar2(20),
5 restricciones clave primaria PK_DEPT (hizo)
6)
7/
Tabla creada
SQL>
SQL> crear tabla emp
2 (
3 clave principal del número eid (8),
4 nombre varchar2(20),
5 hizo el número(8) /*departamento de referencias(hizo)*/,
6 nombre varchar2(20),
7 restricción FK_EMP2 clave externa (did) hace referencia al departamento (did)
8)
9/
Tabla creada
Dado que la clave externa (clave externa) está determinada por la clave de referencia (clave de referencia), habrá restricciones al realizar operaciones de actualización, eliminación, eliminación y otras en la tabla fater. Específicamente, está determinado por el estado de las restricciones de clave externa.
eliminar en acción, eliminar en cascada, eliminar conjunto nulo
Eliminar en acción es la configuración predeterminada. Si elimina los datos en la tabla fater, Oracle bloqueará la tabla de palabras y luego escaneará la tabla (si hay una columna de clave externa, escaneará el índice) y luego los datos no existirán. la columna de clave externa en la tabla secundaria. Se permite la eliminación.
eliminar cascada también elimina la fila correspondiente en la tabla de palabras.
eliminar conjunto nulo, los datos correspondientes a la columna de clave externa en la tabla de barras se vuelven NULL.
¿Ver copia simple en el portapapeles?
crear tabla emp
(
número de eid (8) clave principal,
nombre varchar2 (20),
hizo el número(8) /*departamento de referencias(did)*/,
nombre varchar2(20),
restricción FK_EMP2 clave externa (did) hace referencia al departamento (did) al eliminar conjunto nulo
)
crear tabla emp
(
número de eid (8) clave principal,
nombre varchar2 (20),
hizo el número(8) /*departamento de referencias(did)*/,
nombre varchar2(20),
restricción FK_EMP2 clave externa (did) hace referencia al departamento (did) al eliminar conjunto nulo
)