miércoles, 23 de mayo de 2012

Evaluación. cuestionario



1.- ¿Que es MSQL?

2.- ¿Que representa el rectángulo, ovalo y rombo en un modelo de entidad relación?

3- ¿Por qué medio se representa el modelo relacional?

4.- ¿Qué comando se utiliza para ver las bases de datos existentes?

5.- ¿Qué comando es el que se encarga de crear una base de datos?

6.- ¿Que son las clausulas?

7.- ¿Qué es un software de aplicación?

8.- ¿Cuántos tipos de comandos existen en SQL?

9.- ¿Cómo funciona DML?

10.- ¿Cómo funciona DLL?

11.- ¿para qué sirve la cláusula  from?

12.- ¿Qué indica where?

13.- ¿group by para que sirve?

14.- ¿Cómo  funciona order by?

15.- ¿Cuáles son los operadores lógicos?

16.- ¿para qué sirve between?

17.- ¿Qué función tiene like?

18.- ¿Qué función tiene in?

19.- ¿Cuál es la sentencia que se utiliza para ver una tabla completa?

20.- ¿Cuáles son los tipos de clave?

21.- ¿Qué es un diagrama entidad relación?

22.- ¿Qué comando se utiliza para borrar una tabla?

23.- ¿Cuáles son las entidades fuertes y débiles?

24.- ¿Qué se refiere con varios a varios?

25.- ¿Cuál es la sintaxis para insertar los datos de la tabla?

26.- ¿Cuál es la primera forma normal (1FN)?

27.- ¿A qué se refiere la segunda formal normal (2FN)?

28.- ¿A qué se refiere la tercera forma norma (3FN)?


29.- ¿A qué se refiere la cuarta forma normal (4FN)?


30.-.- ¿A qué se refiere la forma normal Boyce codd?




TUTORIAL de como hacer una base de datos (Disquera)




  • Para crear una base de datos es necesario contar con  una aplicación de base de datos  este es MySQL  para poder ingresar a él es necesario que el usuario introduzca una contraseña así este le dará la pauta para poder comenzar a trabajar en el.

  • Una vez que se introduce la contraseña se debe escribir el siguiente comando show databases; para poder ver las bases de datos ya existentes.


  • Para poder crear la base de datos es necesario escribir el siguiente comando create  database  en seguida de este se escribe el nombre de la base de datos que se desea crear punto y coma ejemplo (create database C_JES;).

  • Para poder entrar a la base de datos es necesario  escribir use y el nombre de la base punto y coma ejemplo (use C_JES;).

  • Para comenzar a crear tablas en una base de datos es necesario utilizar el siguiente comando créate table y después el nombre de la tabla punto y coma ejemplo (créate table empleado; después de esto se deben abrir un paréntesis y escribir los campos que la tabla va a contener una vez terminado de escribir todos los campos que uno desea se debe  cerrar el paréntesis punto y coma.

  • Para poder introducir los datos de  la tabla es necesario escribir el siguiente comando insert into values y el nombre de la tabla ejemplo (insert into values personas al igual que para crear la tabla es necesario abrir un paréntesis ,escribir dentro de este los datos y una vez que se hayan escrito los datos se cierra el paréntesis punto y coma.

  • Para poder realizar consultas para ver qué datos contiene nuestra base de datos es necesario escribir algunos comandos un ejemplo de alguna consulta puede ser la siguiente:
  • Select*from discografia where año lanzamiento=2010 and integrantes=5;Esta consulta sirve para ver el año de lanzamiento de aquellos grupos que comenzaron en el 2010 y tienen 5 integrantes.  

  • Select * from discografia  where nombre like ‘j%’; esta consulta sirve para ver los nombres que comiencen con j


  • Select upper(CD) from discografia where código =4; esta consulta tiene la función de mostrar las leras en mayúsculas delo CD y que tengan cuatro integrantes

  • Select * from Discografia where No_canciones between 13 and 15; al utilizar esta consulta se deben mostrar el numero de canciones entre 13 y 15.

  • Select * from grupos_musicales where genero='Kpop'; con esta consulta  se muestran todos los grupos cuyo genero sea  Kpop.
  • Delete from grupos musicales where código=654;esta consulta borra los datos que tengan ese código.

  • Update discografia set copias vendidas=47000000 where copias vendidas=9560000; al realizar esta consulta se deberán cambiar los datos.

  • Alter  table discografia add categoría varchar(15); esta consulta deberá añadir otro campo.

  • Drop table próximo concierto; esta consulta servirá para borrar la tabla próximo concierto.
  • Drop database disquera; esta sirve para eliminar toda la dase de datos creada, no habrá posibilidad de recuperar nada.
  • NOTA: Select * from  .....  ;    sirve para mostrar todos los datos de una tabla  o de una BD.  En este caso la usamos para ver  los resultados de las otras sentencias.








Modelo Relacional (Disquera)


Modelo E-R (Disquera)


Se desea  realizar un modelo entidad relación para el control de  los artistas que representa una disquera, en la cual por  obviedad hay  diversos grupos  musicales,  de los cuales se conoce:
Nombre  de cada agrupación, código, No de integrantes en el grupo,  años de  trayectoria, género musical, primer single, nombre del  fandom  y color oficial
También se sabe que estos grupos  presentaran diversos conciertos  las próximas fechas. De estas presentaciones  se tienen en cuenta  los siguientes datos.
El lugar donde se  llevara a cabo,  el código de cada evento, número de  asistentes aproximado,  costo de la entrada, ganancias de la disquera,  pago que reciben los artistas, fecha  del evento y representante de cada ciudad
Acerca de la reciente discografía  se tienen en cuenta   las  siguientes situaciones:
Nombre  de  los grupos o artistas, Nombre del disco, Año de lanzamiento de este  mismo, copias vendidas, Numero de canciones que contiene,   también  se conoce  las colaboraciones que hay con otros artistas, y  el single principal del CD.

En base a estas situaciones. Elaborar  el  modelo entidad relación, modelo relacional y base de datos.


martes, 15 de mayo de 2012

SEGUNDO ENLACE Resumen



La manera más simple de crear una vista usando el MySQL Query Browser es con el uso del botón CREAR VISTA. Ejecute una consulta que represente la vista que desee crear. Una vez que la consulta es ejecutada, clic en el botón CREAR VISTA, proporcione el nombre para la vista, y la vista es creada.

Usted puede también crear una vista dando clic-derecho en la base de datos donde se quiere agregar la vista en el navegador de base de datos y eligiendo la opción CREAR NUEVA VISTA. Después de que capture el nombre de la vista, una plantilla para vista será desplegada en el editor de secuencia de comandos.

CREANDO UNA VISTA:


Se  emplea  la  sentencia  CREATE  VIEW,  que  incluye  una  subconsulta  (subquery)  para determinar los datos a ser mostrados a través de la vista.
Sintaxis:

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW <vista>
  [(<alias>[, <alias>] … )]
  AS <subconsulta>
  [WITH CHECK OPTION [CONSTRAINT <restricción>]]
  [WITH READ ONLY [CONSTRAINT <restricción>]];
 OR REPLACE : Se utiliza por si la vista ya estuviera creada anteriormente. En ese caso, la sustituye por la nueva definición.


FORCE : Crea la vista sin comprobar si las tablas base existen.
NO FORCE : Crea la vista sólo si las tablas base de donde se extraen los datos
Existen realmente (es la opción por defecto).
<vista>  Es el nombre de la vista.
<alias>  Especifica alias para las expresiones/columnas seleccionadas por la
Subconsulta. El número de alias debe coincidir con el número de
Expresiones seleccionadas por la vista.
<subconsulta>  Es una sentencia SELECT completa. Se pueden emplear alias para
las columnas en la lista que sigue al SELECT.
WITH CHECK
OPTION: Especifica que solo las filas accesibles para la vista pueden ser insertadas o modificadas
<restricción> : Nombre asignado a la restricción CHECK OPTION o a la restricción
READ ONLY.
WITH READ
ONLY : Asegura que no podrán ejecutarse operaciones de DML a través de la vista. La vista sólo permite consultas.


VISUALIZAR LA ESTRUCTURA DE UNA VISTA:


DESCRIBE <vista>;
 <vista>:  Es el nombre de la vista.
 Listar las vistas existentes: SELECT * FROM USER_VIEWS;


 Indicaciones y restricciones de uso:


 La subconsulta puede contener una sentencia SELECT de sintaxis compleja, incluyendo combinaciones (JOIN), agrupamientos (GROUP BY), y subconsultas internas.
-  Pero no puede incluir una cláusula ORDER BY. Si se desea ordenar, esto deberá hacerse mediante una consulta posterior que utilice la vista (ver ejemplo en apartado 4).


 MODIFICANDO LA DEFINICIÓN DE UNA VISTA

Para modificar la definición de una vista no es necesario eliminarla previamente, basta con ejecutar una nueva sentencia CREATE VIEW que incluya la opción “OR REPLACE” y la subconsulta modificada.
 Ejemplo: Cambiar la vista EmpDepVentas creada en el apartado 3 para que incluya también el salario

CREATE OR REPLACE VIEW EmpDepVentas
  AS SELECT apellidos, nombre, salario
    FROM Empleados
    WHERE dep=”Ventas”
  WITH CHECK OPTION;

ELIMINANDO UNA VISTA

Cuando ya no se va a emplear más, una vista puede ser eliminada del esquema de la base de datos mediante la siguiente orden:
DROP VIEW <vista>;
  <vista>  Es el nombre de la vista.

 Ejemplo:

 DROP VIEW EmpDepVentas;
 Restricciones de uso: Solo  el  creador  o  un  usuario  con  el  privilegio  “DROP ANY VIEW”  puede  eliminar  una vista.


COMANDOS DE MySQL

mysql envía comandos SQL al servidor para que sean ejecutados. También hay un conjunto de comandos quemysql interpreta por sí mismo. Para obtener una lista de estos comandos, se escribe help o \h en el promptmysql>:
mysql> help
MySQL commands:
?         (\h)    Synonym for `help'.
clear     (\c)    Clear command.
connect   (\r)    Reconnect to the server.
                  Optional arguments are db and host.
delimiter (\d)    Set query delimiter.
edit      (\e)    Edit command with $EDITOR.
ego       (\G)    Send command to mysql server,
                  display result vertically.
exit      (\q)    Exit mysql. Same as quit.
go        (\g)    Send command to mysql server.
help      (\h)    Display this help.
nopager   (\n)    Disable pager, print to stdout.
notee     (\t)    Don't write into outfile.
pager     (\P)    Set PAGER [to_pager].
 Print the query results via PAGER.
print     (\p)    Print current command.
prompt    (\R)    Change your mysql prompt.
quit      (\q)    Quit mysql.
rehash    (\#)    Rebuild completion hash.
source    (\.)    Execute an SQL script file.
                  Takes a file name as an argument.
status    (\s)    Get status information from the server.
system    (\!)    Execute a system shell command.
tee       (\T)    Set outfile [to_outfile].
                  Append everything into given outfile.
use       (\u)    Use another database.
                  Takes database name as argument.
warnings  (\W)    Show warnings after every statement.
nowarning (\w)    Don't show warnings after every statement


A continuación, intentaré nombrar algunos comandos útiles para ejecutar en MySQL. Cabe destacar, que estos comandos pueden ser ejecutados desde el shell del sistema operativo ($) y/o desde el shell de MySQL (mysql>). Por una cuestión de orden, los comandos serán clasificados en:

Descripción del sistema, bases de datos y tablas.
Definición de datos
Administración
Backups e importación de datos
Descripción del sistema, bases de datos y tablas.

 mysql> show databases;
  mysql> show tables;
 mysql> show columns from nombre_de_tabla;
 mysql> show variables;
  mysql> show grants for usuario@host;
 mysql> show columns from base_de_datos.nombre_de_tabla;
mysql> show privileges;
  mysql> show character set;
 mysql> describe nombre_de_tabla

Definición de datos:

mysql> drop database nombre_de_base_de_datos;
mysql> drop table nombre_de_tabla;
 mysql> alter table nombre_de_tabla drop column nombre_de_columna;
mysql> alter table nombre_de_tabla add column nombre_de_columna tipo_de_dato;
mysql> alter table nombre_de_tabla change nombre_de_columna_original nombre_de_columna_nuevo tipo_de_dato;
mysql> alter table nombre_de_tabla add unique (nombre_de_columna);
mysql> alter table nombre_de_tabla modify nombre_de_columna tipo_de_dato;

Administración

$ mysqladmin -u root -h host -p password ‘nuevo_password’
$ mysqladmin extended-status
$ mysqladmin status
$ mysqladmin variables
$ mysqladmin version
$ mysqladmin create base_de_datos
$ mysqladmin drop base_de_datos$ mysqladmin flush-privileges
$ mysqladmin ping
$ mysqladmin reload
$ mysqladmin kill id_proceso, id_proceso…
$ mysqladmin shutdown

  Backups e importación de datos

$ mysql base_de_datos< backup.sql
 $ mysqldump base_de_datos [tablas] > backup.sql
 $ mysqldump –no-data base_de_datos [tablas] > backup.sql
 $ mysqldump –add-drop-table base_de_datos [tablas] > backup.sql
 $ mysqldump –compatible=mysql40 base_de_datos [tablas] > backup.sql
mysql> LOAD DATA INFILE ‘/tmp/archivo.csv’ REPLACE INTO TABLE [nombre_de_tabla] FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (campo1,campo2,…)

MANEJO DE BASES DE DATOS MYSQL:

 drop table [table]; – Elimina la tabla, incluyendo registros y estructura.
drop table if exists [table]; – Elimina la tabla de la base de datos, pero antes verifica que exista.
truncate table [table]; – Elimina los registros, pero mantiene la esrtuctura de la tabla.
rename table [table] to [nuevo nombre de tabla]; – Renombra una tabla de la base de datos.

ALGUNOS COMANDOS UTILES PARA CUNSULTAS MYSQL:

ü  select * from [table] limit [numero]; – Muestra los registros desde el 1 hasta [numero].
Ej. select * from tabla limit 10; – Muestra los 10 primeros registros.
select * from [table] limit [numero inicio],[numero]; – Muestra los registros desde el numero de inicio hasta numero inicio + numero.
Ej. select * from tabla limit 11,10; – Muestra desde registro 11 hasta el 20.

BASES DE DATOS MYSQL EN CONSOLA:

$ mysqladmin -u -p create – crear base de datos.
$ mysqladmin -u -p drop – borrar la base de datos.
$ mysqladmin -u root -p proc – listar procesos en ejecucion en el servidor de bases de datos Mysql.
$ mysqladmin -u root -p -i 5 status – verificar status cada 5 segundos.
 $ mysqldump –opt -u -h -p > /path/to/file – Exportar base de datos a un archivo.
$ mysqldump –opt -u -h –all-databases -p > /path/to/file – Exportar TODAS las bases de datos a un archivo.
$ mysql -h -u -p < /path/to/file – Importar un archivo a la base de datos a mysql
 $ mysqlcheck -o -u root -p –all-databases – Optimizar las bases de datos mysq

PRIMER ENLACE resumen.



Iniciar el nombre de usuario (en este caso root):
mysql -u root

contraseña:
mysql -u root -p

Para especificar la máquina (el host) en el que se aloja el servidor MySQL:
mysql -u root -p -h localhost

Para especificar la base de datos a utilizar por defecto basta añadir el nombre al final. Es equivalente a utilizar más tarde el comando USE.
mysql -u root -p -h localhost base_datos

Para ejecutar un script SQL:
mysql < archivo.sql

Consola de MySQL:


1. source archivo.sql
Para crear una base de datos:

1. CREATE DATABASE base_datos;
Si ya existe una base de datos con ese nombre, MySQL devolverá un error. Si queremos crear una base de datos solo cuando no exista ya una del mismo nombre (y por lo tanto no obtener este error) podemos añadir el texto IF NOT EXISTS:

1. CREATE DATABASE IF NOT EXISTS base_datos;
especificar el juego de caracteres y la colación (conjunto de reglas utilizadas para comparar los caracteres) con DEFAULT CHARACTER SET y DEFAULT COLLATE respectivamente. las tablas usarán estos valores, a menos que se indiquen otros al crear la tabla.

1. CREATE DATABASE IF NOT EXISTS base_datos

2.     DEFAULT CHARACTER SET utf8

3.     DEFAULT COLLATE utf8_general_ci;
especificar un juego de caracteres y colación a utilizar para el servidor mediante las opciones --character-set-server y --collation-server.
comunicarnos con el servidor SET NAMES.

1. SET NAMES "utf8";
 caracteres admitidos por MySQL mediante el comando SHOW CHARACTER SET

• ascii, de American Standard Code for Information Interchange; también conocido como US-ASCII. Es una codificación de caracteres de 7 bits basado en el alfabeto inglés con 95 caracteres imprimibles.

• latin1, CP1252 se diferencia de ISO-8859-1 en que se utiliza el rango 0×80-0x9F para representar distintos caracteres imprimibles, como el símbolo del euro o el de la libra, en lugar de caracteres de control.

• Para ascii la colación por defecto es ascii_general_ci, para latin1latin1_swedish_ci y para utf8 utf8_general_ci.
1. SHOW COLLATION LIKE "utf8%";

Para ver las distintas bases de datos disponibles en nuestro servidor MySQL:
1. SHOW DATABASES;

Para borrar una base de datos:
1. DROP DATABASE base_datos;

Para seleccionar la base de datos con la que queremos trabajar:
1. USE base_datos;

Para ver las tablas de la base de datos:
1. SHOW TABLES;

Para ver las columnas de la tabla:
1. SHOW COLUMNS FROM tabla;

o bien el atajo:
1. DESCRIBE tabla;

incluso:


1. DESC tabla;
ver también la colación, FULL a SHOW COLUMNS:

1. SHOW FULL COLUMNS FROM tabla;

crear una tabla nueva CREATE TABLE.
1. CREATE TABLE usuario (
2.     id_usuario INT PRIMARY KEY AUTO_INCREMENT,
3.     nombre VARCHAR(50) NOT NULL,
4.     direccion VARCHAR(50) NOT NULL,
5.     ciudad VARCHAR(20) NOT NULL,
6.     edad TINYINT NOT NULL
7. );
1. CREATE TABLE blog (
2.     id_blog INT PRIMARY KEY AUTO_INCREMENT,
3.     id_usuario INT REFERENCES usuario(id_usuario),
4.     titulo VARCHAR(30) NOT NULL
5. );

tipos de las columnas números enteros, números decimales, fechas, horas, cadenas y los tipos espaciales del Open Geospatial Consortium,.

 tipos numéricos:


• BIT: Representación en binario de un número. por ejemplo BIT(8).

• TINYINT: Para representar enteros muy pequeños, de -128 a 127. Se puede utilizar la palabra clave UNSIGNED para que almacene solo números positivos, en cuyo caso el rango va de 0 a 255.

• BOOL: Sinónimo de TINYINT(1). El valor 0 se considera falso, el resto verdadero.

• BOOLEAN: Sinónimo de TINYINT(1). El valor 0 se considera falso, el resto verdadero.

• SMALLINT: Un entero pequeño, de -32768 a 32767. Si se utiliza UNSIGNED el rango va de 0 a 65535.

• MEDIUMINT: Un entero de tamaño medio, de -8388608 a 8388607. Si se usaUNSIGNED, de 0 a 16777215.

• INT: Un entero, con rango de -2147483648 a 2147483647 y de 0 a 4294967295 si esUNSIGNED.

• INTEGER: Sinónimo de INT.

• BIGINT: Un entero grande, de -9223372036854775808 a 9223372036854775807 y de 0 a 18446744073709551615 para los UNSIGNED

• SERIAL: Alias para BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

• FLOAT: Un número decimal en coma flotante. Los valores permitidos son el 0 y los valores de -3.402823466E+38 a -1.175494351E-38 y de 1.175494351E-38 a 3.402823466E+38 También podemos encontrarnos con algo como FLOAT(3, 2)  DOUBLE: Un número en coma flotante de precisión doble.

• REAL: Sinónimo de DOUBLE, a menos que esté activado el modo REAL_AS_FLOAT, en cuyo caso funciona como sinónimo de FLOAT.

• DOUBLE PRECISION: Sinónimo de DOUBLE.

• DECIMAL: Para representar números decimales de forma más precisa que FLOAT yDOUBLE.

• DEC: Sinónimo de DECIMAL

• NUMERIC: Sinónimo de DECIMAL.

Los tipos relativos a fechas y horas son los siguientes:
• DATE: Para representar una fecha en formato YYYY-MM-DD. El rango soportado va desde 1000-01-01 a 9999-12-31.

• DATETIME: Una combinación de fecha y hora en formato YYYY-MM-DD HH:MM:SS. El rango soportado va desde 1000-01-01 00:00:00 a 9999-12-31 23:59:59.

• TIMESTAMP: Un timestamp. El rango va desde 1970-01-01 00:00:01 UTC a 2038-01-09 03:14:07 UTC. Si se asigna el valor NULL a un TIMESTAMP se almacenará la fecha y hora actual, por lo que puede ser útil para saber cuándo se realizó la última insección o actualización.

• TIME: Una hora. El valor se muestra en formato HH:MM:SS. El rango va de -838:59:59 a 838:59:59.

• YEAR: Un año en formato YYYY.

• tipos de texto son los siguiente:

• CHAR: Cadenas de longitud fija cuyo número de caracteres se especifica entre paréntesis (si no se especifica es 1 por defectoVARCHAR: Cadena de longitud variable. Opcionalmente se puede indicar el tamaño máximo de la cadena con un número entre paréntesis.

• BINARY: Similar a CHAR pero en este caso las cadenas se almacenan como binarias.

• VARBINARY: Similar a VARCHAR pero en este caso las cadenas se almacenan como binarias.

• BLOB: Un Binary Large OBject (gran objeto binario), para almacenar datos binarios como imágenes. El tamaño máximo es de 65.535 bytes.

• TINYBLOB: Un BLOB de pequeño tamaño (un máximo de 255 bytes).

• MEDIUMBLOB: Un BLOB de tamaño medio (un máximo de 16.777.215 bytes; cerca de 16MB)

• LONGBLOB: Un BLOB de gran tamaño (un máximo de 4GB bytes)

• TEXT: Un texto con un máximo de 65.535 caracteres (menos si se utilizan caracteres multi-byte, evidentemente).

• TINYTEXT: Un texto pequeño, con un máximo de 255 caracteres.

• MEDIUMTEXT: Un texto de longitud media, con un máximo de 16.777.215 caracteres.

• LONGTEXT: Un texto largo, con un máximo de 4.294.967.295 caracteres.

• ENUM: Enumerado, un tipo cuyo valor puede ser una cadena de entre las indicadas entre paréntesis.

• SET: Similar a ENUM, pero en este caso el campo puede tener cero o más valores de entre los indicados entre paréntesis.

Para cada columna, además del tipo, podemos definir otras propiedades
• NOT NULL: No se puede introducir valores nulos.
• DEFAULT valor: Para definir un valor por defecto
• AUTO_INCREMENT: Para cada tupla añadida a la tabla el valor del campo crecerá en una unidad.

Solo puede existir una columna con AUTO_INCREMENT en cada tabla, y debe tratarse de una clave.
• UNIQUE KEY: Los valores no se pueden repetir. Si puede existir varias tuplas con valor NULL para la columna.

• PRIMARY KEY: La clave primaria de la relación. Los valores deben ser únicos y no nulos. Una tabla, como es lógico, sólo puede tener una clave primaria. Si necesitamos crear una clave primaria compuesta por varios campos no podemos usar este método en el que definimos las propiedades de un solo campo, sino que tendremos que utilizar una clausula PRIMARY KEY

• COMMENT "comentario": Comentarios varios sobre el campo.
• REFERENCES tabla (campo): Para crear una clave foránea o ajena.

De esta forma indicamos este valor toma valores de claves de otra tabla, implementando así una relación 1:N. En esta clausula también podemos indicar las reglas de integridad referencial, es decir, qué ocurrirá cuando se borre (ON DELETE) o se actualice (ON UPDATE) la tupla referenciada. Los valores posibles son RESTRICT, que indica que no se permite la actualización o borrado; CASCADE, con la que la actualización o borrado se propaga; SET NULL, que establece las claves foráneas a NULL y NO ACTION, que en MySQL es similar a RESTRICT.

Las restricciones posibles para la tabla son:

• PRIMARY KEY (campo1, campo2, ...): Para indicar el campo o campos que conforman la clave primaria.
• KEY (campo1, campo2, ...): Para crear una clave no primaria ni única. Esto creará un índice para el campo.
• INDEX (campo1, campo2, ...): Sinónimo de KEY.
• FOREIGN KEY (campo1, campo2, ...) REFERENCES tabla (campo3, campo4, ...): Para crear una clave foránea o ajena. Sigue el mismo formato queREFERENCES para las columnas.
• CHECK (expresion): En teoría, para definir otras restricciones. En realidad esta opción se admite por el parser, pero se ignora.

Tenemos que recurrir a triggers o disparadores.

Para eliminar una tabla:
1. DROP TABLE tabla;

Para que no produzca un error si la tabla no existe:
1. DROP TABLE IF EXISTS tabla;

Para modificar una tabla se utiliza ALTER TABLE que permite cosas como añadir columnas:
1. ALTER TABLE tabla ADD COLUMN valor INT;

Eliminar columnas:
1. ALTER TABLE tabla DROP COLUMN valor;

Cambiar la definición de las columnas:
1. ALTER TABLE tabla MODIFY COLUMN valor TINYINT;

O renombrar la tabla:
1. ALTER TABLE tabla RENAME TO tabla2;

Para insertar valores en una tabla, si vamos a dar valores a todas las columnas:

1. INSERT INTO usuario VALUES (1, "Pablo Santander", "Calle Bolivia 18", "Madrid", 17);
Si sólo vamos a dar valores solo a algunas columnas hay que indicar a cuáles especificamente:
1. INSERT INTO usuario(nombre, direccion, ciudad, edad) VALUES ("Juan Marmota", "Calle Santiago 23", "Sevilla", 21);
Para insertar varias tuplas con un solo INSERT solo hay que separarlas con comas:
1. INSERT INTO usuario VALUES
2.     (3, "Marta Marsopa", "Calle Italia 4", "Madrid", 58),
3.     (4, "Jaime Torres", "Avenida de Barcelona 12", "Valladolid" , 37),
4.     (10, "Juan Martero", "Calle Madrid 12", "Barcelona", 26);
1. INSERT INTO blog VALUES
2.     (1, 1, "El emo blog"),
3.     (2, 2, "El ego blog"),
4.     (4, 4, "Mis fotos"),
5.     (5, 5, "En Groenlandia");

Para actualizar las tuplas:

1. UPDATE usuario
2.     SET nombre = "Marta Marsupial", direccion = "Calle Italia 14"
3.     WHERE id = 3;
Para borrar tuplas:
1. DELETE FROM usuario
2.     WHERE id = 2;
Para borrar todas las tuplas de una tabla:
1. DELETE FROM usuario;
o bien:
1. TRUNCATE usuario;
Para seleccionar tuplas se utiliza SELECT. Basta con especificar qué columnas queremos seleccionar de las tuplas y la tabla en la que se encuentran:
1. SELECT nombre, direccion
2.     FROM usuario;
Un truco para que se muestren los resultados en vertical en lugar de en tablas, que puede ser útil, por ejemplo, si tenemos poco espacio horizontal, es terminar la consulta con \G en lugar de ;:
1. SELECT nombre, direccion
2.     FROM usuario\G
Si queremos seleccionar todos los campos podemos usar el caracter * como atajo:
1. SELECT *
2.     FROM usuario;
También podemos usar funciones en las expresiones que determinan lo que estamos seleccionando. En este caso se usa LOWER, que transforma una cadena en minúsculas:
1. SELECT LOWER(nombre), LOWER(direccion)
2.     FROM usuario;
Para seleccionar sólo las tuplas que cumplan una determinada condición:
1. SELECT *
2.     FROM usuario
3.     WHERE edad < 18;
Para agrupar las tuplas por un determinado campo:
1. SELECT ciudad, COUNT(ciudad)
2.     FROM usuario
3.     GROUP BY ciudad;
La salida de un GROUP BY está ordenada según los valores del campo sobre el que se agrupa. La ordenación se realiza por defecto en orden ascendente (ASC) para hacerlo en orden descendente se añade la palabra clave DESC:
1. SELECT ciudad, COUNT(ciudad)
2.     FROM usuario
3.     GROUP BY ciudad DESC;
Para seleccionar solo algunas tuplas de entre el resultado de un GROUP BY se puede utilizar la cláusula HAVING:
1. SELECT ciudad, COUNT(ciudad)
2.     FROM usuario
3.     GROUP BY ciudad DESC
4.     HAVING COUNT(ciudad) < 1;
Para ordenar las tuplas según los valores de un campo:
1. SELECT *
2.     FROM usuario
3.     ORDER BY nombre;
Como GROUP BY, se ordena de forma ascendente, a menos que se utilice la palabra clave DESC:
1. SELECT *
2.     FROM usuario
3.     ORDER BY nombre DESC;
Para limitar el número de tuplas que queremos que devuelva SELECT se utiliza LIMIT:
1. SELECT *
2.     FROM usuario
3.     LIMIT 2;
A LIMIT se le pueden pasar dos números separados por comas, en cuyo caso el primer número indica la tupla desde la que se empieza a contar (el índice comienza en 0, no en 1) y el segundo el número de tuplas a devolver. Esto puede ser útil, por ejemplo, para paginar los resultados:
1. SELECT *
2.     FROM usuario
3.     LIMIT 2,2;
1. SELECT *
2.     FROM usuario JOIN blog;
1. SELECT nombre, titulo
2.     FROM usuario JOIN blog ON usuario.id_usuario = blog.id_usuario;
Un INNER JOIN cuya expresión para la sentencia ON es una condición de igualdad, como el caso anterior, se conoce como equi-join.

El NATURAL JOIN, o combinación natural, es un tipo especializado de equi-join en el que no hace falta especificar la sentencia ON, sino que se combinan las tuplas para las que las columnas del mismo nombre de ambas tablas tengan el mismo valor. En la sentencia siguiente obtendríamos el mismo resultado que con la anterior, ya que estábamos comparando la columna id_usuario de usuario e id_usuario de blog, que como vemos tienen el mismo nombre. Al usar NATURAL JOIN, eso si, hay que tener mucho cuidado si renombramos las columnas de las tablas.

1. SELECT  nombre, titulo
2.     FROM usuario NATURAL JOIN blog;
Si queremos especificar qué campo o campos de igual nombre en ambas tablas queremos comparar, podemos usar USING en lugar de NATURAL JOIN.
1. SELECT nombre, titulo
2.     FROM usuario JOIN blog USING (id_usuario);
Si usaramos un LEFT JOIN, a las tuplas del caso anterior se les sumaría un nuevo conjunto de tuplas que consistiría en las tuplas de la tabla izquierda (de ahí el LEFT) que no combinaban con ninguna tupla de la tabla derecha, teniendo estas nuevas tuplas valores NULL para las columnas de la tabla derecha. SELECT nombre, titulo

1.     FROM usuario LEFT JOIN blog ON usuario.id_usuario = blog.id_usuario;
Si usaramos un RIGHT JOIN ocurriría algo semejante con las tuplas de la tabla derecha, asegurándonos de que se mencionen todos los blogs, aunque no tengan un usuario asociado:

1. SELECT nombre, titulo
2.     FROM usuario RIGHT JOIN blog ON usuario.id_usuario = blog.id_usuario;
Buena noticia para los que prefieren escribir poco: para los OUTER JOIN también podemos utilizar NATURAL

1. SELECT nombre, titulo

2.     FROM usuario NATURAL LEFT JOIN blog;
no está implementada en MySQL, aunque podemos simularla con UNION ALL (UNION se utiliza para combinar los resultados de varios SELECT; la palabra clave ALL tiene el efecto de que no se eliminen las tuplas duplicadas, como sería el caso del comportamiento deUNION por defecto).

1. SELECT nombre, titulo
2.     FROM usuario LEFT JOIN blog ON usuario.id_usuario = blog.id_usuario
3. UNION
4. SELECT nombre, titulo
5.     FROM usuario RIGHT JOIN blog ON usuario.id_usuario = blog.id_usuario
6.     WHERE usuario.id_usuario IS NULL;

Comandos


TUTORIAL



  • Para comenzar, iremos al sitio de blogger: http://www.blogger.com,  y vamos a apretar el botón que dice CREAR TU BLOG AHORA.

  • Al presionar dicho botón, nos encontraremos con un formulario para crear una cuenta de google. El formulario es bastante simple y en el mismo explica que es cada cosa que debemos completar. Luego presionamos el botón de CONTINUAR.

  • Luego de eso, llegaremos a una pantalla donde dice “Asignar un nombre a su blog”.
    El campo “Título del blog”, será el título que aparecerá en tu blog.
    En el campo “Dirección del blog (URL)”, será la dirección por la cual se podrá acceder a tu blog. Es recomendable comprobar la disponibilidad, haciendo click en el link que se ve allí.
    Una vez completados estos campos, presionaremos el botón de CONTINUAR.

  • “Elegir una plantilla”. Aquí vamos a elegir la apariencia que va a tener nuestro blog, hay muchos estilos para elegir. Si presionamos sobre el link de vista preliminar, vamos a poder ver un ejemplo para poder decidirnos mejor. Si no te gusta ninguna de estas plantillas, después podrás personalizarla o incluir una plantilla nueva.

    Una vez que hayamos elegido el que más nos gusto, apretamos el botón de CONTINUAR.

  • Y al fin llegamos a la pantalla donde dice “Su blog se ha creado”. Así de sencillo es crear un blog en blogger.

  • Ahora bien, una vez creado el blog, es cuestión de publicar diferentes artículos; así que vamos a ver como funciona eso, haciendo click en el botón de EMPEZAR A PUBLICAR.


 Publicar mensajes en Blogger

  • “Creación de entradas”,  tres opciones: Crear, Editar entradas y Moderar comentarios. Nosotros estamos situados en Crear, y debajo de eso podemos ver un formulario donde se puede ingresar él titulo de nuestra entrada; y luego el articulo que queremos redactar.

  • Crear una entrada es   casi lo mismo que editar un texto en word, por lo cual no hay mas complicación, también tenemos la opción de editar el articulo en formato HTML para los que deseen hacerlo.

  • Una vez redactado el articulo, podemos o bien guardarlo (para editarlo mas adelante) presionando el botón de GUARDAR AHORA; O bien publicarlo para que toda la gente que ingrese a tu blog pueda verlo presionando el botón de PUBLICAR ENTRADA.



Configurar Blogger

  • En cada uno de nuestros blogs tenemos links para crear nuevas entradas; tanto como links para las 3 solapas principales de blogger: Entradas, Configuración y Diseño. Nosotros vamos a hacer click en el link de configuración.

  • Luego de hacer click allí, nos enviara a la configuración básica de nuestro blog. Allí no hay nada demasiado importante; pero si leen lo que dice en cada ítem de la configuración se entenderá a la perfección. Lo más destacable de aquí, es que si queremos eliminar nuestro blog para siempre; es aquí donde debemos hacerlo, al final de la configuración básica.

    Esta pantalla simplemente sirve para cambiar la URL de nuestro blog.

  • En la solapa de Comentarios, podremos configurar todo lo relativo a los comentarios que nos dejara la gente en nuestros post.

  • En Correo electrónico vamos a poder configurar un correo electrónico para poder recibir las entradas de nuestro blog a ese correo, también como vamos a poder configurar un correo desde el cual, mandándole un correo al mismo, vamos a poder enviar artículos que se publicaran en el blog.

  • Por ultimo, en la solapa de permisos, podemos agregar varios autores al blog, permitiendo que no solo nosotros, los creadores, podamos escribir en el mismo; y de esa manera hacer un blog comunitario entre mas de una persona. Adicionalmente, aquí, vamos a poder definir los permisos de quien va a poder leer nuestro blog; Lo más común es que cualquier persona pueda leer nuestro blog.