2 jul 2013

Grado 10 Modificar tablas y Llaves primarias

PRIMARY KEY : Es un campo en una tabla que identifica unicamente un registro. Este atributo es usado para definir el nombre del campo para crear una clave primaria.

Ejemplo :

    fieldName INT UNSIGNED AUTO_INCREMENT PRIMARY KEY

    La PRIMARY KEY está especificada despues de definir los campos en el ejemplo siguiente:

CREATE TABLE student
(
    studID INT UNSIGNED AUTO_INCREMENT,
    name VARCHAR(30),
    PRIMARY KEY(studID)
);

 


Renombrando tablas


La sentencia RENAME es usada para renombrar una o más tablas en una base de datos.
La sintaxis es
RENAME TABLE tbl_name TO new_tbl_name
    [, tbl_name2 TO new_tbl_name2] ...

El siguiente ejemplo de muestra renombra la tabla de student como tabla class.

mysql> rename table student to class;
Query OK, 0 rows affected (0.00 sec)

Ahora podemos ver la tabla si el nombre es cambiado con el ejemplo siguiente.
mysql> show tables;
+--------------------+
| Tables_in_sample   |
+--------------------+
| class              |
+--------------------+
1 row in set (0.00 sec)

Si el ejemplo renombra más de una tabla, las operaciones de renombrar van de izquierda a derecha.

Podemos tambien alternar dos nombres de tablas. Vamos a asumir la tabla tmp que no existe.

Ejemplo :
RENAME TABLE emp1 TO tmp,
             emp2 TO emp1,
             tmp TO emp2;
Podemos también usar RENAME TABLE para mover la tabla de una base de datos a otra.

Ejemplo :

RENAME TABLE current_db.tbl_name TO other_db.tbl_name;

Modificando tablas
ALTER TABLE :

    ALTER TABLE es usado para cambiar la estructura de una tabla existente. Podemos añadir o borrar columnas, cambiar el tipo de las columnas existentes, o renombrar las columnas o la tabla misma. También podemos cambiar el comentario de la tabla y el tipo de tabla.

La Sintaxis es

ALTER TABLE tbl_name alter_specification [, alter_specification] ...

    
La siguiente tabla describe la especificacion Alter

Especificación Alter
Descripción
Renombra el nombre de una Tabla
Añade una columna nueva, clave, índice
Añade una columna First
Añade una columna After
Suelta una columna, Índice, clave
Cambia el nombre de una columna
Cambia el tipo de columna
Modifica el tipo de columna
Renombrando una Tabla :

Podemos RENOMBRAR la tabla usando ALTER TABLE. El siguiente ejemplo renombra la tabla student a class.

mysql> ALTER TABLE student RENAME class;

El ejemplo de arriba cambiará el nombre de la tabla.

Añadiendo una columna a una tabla:

Para hacerlo el modificador ADD COLUMN es utilizado para añadir una columna a una tabla. El siguiente ejemplo añade un campo llamado marks a la tabla student.

mysql> ALTER TABLE student ADD COLUMN marks INT(10);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
| marks   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
A continuación veremos las alteraciones al mostrar las tablas.
Añadir una columna First :

 Podemos posicionar el campo usando los modificadores FIRST y AFTER. El siguiente ejemplo colocará el nuevo campo como el primer campo de la tabla.
mysql> ALTER TABLE student ADD COLUMN marks INT(10) FIRST;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| marks   | int(10)     | YES  |     | NULL    |       |
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Añadir una columna After :

También podemos poner el nuevo campo al lado de cualquier otro campo. El siguiente ejemplo colocará el nuevo campo inmediatamente después del nombre del campo.
mysql> ALTER TABLE student ADD COLUMN marks INT(10) AFTER names;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| marks   | int(10)     | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Borrar una columna:

DROP COLUMN es usado para borrar una columna de una tabla.  La sintaxis es así

ALTER TABLE tbl_name DROP col_name;

Lo siguiente deja caer las marcas de campo.
mysql> ALTER TABLE student DROP COLUMN marks;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Cambiar el nombre de una columna:

Cuando modificamos una columna, tenemos que especificar el atributo de la columna de nuevo. El siguiente ejemplo renombra el nombre del campo a stud_name en la tabla de estudiante.
mysql> ALTER TABLE student CHANGE name stud_name VARCHAR(20);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| studid    | int(10)     | YES  |     | NULL    |       |
| stud_name | varchar(20) | YES  |     | NULL    |       |
| marks     | int(10)     | YES  |     | NULL    |       |
| address   | varchar(40) | YES  |     | NULL    |       |
| phone     | int(10)     | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Cambiar el nombre de una columna:

Si queremos cambiar el atributo solo, podemos usar la mimsa columna como en el siguiente ejemplo.

mysql> alter table student change name name varchar(40);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(40) | YES  |     | NULL    |       |
| marks   | int(10)     | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Modificar un tipo de columna:

    La variable modify también es usada para cambiar el tipo de columna de una tabla, como el anterior ejemplo. El ejemplo siguiente modificará el tipo de columna.

 
mysql> alter table student modify name varchar(40);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| studid  | int(10)     | YES  |     | NULL    |       |
| name    | varchar(40) | YES  |     | NULL    |       |
| marks   | int(10)     | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
| phone   | int(10)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)