Vous êtes sur la page 1sur 10

TABLAS

Creación, Alteración y Eliminación


Creación de Tablas

■ La sintaxis general para crear una tabla es:


CREATE TABLE nombre_tabla (
nombre_campo1 TIPO_COLUMNA(),
nombre_campo1 TIPO_COLUMNA(),
nombre_campo1 TIPO_COLUMNA(), ….. );
■ A continuación de las definiciones de las columnas podemos añadir otras
definiciones.
Claves primarias
Índices
Claves únicas
Claves foráneas
Claves Primarias

■ Clave primaria simple


Create table Provincia
(Codigo INT NOT NULL,
Nombre Char (20),
Poblacion INT,
CONSTRAINT PK_PROVINCIA PRIMARY KEY (código));
■ Claves primarias compuesta
Create table Mitabla
(Id1 Char (2) NOT NULL,
Id2 Char (2) NOT NULL,
Observacion Char (30),
PRIMARY KEY (Id1, Id2));
Índices
■ Definir índices sobre una columna, sobre varias, o sobre partes de columnas.
Create table Mitabla2 Create table Mitabla2
(Id Int NOT NULL, (Id Int NOT NULL,
Nombre Char (20), Nombre Char (20),
INDEX (nombre)); KEY (nombre));
Son equivalentes.
■ También podemos crear un índice sobre parte de una columna:
Create table Mitabla3
(Id Int NOT NULL,
Nombre Char (20),
INDEX (nombre(4))); Este ejemplo usará sólo los cuatro primeros caracteres de la
columna 'nombre' para crear el índice.
Claves Únicas

■ Definir índices con claves únicas, también sobre una columna, sobre varias o sobre
partes de columnas.
■ Una clave primaria equivale a un índice de clave única, en la que el valor de la clave
no puede tomar valores NULL. Tanto los índices normales como los de claves únicas
sí pueden tomar valores NULL
Create table Mitabla4
(Id Int NOT NULL,
Nombre Char (20),
UNIQUE (nombre));
■ Los índices sirven para optimizar las consultas y las búsquedas de datos. Mediante
su uso es mucho más rápido localizar filas con determinados valores de columnas,
o seguir un determinado orden. La alternativa es hacer búsquedas secuenciales,
que en tablas grandes requieren mucho tiempo.
Claves Foráneas
■ En MySQL sólo existe soporte para claves foráneas en tablas de tipo InnoDB. Sin
embargo, esto no impide usarlas en otros tipos de tablas.
CREATE TABLE TIPO_USUARIO
(idTipoUsuario int,
descTipoUsuario varchar(20) NOT NULL,
CONSTRAINT PK_TIPO_USUARIO PRIMARY KEY(idTipoUsuario));

CREATE TABLE USUARIO


(idUsuario char(8)NOT NULL,
idTipoUsuario int NOT NULL,
nomUsuario varchar(35) NOT NULL,
direccion varchar(50)NULL,
habilitado bit NOT NULL,
fechaExpCarnet smalldatetime NOT NULL,
CONSTRAINT PK_USUARIO_idUsuario PRIMARY KEY(idUsuario),
CONSTRAINT FK_USUARIO_idTipoUsuario FOREIGN KEY (idTipoUsuario) REFERENCES
TIPO_USUARIO(idTipoUsuario));
Alter Table en MySql

■ Para renombrar y/o cambiar el nombre la tabla:


ALTER TABLE t2 RENAME Tabla2;

■ Eliminar una clave primaria y clave externa (FOREING KEY y PRIMARY KEY):
ALTER TABLE nombre_tabla DROP PRIMARY KEY;
ALTER TABLE nombre_tabla DROP FOREIGN KEY nombre_columna;
Eliminación de Tablas
■ Con la sentencia DROP TABLE de MySQL se puede borrar de manera
rápida y sencilla una tabla de una base de datos.
DROP TABLE nombre_tabla
■ Se puede afinar la sentencia añadiendo ‘IF EXISTS‘, es decir si existe.
DROP TABLE IF EXISTS nombre_table
■ De esta manera solo se borraría la tabla si esta existe. Es
recomendable usar ‘IF EXISTS‘ ya que si la tabla no existe cortaría la
ejecución del código MySQL restante.
■ Se pueden borrar varias tablas separando el nombre de cada una con
una ‘,’.
DROP TABLE IF EXISTS nombre_tabla, nombre_tabla2,
nombre_tabla3;
Modificación de Datos

■ Se tiene que indentificar un nombre de la tabla donde se actualizan los registros,


establecer los nuevos valores de los campos a actualizar y establecer el filtro sobre
las columnas a actualizar con la cláusula WHERE.
UPDATE alumnos
SET curso= ‘secundaria’
WHERE curso = ‘primaria’;
Se actualiza la tabla alumnos de un colegio, se actualiza el campo curso para
todos aquellos alumnos que están en primaria.
Eliminación de Datos
■ Sirve para eliminar filas o registros de tablas de una base de datos.
DELETE FROM nombre_table
[WHERE condicion]
[ORDER BY ...]
[LIMIT row_count]
■ Hay que tener cuidado con esta sentencia ya que si omitimos las claúsulas WHERE o
LIMIT podemos llegar a eliminar todos los registros de la tabla.
DELETE FROM nombre_tabla;

DELETE FROM usuarios


WHERE edad >35
ORDER BY edad
LIMIT 15;