t4 - lenguaje ddl

20

Click here to load reader

Upload: daniel-santiago-martinez

Post on 08-Jul-2015

648 views

Category:

Education


1 download

DESCRIPTION

Lenguaje DDL, CREATE, DROP, ALTER, MySQL

TRANSCRIPT

Page 1: T4 - Lenguaje DDL

Tema – 4Lenguaje DDL

Page 2: T4 - Lenguaje DDL

Índice

1. Introducción.

2. Creación de una base de datos.

3. Borrado de una base de datos.

4. Creación de tablas.

1. Definiciones de columnas.

2. Restricciones.

5. Modificación de tablas.

6. Sentencia RENAME.

7. Sentencia TRUNCATE.2

Page 3: T4 - Lenguaje DDL

4.1. Introducción

• El lenguaje de definición de datos (Data Definition Language) es la herramienta que nos ofrecen los SGBD para crear la estructura donde guardaremos los datos.

• Las operaciones que nos ofrece DDL para trabajar con la estructura de la base de datos son:– CREATE– ALTER– DROP– SHOW

3

Page 4: T4 - Lenguaje DDL

4.2. Creación de una base de datos

• La orden para crear una base de datos nueva y vacía es:– CREATE DATABASE nombre_bdd

• Podemos ver las bases de datos en nuestro servidor con la orden:– SHOW DATABASES

• Una vez creada una base de datos, ya podremos agregarle tablas.

4

Page 5: T4 - Lenguaje DDL

4.3. Borrado de una base de datos

• La orden para borrar una base de datos es:– DROP DATABASE nombre_bdd

• La orden DROP borra de forma irreversible una base de datos, por tanto debemos usarla cuidadosamente.

• Al borrar la base de datos es obvio que perderemos todos los datos que se guardaban en ella.

5

Page 6: T4 - Lenguaje DDL

4.4. Creación de tablas

• Es importante que seleccionemos la base de datos en la que queremos crear la tabla antes de su creación. Lo haremos con la orden:– USE nombre_bdd

• Crearemos tablas con la orden:– CREATE TABLE nombre_tabla (

Lista de columnas con sus definiciones)

6

Page 7: T4 - Lenguaje DDL

4.4. Creación de tablas

• La información de cada columna de la tabla se separa de la información de la siguiente columna mediante una coma. La lista completa de columnas debe encerrarse entre paréntesis.

• Cada nombre de columna debe seguirse de su tipo de datos y cualquier otra definición requerida.

7

Page 8: T4 - Lenguaje DDL

4.4.1. Definiciones de columnas

• NOT NULL: esta columna debe tener un valor, no puede estar vacía.

• DEFAULT value: si no se indica ningún otro valor, value se almacena en la columna cuando se crea la fila.

• AUTO_INCREMENT: conforme se crean filas, el valor de esta columna se incrementará a partir de la última fila que se agregó.

• UNSIGNED: los valores de esta columna nunca serán negativos.

• UNIQUE: el valor de es columna es único para todas las filas de la tabla (no hay repeticiones).

8

Page 9: T4 - Lenguaje DDL

4.4.2. Restricciones

• Para asegurar la integridad referencial de los datos tenemos varios tipos de restricciones. Se suelen definir en el momento de crear la tabla, pero también se pueden modificar, añadir y eliminar con posterioridad.

• La sintaxis general para definir restricciones es:– CONSTRAINT nombre_restricción TIPO_RESTRICCIÓN

• Cada restricción lleva asociado un nombre identificador (no se puede repetir en una misma base de datos). Este nombre es opcional, si no se especifica en la creación de la restricción el SGBD le asigna un nombre.

9

Page 10: T4 - Lenguaje DDL

4.4.2. Restricciones

• Restricción de llave primaria: define la llave primaria de la tabla. Sólo se puede poner una restricción de este tipo por tabla.– CONSTRAINT nombre PRIMARY KEY (columna1, columna2, …)– También podemos añadir la restricción de llave primaria en la

definición de la columna, añadiendo PRIMARY KEY.– Obviamente una llave primaria no puede ser nula (NOT NULL).

• Restricción de unicidad: antes hemos visto la restricción UNIQUE para una única columna. Si queremos que la unicidad se refiera a un conjunto de columnas, definiremos una restricción:– CONSTRAINT nombre UNIQUE (columna1, columna2, …)

10

Page 11: T4 - Lenguaje DDL

4.4.2. Restricciones

• Restricción de integridad referencial: con ella se define la llave foránea de una tabla, en caso de tenerla.– CONSTRAINT nombre FOREIGN KEY (columna1, columna2, …)

REFERENCES tabla (columna1, columna2, …)– El grupo de columnas que se especifican en el primer paréntesis hacen

referencia a las columnas de la propia tabla que estamos creando, y el grupo que aparece en el segundo paréntesis se refieren a campos de la tabla a la cual se quiere referenciar.

– Si una llave foránea está compuesta por una única columna, también podemos crear la restricción en la definición de la propia columna, añadiendo REFERENCES tabla (columna).

11

Page 12: T4 - Lenguaje DDL

4.4.2. Restricciones

• Restricción de integridad referencial: podemos acompañar las restricciones de tipo FOREIGN KEY con:– ON DELETE acción: define la actuación automática del SGBD sobre las filas de

nuestra tabla que se ven afectadas por una eliminación de las filas a las que hacen referencia.

– ON UPDATE acción: define la actuación automática del SGBD sobre las filas de nuestra tabla que se ven afectadas por una modificación de las filas a las que hacen referencia.

– Las acciones que se pueden realizar son:• NO ACTION o RESTRICT: es la opción por defecto, no permite la eliminación o

actualización de datos en la tabla a la que se referencia.• CASCADE: cuando se modifica o elimina una fila, las filas que la referencian se

modifican o eliminan automáticamente.• SET NULL: cuando se modifica o elimina una fila, las filas que la referencian se

actualizan a NULL.

12

Page 13: T4 - Lenguaje DDL

4.4. Creación de tablas

• Ejemplo:– CREATE TABLE Alumno (

matricula INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

dni varchar(9) NOT NULL UNIQUE,

nombre varchar (50),

apellido varchar (50),

edad INT UNSIGNED,

nota_media int DEFAULT 5,

tutor INT NOT NULL,

CONSTRAINT FK_Alumno_Tutor FOREIGN KEY (tutor) REFERENCES Tutor(codigo));

13

Page 14: T4 - Lenguaje DDL

4.4. Creación de tablas

• Ejemplo: la tabla anterior representa un alumno.– Se ha especificado un número de matrícula que será el

identificador (PRIMARY KEY) del alumno, que se generará automáticamente (AUTO_INCREMENT).

– El dni del alumno es un campo con valor único (UNIQUE).– La edad es un entero positivo (UNSIGNED).– La nota media será un entero que, en caso de no especificarlo,

su valor será 5.– El alumno tendrá obligatoriamente (NOT NULL) un tutor, que

hará referencia a los datos de otra tabla Tutor (FOREIGN KEY).

14

Page 15: T4 - Lenguaje DDL

4.4. Creación de tablas

• Después de haber creado una tabla podemos querer verla, revisar su estructura o borrarla.

• Para ver las tablas de una base de datos:– SHOW TABLES

• Para ver la estructura de una tabla:– SHOW COLUMNS FROM nombre_tabla

• Para borrar una tabla:– DROP TABLE nombre_tabla

15

Page 16: T4 - Lenguaje DDL

4.5. Modificación de tablas

• Después de haber creado una tabla, podremos cambiarle el nombre, agregar, eliminar o renombrar una columna, o cambiar el tipo de datos y cualquier otro atributo de la columna.

• La estructura básica de la orden para modificar una tabla es:– ALTER TABLE nombre_tabla

16

Page 17: T4 - Lenguaje DDL

4.5. Modificación de tablas

• Añadir una columna a una tabla:– ALTER TABLE Alumno ADD campo INT

• Añadir una descripción a una columna:– ALTER TABLE Alumno ALTER campo SET DEFAULT 5

• Eliminar el valor predeterminado de una columna:– ALTER TABLE Alumno ALTER campo DROP DEFAULT

• Cambiar el nombre y la definición de una columna:– ALTER TABLE Alumno CHANGE campo campo2 float(8,2)

• Modificar la definición de una columna conservando su nombre:– ALTER TABLE Alumno MODIFY campo2 float(10,2)

• Eliminar una columna de una tabla:– ALTER TABLE Alumno DROP campo2

• Modificar el nombre de una tabla:– ALTER TABLE Alumno RENAME Estudiante

17

Page 18: T4 - Lenguaje DDL

4.5. Modificación de tablas

• Añadir una restricción a una tabla:– ALTER TABLE Alumno ADD CONSTRAINT FK_Alumno_Delegado FOREIGN KEY

(cod_delegado) REFERENCES Alumno(codigo_alumno);

• Eliminar una restricción de una tabla:– ALTER TABLE Alumno DROP FOREIGN KEY FK_Alumno_Delegado;

• Eliminar llaves primarias de una tabla:– ALTER TABLE Alumno DROP PRIMARY KEY;

18

Page 19: T4 - Lenguaje DDL

4.6. Sentencia RENAME

• Hemos visto que con la sentencia ALTER podemos modificar el nombre de una tabla de nuestra base de datos.

• MySQL proporciona además la sentencia RENAME para el mismo propósito. Su sintaxis es la siguiente:– RENAME nombre_actual TO nombre_nuevo;

• Podemos usar la sentencia RENAME para renombrar varias tablas:– RENAME table_1 TO table_1.0, table_2 TO table_2.0;

19

Page 20: T4 - Lenguaje DDL

4.7. Sentencia TRUNCATE

• La sentencia TRUNCATE elimina todos los datos de una tabla. La sintaxis es la siguiente:– TRUNCATE TABLE nombre_tabla;

• La sentencia TRUNCATE puede parecer equivalente a realizar un DELETE de todos los datos de una tabla, pero hay diferencias:– TRUNCATE es más rápido que DELETE. Se destruye la tabla y se crea

de nuevo.– El campo AUTO_INCREMENT se reinicia (la próxima fila que se añada a

la tabla tomará el primer valor del campo AUTO_INCREMENT).– TRUNCATE es una operación atómica (no transaccional).

20