Upload
francisco-reyes-valente
View
216
Download
0
Embed Size (px)
Citation preview
8/20/2019 Base de datos SQL Cap8-2
1/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--11 SQL Server Básico
Creación yCreación y
Mantenimiento de tablasMantenimiento de tablas
Parte 8Parte 8
Parte 8 SQL-Server BásicoPágina 1 de 29
8/20/2019 Base de datos SQL Cap8-2
2/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--22 SQL Server Básico
ObjetivosObjetivos
Al completar esta lección, deberá ser capaz deAl completar esta lección, deberá ser capaz de
hacer lo siguiente :hacer lo siguiente :
Describir los objetos de una base deDescribir los objetos de una base de
datosdatos
Crear tablasCrear tablas
Describir los tipos de datos disponiblesDescribir los tipos de datos disponibles
en la creación de tablasen la creación de tablas
Alterar la definición de tablasAlterar la definición de tablas
Borrar tablasBorrar tablas
Parte 8 SQL-Server BásicoPágina 2 de 29
8/20/2019 Base de datos SQL Cap8-2
3/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--33 SQL Server Básico
Objetos en una Base de DatosObjetos en una Base de Datos
Objeto Descripción
Tabla Unidad básica de almacenamiento;
compuesta de renglones
Vista Representación lógica de un grupo de
datos de una o más tablas
Indíce Para mejorar el desempeño de los queries
Objetos de la base de datos
Una base de datos en Microsoft SQL Server puede contener diferentes estructurasde datos. Cada estructura pertenecerá a la base de datos, y pueden ser lossiguientes tipos:
• Tabla: almacena datos• Vista: sub-conjunto datos de una o mas tablas• Índice: Para mejorar el rendimiento de los queries.
Parte 8 SQL-Server BásicoPágina 3 de 29
8/20/2019 Base de datos SQL Cap8-2
4/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--44 SQL Server Básico
La instrucción CREATE TABLELa instrucción CREATE TABLE
Debe especificar :Debe especificar :
El nombre de la tablaEl nombre de la tabla
El nombre de las columnas, tipo y tamañoEl nombre de las columnas, tipo y tamaño
CREATE TABLE table
(column datatype [DEFAULT expr ]);
La instrucción CREATE TABLE
Utilice la instrucción CREATE TABLE para crear tablas y almacenar datos. Estainserción pertenece al lenguaje de definición de datos (DDL). Las instrucciones DDLson un subconjunto de instrucciones de SQL utilizadas para crear, modificar o
eliminar tablas de la base de datos. Estas instrucciones tiene un efecto inmediato enla base de datos.
Para crear una tabla, debe tener privilegios para crear objetos. El administrador de labase de datos, utiliza las instrucciones del lenguaje de definición de datos (DDL),para otorgar privilegios a los usuarios.
Sintaxis: Table Es el nombre de la tablaDEFAULT expr Especificar un valor por default si el valor es
omitido en instrucción INSERT
Column Es el nombre de la columnaDatatype Es el tipo y longitud de la columna
Parte 8 SQL-Server BásicoPágina 4 de 29
8/20/2019 Base de datos SQL Cap8-2
5/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--55 SQL Server Básico
La Opción DEFAULTLa Opción DEFAULT
Debe de especificar un valor por default para unaDebe de especificar un valor por default para una
columna durante su insercióncolumna durante su inserción..
… hiredate DATETIME DEFAULT GETDATE(), …
• Los valores permitidos son literales,
expresiones o funciones de SQL.
• Valores no permitidos son nombres de
columnas.
•
El valor por default debe ser del mismotipo que la columna.
La opción default
A una columna se le puede dar un valor por default utilizando la opción DEFAULT.Esta opción previene la inserción de valores NULL, si se inserta un renglón sin unvalor indicado para esta columna. El valor por default puede ser una literal, una
expresión o una función SQL; tales como GETDATE() o USER_NAME(). Laexpresión por default debe coincidir con el tipo de dato de la columna.
Parte 8 SQL-Server BásicoPágina 5 de 29
8/20/2019 Base de datos SQL Cap8-2
6/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--66 SQL Server Básico
Reglas para el nombradoReglas para el nombrado
Deben de empezar con una letraDeben de empezar con una letra
Deben contener sólo caracteres ADeben contener sólo caracteres A--Z,Z,
00--9, _, y #9, _, y #
No se deben duplicar los nombresNo se deben duplicar los nombres
de otros objetos del mismo usuariode otros objetos del mismo usuario
No deben ser palabras reservadasNo deben ser palabras reservadas
Reglas para el nombrado
Los nombres de tablas y columnas deben cumplir las siguientes reglas de nombrado:
- Deben empezar con una letra- Deben contener solo caracteres A-Z, 0-9, _, y #- No se deben duplicar los nombres de otros objetos del mismo usuario- No deben ser palabras reservadas de Microsoft SQL Server.
Parte 8 SQL-Server BásicoPágina 6 de 29
8/20/2019 Base de datos SQL Cap8-2
7/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--77 SQL Server Básico
Creando TablasCreando Tablas
CREATE TABLE dept2
(deptno NUMERIC(2),dname VARCHAR(14),
loc VARCHAR(13));
• Confirm table creation.• Confirm table creation.SELECT convert(char(15),name) name, type,
prec, scale, isnullable 'null?'
FROM syscolumns
WHERE id = object_id('dept2');
name type prec scale null?
--------------- ---- ------ ----------- -----------
DEPTNO 108 2 0 1
DNAME 39 14 1
LOC 39 13 1
Creando Tablas
El ejemplo crea la tabla DEPT, con tres columnas (DEPTNO, DNAME y LOC). Paraconfirmar la creación de la tabla ejecute el query mostrado en el ejemplo.
Parte 8 SQL-Server BásicoPágina 7 de 29
8/20/2019 Base de datos SQL Cap8-2
8/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--88 SQL Server Básico
Tipos de datosTipos de datos
Datatype Descripción
VARCHAR(size) Caracter de longitud-Variable
CHAR(size) Caracter de longitud-Fija
NUMERIC( p,s) Datos numéricos
DATETIME Valores tipo fecha y hora
TEXT Dato tipo caracter de longitud-Variablehasta 2 gigabytes
IMAGE Dato Binario con una longitudmáxima hasta 2,147,483,647 bytes
Parte 8 SQL-Server BásicoPágina 8 de 29
8/20/2019 Base de datos SQL Cap8-2
9/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--99 SQL Server Básico
La instrucciónLa instrucción ALTER TABLEALTER TABLE
Utilice lUtilice la instruccióna instrucción ALTER TABLE para :ALTER TABLE para : Agregar nuevas columnasAgregar nuevas columnas
Eliminar una columna existenteEliminar una columna existente
Definir un valor por default para una nuevaDefinir un valor por default para una nuevacolumnacolumna
ALTER TABLE table
ADD column datatype [DEFAULT expr ]
[, column datatype]...;
ALTER TABLE table
DROP COLUMN column;
La instrucción ALTER TABLE
Después de que haya creado las tablas, puede necesitar realizar cambios en lasestructuras, en el caso de que le hayan faltado columnas. Puede hacer estoutilizando las instrucción ALTER TABLE. Puede agregar columnas utilizando la
instrucción ALTER TABLE con la cláusula ADD.
Sintaxis: Table Es el nombre de la tablaDEFAULT expr Especificar un valor por default si el valor es
omitido en instrucción INSERTColumn Es el nombre de la columnaDatatype Es el tipo y longitud de la columna
Puede eliminar columnas existentes en la tabla utilizando la instrucción ALTER
TABLE con la cláusula de DROP.
Parte 8 SQL-Server BásicoPágina 9 de 29
8/20/2019 Base de datos SQL Cap8-2
10/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1010 SQL Server Básico
Agregando ColumnasAgregando Columnas
EMPEMP
EMPNO ENAME SAL HIREDATE------ ---------- --------7698 BLAKE 34200 01-MAY-817654 MARTIN 15000 28-SEP-817499 ALLEN 19200 20-FEB-817844 TURNER 18000 08-SEP-81
...
“…agregar“…agregaruna nuevauna nuevacolumna a lacolumna a latabla EMP…”tabla EMP…”
DEPT30DEPT30
EMPNO ENAME SAL HIREDATE------ ---------- --------
7698 BLAKE 34200 01-MAY-817654 MARTIN 15000 28-SEP-817499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81...
AGE
AGE AGE
Nueva columnaNueva columna
Agregando columna
El ejemplo agrega la columna JOB a la tabla DEPT30. Note que la nueva columna secoloca al final de las columnas en la tabla.
Parte 8 SQL-Server BásicoPágina 10 de 29
8/20/2019 Base de datos SQL Cap8-2
11/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1111 SQL Server Básico
Agregando una ColumnaAgregando una Columna
Utilice la cláusula ADD para agregar columnas.Utilice la cláusula ADD para agregar columnas.
EMPNO ENAME SAL HIREDATE AGE
--------- ---------- --------- --------- ----
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81
7499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81
...6 rows selected.
EMPNO ENAME SAL HIREDATE AGE
--------- ---------- --------- --------- ----
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81
7499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81
...6 rows selected.
ALTER TABLE EMP
ADD AGE VARCHAR(9);
¿Cuál es la Nueva Columna?
Agregando una columna
El ejemplo agrega una columna llamada JOB a la tabla DEPT30, esta columna secoloca al final de la tabla.
NOTA. Si la tabla ya contiene registros, esta nueva columna será inicializada conNULL en todos los registros existentes.
Parte 8 SQL-Server BásicoPágina 11 de 29
8/20/2019 Base de datos SQL Cap8-2
12/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1212 SQL Server Básico
Borrando una TablaBorrando una Tabla
Cualquier cambió pendiente seráCualquier cambió pendiente será
completadocompletado
Todos los índices serán borradosTodos los índices serán borrados
No puede deshacer los efectos de estaNo puede deshacer los efectos de estainstruccióninstrucción
DROP TABLE dept2;
Borrando una tabla
La instrucción DROP TABLE elimina una tabla de la bases de datos. Cuando eliminauna tabla, pierde todos los datos y los índices asociados con ella.
La instrucción DROP TABLE, una vez ejecutada, es irreversible. Microsoft SQLServer no pregunta si desea confirmar esta acción.
Parte 8 SQL-Server BásicoPágina 12 de 29
8/20/2019 Base de datos SQL Cap8-2
13/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1313 SQL Server Básico
Incluyendo ConstraintsIncluyendo Constraints
¿Q¿Qué es un Constraintué es un Constraint??
Los constraints son restricciones a nivel de tablasLos constraints son restricciones a nivel de tablas
los constraints previenen borrados de una tabla silos constraints previenen borrados de una tabla siexisten dependencias.existen dependencias.
Los siguientes tipos de constraints están disponiblesLos siguientes tipos de constraints están disponiblesen Microsoft SQL Server.en Microsoft SQL Server.
NOT NULLNOT NULL
UNIQUEUNIQUE KeyKey
PRIMARY KEYPRIMARY KEY
FOREIGN KEYFOREIGN KEY
CHECKCHECK
Constraints
Microsoft SQL Server utiliza constraints para prevenir la inserción de datos inválidosen las tablas.
Parte 8 SQL-Server BásicoPágina 13 de 29
8/20/2019 Base de datos SQL Cap8-2
14/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1414 SQL Server Básico
Reglas para la creación deReglas para la creación de
ConstraintsConstraints
Otorgue un nombre a los constraints, deOtorgue un nombre a los constraints, de
otra forma Microsoft SQL Server generaráotra forma Microsoft SQL Server generará
un nombre propioun nombre propio
Puede crear un constraint:Puede crear un constraint:
Al momento en que crea una tablaAl momento en que crea una tabla
Después de que la tabla ha sidoDespués de que la tabla ha sido
creadacreada
Defina un constraint a nivel de columna oDefina un constraint a nivel de columna o
de tablade tabla
Constraints (continuación)
Todos los constraints son almacenados en el diccionario de datos. Los constraintsserán fáciles de referenciar si les otorga un nombre adecuado. Para asignar unnombre a un constraint debe utilizar las reglas estándar para el nombrado de objetos
de base de datos. Si no asigna un nombre al constraint, Microsoft SQL Server leasigna un nombre interno, lo cual puede confundir al momento de obtener errores.
Los constraint pueden ser definidos al momento en que es creada la tabla odespués de haberla creado.
Parte 8 SQL-Server BásicoPágina 14 de 29
8/20/2019 Base de datos SQL Cap8-2
15/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1515 SQL Server Básico
DefiniendoDefiniendo ConstraintsConstraints
CREATE TABLE table(column datatype [DEFAULT expr ]
[column_constraint],
…
[table_constraint]);
CREATE TABLE emp(
empno NUMERIC(4),
ename VARCHAR(10) NOT NULL,
comm MONEY,
...
deptno NUMERIC(7,2),
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));
Definiendo Constraints
El ejemplo muestra la sintaxis para definir constraint mientras se crea una tabla.
Sintaxis:
Table Es el nombre de la tablaDEFAULT expr Especificar un valor por default si el valor es
omitido en instrucción INSERTColumn Es el nombre de la columnaDatatype Es el tipo y longitud de la columnacolumn_constraint Es la restricción como parte de la definición
de la columnatable_constraint Es la restricción como parte de la definición
de la tabla.
Parte 8 SQL-Server BásicoPágina 15 de 29
8/20/2019 Base de datos SQL Cap8-2
16/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1616 SQL Server Básico
ElEl ConstraintConstraint NOT NULLNOT NULL
Asegura que valoresAsegura que valores nullnull no sean almacenados enno sean almacenados enuna columna.una columna.
EMPEMP
NOT NULLNOT NULL constraintconstraint(ningún renglón puede(ningún renglón puedecontener valorescontener valores nullnull enenesta columna).esta columna).
Ausencia delAusencia delconstraintconstraint NOT NULLNOT NULL(cualquier renglón(cualquier renglónpuede contenerpuede contener nullnullen esta columna).en esta columna).
EMPNO ENAME JOB ... COMM DEPTNO
7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...
Constraint NOT NULL
El constraint NOT NULL asegura que valores nulos no sean permitidos en unacolumna. Las columnas que no tengan este constraint pueden grabar valores nonulos.
Parte 8 SQL-Server BásicoPágina 16 de 29
8/20/2019 Base de datos SQL Cap8-2
17/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1717 SQL Server Básico
ElEl ConstraintConstraint NOT NULLNOT NULL
Definido a nivel de columnaDefinido a nivel de columna
CREATE TABLE emp(
empno NUMERIC(4),
ename VARCHAR(10) NOT NULL,
job VARCHAR(9),
mgr NUMERIC(4),
hiredate DATETIME,
sal NUMERIC(7,2),
comm NUMERIC(7,2),
deptno NUMERIC(2)
);
Constraint NOT NULL (continuación)
El constraint NOT NULL solo puede ser especificado a nivel columna, no a niveltabla.
El ejemplo aplica el constraint NOT NULL a las columnas ENAME y DEPTNO de latabla EMP. Debido a que estos constraint no tienen nombre, Microsoft SQL Serverles asigna uno
Puede especificar el nombre del constraint al momento de crearlo.
… deptno NUMERIC(7,2)CONSTRAINT emp_deptno_nn NOT NULL…
Parte 8 SQL-Server BásicoPágina 17 de 29
8/20/2019 Base de datos SQL Cap8-2
18/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1818 SQL Server Básico
ElEl ConstraintConstraint UNIQUEUNIQUE KeyKey
DEPTDEPT
DEPTNO DNAME LOC------ ---------- --------
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON
UNIQUEUNIQUE keykey constraintconstraint
50 SALES DETROIT
60 BOSTON
InsertInsert intointo No permitidoNo permitido(DNAME(DNAME−SALESya existe)ya existe)
PermitidoPermitido
Constraint UNIQUE KEY
Un constraint UNIQUE Key requiere que cada valor en la columna o conjunto decolumnas sea único, es decir, dos renglones de la misma tabla no pueden tener elvalor duplicado en la columna o columnas especificadas como UNIQUE.
El constraint UNIQUE permite la inserción de valores nulos a menos que defina unconstraint NOT NULL para la misma columna, de hecho, cualquier renglón puedeincluir valores NOT NULL en las columnas debido a que NOT NULL no esconsiderado igual a otro NOT NULL. Un valor NULL en una columna (o en lascolumnas compuestas por UNIQUE) siempre satisfacen la restricción UNIQUE.
Parte 8 SQL-Server BásicoPágina 18 de 29
8/20/2019 Base de datos SQL Cap8-2
19/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--1919 SQL Server Básico
ElEl ConstraintConstraint UNIQUEUNIQUE KeyKey
Definido ya sea a nivel columna o a nivelDefinido ya sea a nivel columna o a niveltablatabla
CREATE TABLE dept(
deptno NUMERIC(2),
dname VARCHAR(14),
loc VARCHAR(13),
CONSTRAINT dept_dname_uk UNIQUE(dname));
Constraint UNIQUE key (continuación)
El constraint UNIQUE puede ser definido a nivel columna o a nivel tabla. Un UNIQUEcompuesto por dos o mas columnas debe ser creado utilizando la definición a nivelde tabla.
El ejemplo aplica un constraint UNIQUE a la columna de DNAME de la tabla DEPT.El nombre del constraint es dept_dname_uk.
Parte 8 SQL-Server BásicoPágina 19 de 29
8/20/2019 Base de datos SQL Cap8-2
20/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2020 SQL Server Básico
ElEl ConstraintConstraint PRIMARY KEYPRIMARY KEY
DEPTDEPT
DEPTNO DNAME LOC------ ---------- --------
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON
PRIMARY KEYPRIMARY KEY
InsertInsert intointo
20 MARKETING DALLAS
FINANCE NEW YORK
No permitidoNo permitido(DEPTNO(DEPTNO−2020ya existe)ya existe)
No permitidoNo permitido
(DEPTNO es(DEPTNO es nullnull))
Constraint PRIMARY KEY
El constraint PRIMARY KEY crea la llave primaria de la tabla. Solo puede existir unallave primaria por cada tabla. El constraint PRIMARY KEY es una columna o conjuntode columnas que identifican en forma única a cada registro en la tabla. Este
constraint forza a que los valores de la columna o columnas sean únicos y que nocontengan valores nulos.
Parte 8 SQL-Server BásicoPágina 20 de 29
8/20/2019 Base de datos SQL Cap8-2
21/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2121 SQL Server Básico
ElEl ConstraintConstraint PRIMARY KEYPRIMARY KEY
CREATE TABLE dept(
deptno NUMERIC(2),
dname VARCHAR(14),
loc VARCHAR(13),
CONSTRAINT dept_dname_uk UNIQUE (dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
Definido ya sea a nivel columna o a nivelDefinido ya sea a nivel columna o a niveltablatabla
Constraint PRIMARY KEY (continuación)
El constraint PRIMARY KEY puede ser definido a nivel columna o a nivel tabla. Sinembargo, una llave primaria compuesta solo debe ser creada a nivel de tabla.
El ejemplo crea una llave primaria en la columna DEPTNO para la tabla DEPT.
Nota. Un índice único es creado implícitamente con el constraint PRIMARY KEY.
Parte 8 SQL-Server BásicoPágina 21 de 29
8/20/2019 Base de datos SQL Cap8-2
22/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2222 SQL Server Básico
ElEl ConstraintConstraint FOREIGN KEYFOREIGN KEY
DEPTDEPT
DEPTNO DNAME LOC------ ---------- --------
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS
...
PRIMARYPRIMARYKEYKEY
EMPEMP
EMPNO ENAME JOB ... COMM DEPTNO
7839 KING PRESIDENT 107698 BLAKE MANAGER 30...
FOREIGNFOREIGNKEYKEY
7571 FORD MANAGER ... 200 97571 FORD MANAGER ... 200
InsertInsert intointo
No permitidoNo permitido(DEPTNO(DEPTNO 99no existe en lano existe en latabla DEPTtabla DEPT
PermitidoPermitido
Constraint FOREIGN KEY
El constraint FOREIGN KEY, o regla de integridad referencial, designa una columnao combinación de columnas, como una llave foránea y establece una relación entreuna llave primaria en la misma tabla o en una tabla diferente. En el ejemplo,
DEPTNO ha sido definida como la llave foránea en la tabla EMP (tabla dependiente otabla hija), hace referencia a la columna (DEPTNO de la tabla DEPT (tabla padre otabla referenciada).
El valor de una llave foránea debe coincidir con un valor existente en la tablapadre o ser nula. Las llaves foráneas están basadas en valores y son apuntadorespuramente lógicos, no físicos.
Parte 8 SQL-Server BásicoPágina 22 de 29
8/20/2019 Base de datos SQL Cap8-2
23/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2323 SQL Server Básico
TheThe FOREIGN KEYFOREIGN KEY ConstraintConstraint
CREATE TABLE emp(
empno NUMERIC(4),
ename VARCHAR(10) NOT NULL,
job VARCHAR(9),
mgr NUMERIC(4),
hiredate DATETIME,
sal NUMERIC(7,2),
comm NUMERIC(7,2),
deptno NUMERIC(7,2),
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
REFERENCES dept (deptno));
Definido ya sea a nivel columna o a nivelDefinido ya sea a nivel columna o a niveltablatabla
Constraint FOREIGN KEY (continuación)
El constraint FOREIGN KEY puede ser definido a nivel columna o a nivel tabla. Sinembargo una llave foránea compuesta debe ser creada a nivel de tabla.
El ejemplo define una llave foránea en la columna DEPTNO de la tabla EMP.
Parte 8 SQL-Server BásicoPágina 23 de 29
8/20/2019 Base de datos SQL Cap8-2
24/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2424 SQL Server Básico
FOREIGN KEYFOREIGN KEY ConstraintConstraint
KeywordsKeywords
FOREIGN KEYFOREIGN KEY
Define que columna en la tabla "hijo" seráDefine que columna en la tabla "hijo" será
FOREING KEY cuando el constraint sea aFOREING KEY cuando el constraint sea a
nivel tablanivel tabla
REFERENCESREFERENCES
Identifica a la tabla y columna que haceIdentifica a la tabla y columna que hacereferencia en la tabla "padre"referencia en la tabla "padre"
Constraint FOREIGN KEY (continuación)
Una llave foránea se define en una tabla “hijo” y la tabla que contiene la columnareferenciada es denominada tabla “padre”. La llave foránea es definida utilizando unacombinación de las siguientes palabras reservadas:
• FOREIGN KEY. Es utilizada par definir la columna en la tabla hijo a nivel detabla
• REFERENCES. Identifica a la tabla y columna en la tabla padre, se utiliza yasea a nivel de columna o a nivel de tabla.
Parte 8 SQL-Server BásicoPágina 24 de 29
8/20/2019 Base de datos SQL Cap8-2
25/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2525 SQL Server Básico
ElEl ConstraintConstraint CHECKCHECK
Define una condición que cada renglónDefine una condición que cada renglóndebe cumplir debe cumplir
..., deptno NUMERIC(2),
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
Constraint CHECK
El constraint CHECK define una condición que cada renglón debe cumplir. Lacondición puede ser definida al igual que las condiciones de los queries.
Una simple columna puede tener múltiples constraint CHECK, no hay limite para elnúmero de constraint CHECK que defina para una columna.
Parte 8 SQL-Server BásicoPágina 25 de 29
8/20/2019 Base de datos SQL Cap8-2
26/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2626 SQL Server Básico
AgregandoAgregando ConstraintsConstraints
Agregue o elimine , pero no modifiqueAgregue o elimine , pero no modifique
unun constraintconstraint
ALTER TABLE table
ADD [CONSTRAINT constraint_nombre] type (column);
ALTER TABLE table
ADD [CONSTRAINT constraint_nombre] type (column);
Agregando constraints
Puede agregar constraints a las tablas existentes utilizando la excepción ALTER
TABLE con la cláusula ADD.
Sintaxis: Table Es el nombre de la tablaColumn Es el nombre de la columnaType Es el tipo de constraintConstraint Es el nombre del constraint.
El nombre del constraint es opcional, sin embargo se recomienda asignar uno. Si nodefine un nombre al constraint, el sistema genera uno para este constraint.
Parte 8 SQL-Server BásicoPágina 26 de 29
8/20/2019 Base de datos SQL Cap8-2
27/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2727 SQL Server Básico
AgregandoAgregando ConstraintsConstraints
Agregue un constraint FOREIGN KEY a laAgregue un constraint FOREIGN KEY a latabla empleados indicando que debe existirtabla empleados indicando que debe existir
un manager válido para este empleado en laun manager válido para este empleado en la
tabla.tabla.
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(mgr) REFERENCES emp(empno);
Agregando constraints (continuación)
El ejemplo crea un constraint FOREIGN KEY en la tabla EMP. Este constraintasegura que debe existir un manager válido en la tabla EMP para un empleado.
Parte 8 SQL-Server BásicoPágina 27 de 29
8/20/2019 Base de datos SQL Cap8-2
28/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2828 SQL Server Básico
Eliminando unEliminando un ConstraintConstraint
Elimine elElimine el constraintconstraint de manager de lade manager de latabla EMP.tabla EMP.
ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk;
ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk;
Eliminando un Constraint
Para eliminar un constraint, debe identificar el nombre con el que fue asignado,entonces utilice la instrucción ALTER TABLE con la cláusula DROP.
Parte 8 SQL-Server BásicoPágina 28 de 29
8/20/2019 Base de datos SQL Cap8-2
29/29
Creación y Mantenimiento de Tablas 8Creación y Mantenimiento de Tablas 8--2929 SQL Server Básico
PrácticasPrácticas
Crear nuevas tablasCrear nuevas tablas
Agregar reglas de integridad, paraAgregar reglas de integridad, pararelacionar las tablasrelacionar las tablas
PRACTICA 8
1. Cree una base de datos Haga el esquema de creación de tablas para unmodelo Entidad-Relación. (El profesor lo indicará)
2. Haga el esquema de creación de tablas para el modelo E-R del apéndice A.