Base de datos SQL Cap8-2

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.