martes, 12 de junio de 2012

El Lenguaje SQL parte 8


En esta apartado veremos conceptos como la creación de tablas y modificación de las mismas, a través de comandos SQL.


CREATE TABLE: Esta sentencia permite la creación de una nueva tabla ...


$consulta = "CREATE TABLE nueva(id INT(11) NOT NULL AUTO_INCREMENT, nombre VARCHAR(50) UNIQUE NOT NULL, apellidos VARCHAR(100) UNIQUE NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB COLLATE=latin1_spanish_ci";


El resultado de la consulta es ...

Características de la tabla.
-nombre: nueva.
-ENGINE: Tipo InnoDB.
-COLLATE: Cotejamiento latin1_spanish_ci.

· Creación de tres campos.

· La primera columna tiene las siguientes características:
-nombre: id
-Tipo de datos: INT(11)
-NOT NULL: No permite valores nulos o vacíos.
-AUTO_INCREMENT: Auto incrementa el integer cada nuevo registro.
-PRIMARY KEY: Este campo es la clave primaria.

· La segunda columna tiene las siguientes características:
-nombre: nombre.
-Tipo de Datos: VARCHAR(50)
-UNIQUE: Los valores de cada registro deberán ser únicos.
-NOT NULL: No permite valores nulos o vacíos.

· La tercera columna tiene las siguientes características:
-nombre: apellidos.
-Tipo de Datos: VARCHAR(100)
-UNIQUE: Los valores de cada registro deberán ser únicos.
-NOT NULL:  No permite valores nulos o vacíos.


¿Como relacionar tablas a través de una clave externa?

Vamos a crear dos tablas con unos campos claves que estarán relacionados entre sí.

//Tabla clientes
$consulta = "CREATE TABLE clientes(id_cliente INT(11) NOT NULL AUTO_INCREMENT, nombre VARCHAR(50) NOT NULL, apellidos VARCHAR(100) NOT NULL, PRIMARY KEY(id_cliente)) ENGINE=InnoDB COLLATE=latin1_spanish_ci";

//Tabla pedidos
$consulta = "CREATE TABLE pedidos(id_producto INT(11) NOT NULL AUTO_INCREMENT, id_cliente INT(11), producto VARCHAR(50) NOT NULL, precio VARCHAR(50) NOT NULL, PRIMARY KEY(id_producto), FOREIGN KEY(id_cliente) REFERENCES clientes(id_cliente)) ENGINE=InnoDB COLLATE=latin1_spanish_ci";


Bueno, aquí se han creado dos tablas  'clientes' y 'pedidos' que están relacionadas entre sí por una clave externa, para declarar una clave externa se utiliza la siguiente sintaxis ...

FOREIGN KEY(id_cliente) REFERENCES clientes(id_cliente)

Prueba ha insertar un nuevo pedido, en la tabla 'pedidos' sin haber agregado clientes en la tabla 'clientes', no podrás insertar un nuevo pedido si el cliente en la tabla 'clientes' no existe.

ALTER TABLE: permite modificar la tabla indicada en la setencia, como ejemplo veremos como crear una clave externa si no estuviese creada en el ejemplo anterior...

O cómo cambiar el tipo de datos de una columna ...

$consulta = "ALTER TABLE pedidos ADD FOREIGN KEY(id_cliente) REFERENCES clientes(id_cliente)";

O cómo crear una nueva columna...

$consulta = "ALTER TABLE pedidos ADD fecha Date"; 

O cómo cambiar el nombre a una columna...

$consulta = "ALTER TABLE pedidos CHANGE fecha fecha_pedido Date";

O cómo cambiar el tipo de datos de una columna...

$consulta ="ALTER TABLE pedidos MODIFY producto VARCHAR(100)";

O cómo eliminar una columna...

$consulta = "ALTER TABLE pedidos DROP fecha"; 


DROP TABLE: Permite eliminar un tabla.

$consulta = "DROP TABLE pedidos";


TRUNCATE TABLE: Permite eliminar todas las filas de la tabla, sin eliminar la tabla.

$consulta = "TRUNCATE TABLE pedidos";


No hay comentarios: