INSTITUTO TECNOLOGICO SUPERIOR ESCÁRCEGA Organismo Público Descentralizado de la Administración Pública del Estado de Campeche Ingeniería En Sistemas Computacionales Nombre de la asignatura: TALLER DE BASE DE DATOS INVESTIGACION DE LAS SENTENCIAS CREATE, ALTER E INTEGRIDAD REFERENCIAL PROFESOR: FRANCISCO SALVADOR BALLINA SANCHEZ ALUMNO: LUIS ALBERTO POOL BAUTISTA GRUPO: IS-MA-V FECHA: 04/SEPTIEMBRE/2010 CREATE Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. SINTAXIS CREATE DATABASE CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name FUNCIONALIDAD CREATE DATABASE crea una base de datos con el nombre dado. Para usar CREATE DATABASE se necesita el privilegio CREATE en la base de datos. Existen reglas para los nombres permitidos de bases de datos, tablas, índices, columnas. Se producirá un error si la base de datos ya existe y no se ha especificado IF NOT EXISTS. USO Se pueden usar las opciones create_specification para especificar características de las base de datos. Estas características se almacenan en el fichero 'db.opt' en el directorio de la base de datos. La clausula CHARACTER SET específica el conjunto de caracteres por defecto para la base de datos. La clausula COLLATE específica el conjunto de reglas de comparación de caracteres (collation) por defecto para la base de datos. Para más detalles sobre juegos de caracteres y reglas de comparación de caracteres ver Caracteres y reglas. USO Las opciones create_specification pueden darse para especificar característica de la base de datos. Las características se almacenan en el fichero db.opt en el directorio de la base de datos. La cláusula CHARACTER SET especifica el conjunto de caracteres por defecto de la base de datos. Las bases de datos en MySQL se implementan como directorios que contienen ficheros que se corresponden a tablas en la base de datos. Como no hay tablas en la base de datos cuando se crean inicialmente, el comando CREATE DATABASE en MySQL 5.0 crea sólo un directorio bajo el directorio de datos de MySQL y el fichero db.opt file. Sintaxis de CREATE INDEX CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC] FUNCIONALIDAD En MySQL 5.0, CREATE INDEX se mapea a un comando ALTER TABLE para crear índices. Normalmente, crea todos los índices en una tabla cuando se crea la propia tabla con CREATE TABLE. CREATE INDEX le permite añadir índices a tablas existentes. Una lista de columnas de la forma (col1,col2,...) crea un índice de múltiples columnas. Los valores de índice se forman al concatenar los valores de las columnas dadas. Para columnas CHAR y VARCHAR, los índices pueden crearse para que usen sólo parte de una columna, usando col_name(length) para indexar un prefijo consistente en los primeros length caracteres de cada valor de la columna. BLOB t TEXT pueden indexarse, pero se debe dar una longitud de prefijo. El comando mostrado aquí crea un índice usando los primeros 10 caracteres de la columna name : CREATE INDEX part_of_name ON customer (name(10)); Como la mayoría de nombres usualmente difieren en los primeros 10 caracteres, este índice no debería ser mucho más lento que un índice creado con la columna name entera. Además, usar columnas parcialmente para índices puede hacer un fichero índice mucho menor, que puede ahorrar mucho espacio de disco y además acelarar las operaciones INSERT . Los prefijos pueden tener una longitud de hasta 255 bytes. Para tablas MyISAM y InnoDB en MySQL 5.0, pueden tener una longitud de hasta 1000 bytes . Tenga en cuenta que los límites de los prefijos se miden en bytes, mientras que la longitud de prefijo en comandos CREATE INDEX se interpreta como el número de caracteres. Tenga esto en cuenta cuando especifique una longitud de prefijo para una columna que use un conjunto de caracteres de múltiples bytes. EJEMPLO: Ejemplo (crear una tabla) CREATE TABLE 'TABLA_NOMBRE' ( 'CAMPO_1' INT, 'CAMPO_2' STRING ) Sintaxis de CREATE TABLE CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] EJEMPLO En MySQL 5.0, puede crear una tabla de otra añadiendo un comando SELECT al final del comando CREATE TABLE : CREATE TABLE new_tbl SELECT * FROM orig_tbl; MySQL crea nuevas columnas para todos los elementos en un SELECT. Por ejemplo: mysql> CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (a), KEY(b)) -> TYPE=MyISAM SELECT b,c FROM test2; Esto crea una tabla MyISAM con tres columnas, a, b, y c. Tenga en cuenta que las columnas para el comando SELECT se añaden a la derecha de la tabla, no se sobrescriben en la misma. Consulte el siguiente ejemplo: mysql> SELECT * FROM foo; +---+ |n| +---+ |1| +---+ mysql> CREATE TABLE bar (m INT) SELECT n FROM foo; Query OK, 1 row affected (0.02 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM bar; +------+---+ |m |n| +------+---+ | NULL | 1 | +------+---+ 1 row in set (0.00 sec) Para cada registro en la tabla foo, se inserta un registro en bar con los valores de foo y valores por defecto para las nuevas columnas: Si hay cualquier error al copiar los datos a la tabla, se borra automáticamente y no se crea. CREATE TABLE ... SELECT no crea ningún índice automáticamente. Se hace a propósito para hacer el comando lo más flexible posible. Si quiere tener índices en la tabla creada, debe especificarlo antes del comando SELECT : mysql> CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo; Algunas conversiones de tipos de columnas pueden ocurrir. Por ejemplo, el atributo AUTO_INCREMENT no se preserva, y las columnas VARCHAR pueden ser CHAR . Al crear una tabla con CREATE ... SELECT, asegurése de poner un alias para cualquier llamada a función o expresión en la consulta. Si no lo hace, el comando CREATE puede fallar o crear nombres de columnas no deseados. CREATE TABLE artists_and_works SELECT artist.name, COUNT(work.artist_id) AS number_of_works FROM artist LEFT JOIN work ON artist.id = work.artist_id GROUP BY artist.id; Puede especificar explícitamente el tipo de una columna generada: CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar; En MySQL 5.0, use LIKE para crear una tabla vacía basada en la definición de otra tabla, incluyendo cualquier atributo de columna e índice definido en la tabla original: CREATE TABLE new_tbl LIKE orig_tbl; CREATE TABLE ... LIKE no copia ninguna opción de tabla DATA DIRECTORY o INDEX DIRECTORY especificadas en la tabla original, ni ninguna definición de clave foránea. Puede preceder SELECT con IGNORE o REPLACE para indicar cómo tratar registros que dupliquen claves únicas. Con IGNORE, los nuevos registros que duplican un registro único existente se descartan. Con REPLACE, los nuevos registros reemplazan a los antiguos con el mismo valor. Si ni IGNORE ni REPLACE se indican, los valores únicos duplicados dan un error. Para asegurar que el log de update o binario puede usarse para recrear tablas originales, MySQL no permite inserciones concurrentes durante CREATE TABLE ... SELECT. ALTER Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc. ALTER TABLE le permite cambiar la estructura de una tabla existente. Por ejemplo, puede añadir o borrar columnas, crear o destruir índices, cambiar el tipo de columnas existentes, o renombrar columnas o la misma tabla. Puede cambiar el comentario de la tabla y su tipo. USO Si usa ALTER TABLE para cambiar la especificación de una columna pero DESCRIBE tbl_name indica que la columna no ha cambiado, es posible que MySQL haya ignorado las modificaciones por alguna de las razones descritas. Por ejemplo, si intenta cambiar una columna VARCHAR a CHAR, MySQL usa VARCHAR si la tabla contiene otras columnas de longitud variable. 1. Utilizando esta sentencia ALTER TABLE: 2. ALTER TABLE nombre_tabla DISCARD TABLESPACE; Precaución: Esto eliminará el actual fichero .ibd. 3. Colocando el fichero .ibd nuevamente en el directorio de la base de datos adecuada. 4. Utilizando esta sentencia ALTER TABLE: 5. ALTER TABLE nombre_tabla IMPORT TABLESPACE; FUNCIONALIDAD ALTER TABLE trabaja haciendo una copia temporal de la tabla original. La modificación se realiza durante la copia, a continuación la tabla original se borra y la nueva se renombra. Esto se hace para realizar que todas las actualizaciones se dirijan a la nueva tabla sin ningún fallo de actualización. Mientras ALTER TABLE se ejecuta, la tabla original permanece accesible en lectura para otros clientes. Las actualizaciones y escrituras en la tabla se retrasan hasta que la nueva tabla esté preparada. Hay que tener en cuenta que si se usa otra opción para ALTER TABLE como RENAME, MySQL siempre creará una tabla temporal, aunque no sea estrictamente necesario copiarla (como cuando se cambia el nombre de una columna). Está previsto corregir esto en el futuro, pero como no es corriente usar ALTER TABLE para hacer esto, no es algo urgente de hacer. Para tablas MyISAM, se puede aumentar la velocidad de la recreación de índices (que es la parte más lenta del proceso) asignando un valor alto a la variable myisam_sort_buffer_size. ALTER TABLE funciona creando una copia temporal de la tabla original. La alteración se realiza en la copia, luego la tabla original se borra y se renombra la nueva. Mientras se ejecuta ALTER TABLE la tabla original es legible por otros clientes. Las actualizaciones y escrituras en la tabla se esperan hasta que la nueva tabla esté lista, luego se redirigen automáticamente a la nueva tabla sin ninguna actualización fallida. Tenga en cuenta que si usa cualquier otra opción en ALTER TABLE distinta a RENAME, MySQL siempre crea una tabla temporal, incluso si los datos no necesitan ser copiados (tales como cuando cambia el nombre de una columna). Planeamos arreglar esto en el futuro, pero debido a que ALTER TABLE no es un comando que se use frecuentemente, no es un tema demasiado urgente. Para tablas MyISAM puede incrementar la velocidad de la operación de recrear índices (que es la parte más lenta del proceso de alteración) mediante la variable de sistema myisam_sort_buffer_size poniendo un valor alto. Para usar ALTER TABLE, necesita ALTER, INSERT, y permisos CREATE para la tabla. IGNORE es una extensión MySQL a SQL estándar. Controla cómo funciona ALTER TABLE si hay duplicados en las claves primarias en la nueva tabla o si ocuren advertencias cuando está activo el modo STRICT. Si no se especifica IGNORE la copia se aborta y no se ejecuta si hay errores de clave duplicada. Si se especifica IGNORE , entonces para duplicados con clave única, sólo se usa el primer registro. El resto de registros conflicitivos se borran. Los valores erróneos se truncan al valor más cercano aceptable. Puede ejecutar múltiples cláusulas ADD, ALTER, DROP, y CHANGE en un único comando ALTER TABLE . Esta es una extensión MySQL al estándar SQL, que permite sólo una de cada cláusula por comando ALTER TABLE . Por ejemplo, para borrar múltiples columnas en un único comando: mysql> ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d; CHANGE col_name, DROP col_name, y DROP INDEX son extensiones MySQL al estándar SQL. MODIFY es una extensión de Oracle a ALTER TABLE. La palabra COLUMN es opcional y puede omitirse. Si usa ALTER TABLE tbl_name RENAME TO new_tbl_name sin ninguna otra opción, MySQL símplemente renombra cualquier fichero que se corresponda a la tabla tbl_name. No es necesario crear una tabla temporal. (Puede usar el comando RENAME TABLE para renombrar tablas. SINTAXIS Sintaxis de ALTER TABLE ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (column_definition,...) | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name | ORDER BY col_name | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE | table_options Sintaxis de ALTER DATABASE ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ... alter_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name ALTER DATABASE le permite cambiar las características globales de una base de datos. Estas características se almacenan en el fichero db.opt en el directorio de la base de datos. Para usar ALTER DATABASE, necesita el permiso ALTER en la base de datos. EJEMPLO Ejemplo (agregar columna a una tabla) ALTER TABLE 'TABLA_NOMBRE' ( ADD NUEVO_CAMPO INT UNSIGNED meel ) Puede renombrar una columna usando CHANGE old_col_name column_definition. Para ello, especifique el nombre de columna viejo y nuevo y el tipo de la columna actual. Por ejemplo, para renombrar una columna INTEGER de a a b, puede hacer: mysql> ALTER TABLE t1 CHANGE a b INTEGER; Si quiere cambiar el tipo de una columna pero no el nombre, la sintaxis CHANGE necesita un nombre viejo y nuevo de columna, incluso si son iguales. Por ejemplo: mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL; Puede usar MODIFY para cambiar el tipo de una columna sin renombrarla: mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL; Si usa CHANGE o MODIFY para acortar una columna para la que existe un índice en la columna, y la longitud de la columna resultante es menor que la del índice, MySQL reduce el índice automáticamente. Cuando cambia un tipo de columna usando CHANGE o MODIFY, MySQL intenta convertir valores de columna existentes al nuevo tipo lo mejor posible. Hay algunos ejemplos que muestran usos de ALTER TABLE. Comienza con una tabla t1 que se crea como se muestra: mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10)); Para renombrar la tabla de t1 a t2: mysql> ALTER TABLE t1 RENAME t2; Para cambiar la columna a desde INTEGER a TINYINT NOT NULL (dejando el mismo nombre), y para cambiar la columna b desde CHAR(10) a CHAR(20) así como dejarla de b a c: mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20); Para añadir una nueva columna TIMESTAMP llamada d: mysql> ALTER TABLE t2 ADD d TIMESTAMP; Para añadir índices en las columnas d y a: mysql> ALTER TABLE t2 ADD INDEX (d), ADD INDEX (a); Para borrar la columna c: mysql> ALTER TABLE t2 DROP COLUMN c; Para añadir una nueva columna entera AUTO_INCREMENT llamada c: mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, -> ADD PRIMARY KEY (c); Tenga en cuenta que indexamos c (como PRIMARY KEY), ya que las columnas AUTO_INCREMENT deben indexarse, y también que declaramos c como NOT NULL, ya que las columnas de clave primara no pueden ser NULL DROP Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER. Ejemplo ALTER TABLE ''TABLA_NOMBRE'' ( DROP COLUMN ''CAMPO_NOMBRE1'' ) TRUNCATE Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción. Ejemplo TRUNCATE TABLE ''TABLA_NOMBRE1'' INTEGRIDAD REFERENCIAL ¿Qué es? La integridad referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad. Primero repasemos un poco los tipos de relaciones. ¿Tipos de relaciones hay? Entre dos tablas de cualquier base de datos relacional pueden haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos: Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa. EJEMPLO: Por ejemplo: tenemos dos tablas una de profesores y otra de departamentos y queremos saber qué profesor es jefe de qué departamento, tenemos una relación uno a uno entre las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de un solo departamento. Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla 'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos pero un hijo solo tiene un padre (regla más fácil de recordar). EJEMPLO: Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una población puede tener más de un habitante, pero un habitante pertenecerá (estará empadronado) en una única población. En este caso la tabla principal será la de poblaciones y la tabla secundaria será la de habitantes. Una población puede tener varios habitantes pero un habitante pertenece a una sola población. Esta relación se representa incluyendo en la tabla 'hijo' una columna que se corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos clave foránea (o clave ajena o clave externa). Una clave foránea es pues un campo de una tabla que contiene una referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una columna población que contiene el código de la población en la que está empadronado el habitante, esta columna es clave ajena de la tabla habitantes, y en la tabla poblaciones tenemos una columna codigo de poblacion clave principal de la tabla. Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos que incluya los pares de valores relacionados entre sí. Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente. No se puede definir entre clientes y artículos, hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La tabla pedidos estará relacionada con cliente por una relación uno a muchos y también estará relacionada con artículos por un relación uno a muchos. INTEGRIDAD REFERENCIAL Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no haya en las claves foráneas valores que no estén en la tabla principal. La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla. ¿ Cuándo se pueden producir errores en los datos? Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal. insertamos un nuevo habitante y en la columna población escribimos un código de población que no está en la tabla de poblaciones (una población que no existe). Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el código de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el código de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el código de Valencia o bien cambiar el código de población de todos los habitantes de Valencia y asignarles el código 10. Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones. Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo población de todos sus 'hijos'. COMO FUNCIONA Supongamos una base de datos con las entidades Persona y Factura. Toda factura corresponde a una persona y solamente una. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas. Supongamos que una persona se identifica por su atributo DNI (Documento nacional de identidad). También tendrá otros atributos como el nombre y la dirección. La entidad Factura debe tener un atributo DNI_cliente que identifique a quién pertenece la factura. Por sentido común es evidente que todo valor de DNI_cliente debe corresponder con algún valor existente del atributo DNI de la entidad Persona. Esta es la idea intuitiva de la integridad referencial. Existen tres tipos de integridad referencial: 1. Integridad referencial débil: si en una tupla de R todos los valores de los atributos de K tienen un valor que no es el nulo, entonces debe existir una tupla en S que tome esos mismos valores en los atributos de J; 2. Integridad referencial parcial: si en una tupla de R algún atributo de K toma el valor nulo, entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que los atributos de K con valor no nulo; y 3. Integridad referencial completa: en una tupla de R todos los atributos de K deben tener el valor nulo o bien todos tienen un valor que no es el nulo y entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que toman los de K. CONCLUSION: Bueno lo que para mí se me hace lo más importante de esta investigación es que estas sentencias las mencionadas anteriormente son muy importantes ya que estas se usan para crear las bases de datos, y las bases de datos son muy importantes ya que . Sin ellas, los bancos, supermercados, etcétera, no podrían funcionar o no seamos tan exigentes si funcionarían pero necesitarían bastante gente para llevar el control de sus ventas o entradas de mercancías. Además de muchas aplicaciones actuales, las bases de datos pueden considerarse como el componente de software más importante para los negocios debido a que facilitan la manera de administrar los negocios u otros. Todo esto que les mencione anteriormente se preguntaran que onda o porque les comento lo de los comercios u otros y es simple es que ellos usan las base de datos y las sentencias que estamos viendo para eso sirven para las base de datos por ejemplo la sentencia create table sirve para crear una tabla y no solo eso sino que también nos permite crear muchos objetos de las base de datos tales como las tablas (esquemas), índices, vistas, dominios, ligaduras de integridad y procedimientos y aquí tendremos la oportunidad o bien aprenderemos y/o veremos las sentencias correspondientes o que le corresponden para crear los esquemas o lo que es lo mismo las tablas y se preguntaran que rayos es esto bueno las tablas es lo que contendrá todos los datos de nuestra base de datos esto es la función de CREATE TABLE. Y no solo lo mencionado anteriormente es su funcionalidad si no que también CREATE TABLE define el nombre de la tabla, las columnas con su tipo de datos, ligaduras de integridad que a su vez estas vigilan que el valor se guarde como dato en las columnas o atributos siendo laves o no. Y ya que estamos hablando de la integridad referencial hablemos un poco de que es integridad referencial. Bueno a mi manera de entender esta es la que se encarga o se asegura de mantener una relación existente entre la llave primaria (en la tabla referenciada) y la llave foránea (en las tablas referenciantes) serán siempre mantenidas que quiere decir esto que si una fila o un registro en la tabla referenciada (tabla donde reside la llave primaria) no puede ser borrada o cambiar su llave primaria si es que existe un registro o fila con una llave foránea (en la tabla referente que es la que se refiere a esa llave primaria. Es muy importante el orden en que se crean las tablas esto porque es que no se deben de violar la referencia cruzada entre las ligaduras de integridad del tipo referencial es decir la llave primaria con la llave foránea. Un ejemplo de esto con lo relacionado a la integridad referencial es muy sencillo por ejemplo no podemos crear la tabla de pedido antes que la tabla de cliente pues debe de saberse que la tabla de pedido hace referencia a la de cliente es por eso que primero se crean tablas que solo tienen llaves primarias y luego las que incluyen llaves foráneas. Pasando a otro termino pasemos a otra sentencia en este caso se trata de la sentencia ALTER se preguntaran cual es su función y pues bien la función de esta sentencia es que una vez que la tabla ya ha sido utilizada un tiempo atrás esta sentencia entra en acción podría decirse ya que su función es modificar las tablas un ejemplo es si se desea modificar en la base de datos CLIENTE agregándole tal ves teléfono o domicilio ya que en algunas ocasiones los usuarios suelen descubrir que desean almacenar información adicional con respecto a las tablas. Puedo concluir diciendo que el estudio de las tecnologías de base de datos como MySQL es de mucha importancia, porque por medio de ellas hemos podido comprender su funcionamiento, además de poder implementar tecnologías que nos ayuden a hacer más sencilla las cosas y que están siendo utilizadas actualmente. REFERENCIAS http://dev.mysql.com/doc/refman/5.0/es/alter-table.html http://dev.mysql.com/doc/refman/5.0/es/alter-database.html http://dev.mysql.com/doc/refman/5.0/es/create-database.html http://dev.mysql.com/doc/refman/5.0/es/create-view.html http://unixlandia.com/web_interna/index.php?option=com_content&view =article&id=268:sentencia-alter-table&catid=22&Itemid=39 http://www.aulaclic.es/sql/b_8_1_1.htm