viernes, 13 de junio de 2014

CREAR BASE DE DATOS EN MYSQL

                                               




Lenguaje SQL Creación de bases de datos y tablas

A nivel teórico, existen dos lenguajes para el manejo de bases de datos:
DDL (Data Definition Language) Lenguaje de definición de datos. Es el lenguaje que se usa para crear bases de datos y tablas, y para modificar sus estructuras, así como los permisos y privilegios.
Este lenguaje trabaja sobre unas tablas especiales llamadas diccionario de datos.
DML (Data Manipilation Language) lenguaje de manipulación de datos. Es el que se usa para modificar y obtener datos desde las bases de datos.
SQL engloba ambos lenguajes DDL+DML, y los estudiaremos juntos, ya que ambos forman parte del conjunto de sentencias de SQL.
En este capítulo vamos a explicar el proceso para pasar del modelo lógico relacional, en forma de esquemas de relaciones, al modelo físico, usando sentencias SQL, y viendo las peculiaridades específicas de MySQL.

Crear una base de datos

Cada conjunto de relaciones que componen un modelo completo forma una base de datos. Desde el punto de vista de SQL, una base de datos es sólo un conjunto de relaciones (o tablas), y para organizarlas o distinguirlas se accede a ellas mediante su nombre. A nivel de sistema operativo, cada base de datos se guarda en un directorio diferente.
Debido a esto, crear una base de datos es una tarea muy simple. Claro que, en el momento de crearla, la base de datos estará vacía, es decir, no contendrá ninguna tabla.
Vamos a crear y manipular nuestra propia base de datos, al tiempo que nos familiarizamos con la forma de trabajar de MySQL.
Para empezar, crearemos una base de datos para nosotros solos, y la llamaremos "prueba". Para crear una base de datos se usa una sentencia CREATE DATABASE:


Podemos averiguar cuántas bases de datos existen en nuestro sistema usando la sentencia SHOW DATABASES:




A partir de ahora, en los próximos capítulos, trabajaremos con esta base de datos, por lo tanto la seleccionaremos como base de datos por defecto. Esto nos permitirá obviar el nombre de la base de datos en consultas. Para seleccionar una base de datos se usa el comando USE, que no es exactamente una sentencia SQL, sino más bien de una opción de MySQL:





Crear una tabla

Veamos ahora la sentencia CREATE TABLE que sirve para crear tablas.
La sintaxis de esta sentencia es muy compleja, ya que existen muchas opciones y tenemos muchas posibilidades diferentes a la hora de crear una tabla. Las iremos viendo paso a paso, y en poco tiempo sabremos usar muchas de sus posibilidades.
En su forma más simple, la sentencia CREATE TABLE creará una tabla con las columnas que indiquemos. Crearemos, como ejemplo, una tabla que nos permitirá almacenar nombres de personas y sus fechas de nacimiento. Deberemos indicar el nombre de la tabla y los nombres y tipos de las columnas:





Hemos creado una tabla llamada "gente" con dos columnas: "nombre" que puede contener cadenas de hasta 40 caracteres y "fecha" de tipo fecha.
Podemos consultar cuántas tablas y qué nombres tienen en una base de datos, usando la sentencia SHOW TABLES:



Pero tenemos muchas más opciones a la hora de definir columnas. Además del tipo y el nombre, podemos definir valores por defecto, permitir o no que contengan valores nulos, crear una clave primaria, indexar...
La sintaxis para definir columnas es:





Valores nulos

Al definir cada columna podemos decidir si podrá o no contener valores nulos.
Debemos recordar que, como vimos en los capítulos de modelado, aquellas columnas que son o forman parte de una clave primaria no pueden contener valores nulos.
Veremos que, si definimos una columna como clave primaria, automáticamente se impide que pueda contener valores nulos, pero este no es el único caso en que puede ser interesante impedir la asignación de valores nulos para una columna.
La opción por defecto es que se permitan valores nulos, NULL, y para que no se permitan, se usa NOT NULL. Por ejemplo:





Valores por defecto


Para cada columna también se puede definir, opcionalmente, un valor por defecto. El valor por defecto se asignará de forma automática a una columna cuando no se especifique un valor determinado al añadir filas.
Si una columna puede tener un valor nulo, y no se especifica un valor por defecto, se usará NULL como valor por defecto. En el ejemplo anterior, el valor por defecto para poblacion es NULL.
Por ejemplo, si queremos que el valor por defecto para poblacion sea 5000, podemos crear la tabla como:




Claves primarias

También se puede definir una clave primaria sobre una columna, usando la palabra clave KEY o PRIMARY KEY.
Sólo puede existir una clave primaria en cada tabla, y la columna sobre la que se define una clave primaria no puede tener valores NULL. Si esto no se especifica de forma explícita, MySQL lo hará de forma automática.
Por ejemplo, si queremos crear un índice en la columna nombre de la tabla de ciudades, crearemos la tabla así:


Usar NOT NULL PRIMARY KEY equivale a PRIMARY KEY, NOT NULL KEY o sencillamente KEY. Personalmente, prefiero usar la primera forma o la segunda.
Existe una sintaxis alternativa para crear claves primarias, que en general es preferible, ya que es más potente. De hecho, la que hemos explicado es un alias para la forma general, que no admite todas las funciones (como por ejemplo, crear claves primarias sobre varias columnas). Veremos esta otra alternativa un poco más abajo.


Columnas autoincrementadas
En MySQL tenemos la posibilidad de crear una columna autoincrementada, aunque esta columna sólo puede ser de tipo entero.
Si al insertar una fila se omite el valor de la columna autoinrementada o si se inserta un valor nulo para esa columna, su valor se calcula automáticamente, tomando el valor más alto de esa columna y sumándole una unidad. Esto permite crear, de una forma sencilla, una columna con un valor único para cada fila de la tabla.
Generalmente, estas columnas se usan como claves primarias 'artificiales'. MySQL está optimizado para usar valores enteros como claves primarias, de modo que la combinación de clave primaria, que sea entera y autoincrementada es ideal para usarla como clave primaria artificial:



Adicionalmente, al crear la tabla, podemos añadir un comentario a cada columna. Este comentario sirve como información adicional sobre alguna característica especial de la columna, y entra en el apartado de documentación de la base de datos:




miércoles, 11 de junio de 2014

Creacion de una base de datos





Para empezar, crearemos una base de datos para nosotros solos, y la llamaremos "prueba". Para crear una base de datos se usa una sentencia CREATE DATABASE

mysql> CREATE DATABASE prueba;
Query OK, 1 row affected (0.03 sec)

mysql>

Podemos averiguar cuántas bases de datos existen en nuestro sistema usando la sentencia SHOW DATABASES
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| mysql              |
| prueba             |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql>

Veamos ahora la sentencia CREATE TABLE que sirve para crear tablas
La sintaxis de esta sentencia es muy compleja ya que existen muchas opciones y tenemos muchas posibilidades  diferentes a la hora de crear una tabla . las iremos viendo paso a paso , y en poco tiempo sabremos usar muchas de sus posibilidades
En su forma más simple, la sentencia CREATE TABLE creará una tabla con las columnas que indiquemos. Crearemos, como ejemplo, una tabla que nos permitirá almacenar nombres de personas y sus fechas de nacimiento. Deberemos indicar el nombre de la tabla y los nombres y tipos de las columnas




mysql> USE prueba
Database changed
mysql> CREATE TABLE gente (nombre VARCHAR(40), fecha DATE);
Query OK, 0 rows affected (0.53 sec)

mysql>

Hemos creado una tabla llamada “gente " con dos columnas: "nombre" que puede contener cadenas de hasta 40 caracteres y "fecha" de tipo fecha
mysql> SHOW TABLES;
+------------------+
| Tables_in_prueba |
+------------------+
| gente            |
+------------------+
1 row in set (0.01 sec)

mysql>
Pero tenemos muchas más opciones a la hora de definir columnas. Además del tipo y el nombre, podemos definir valores por defecto  permitir o no que contengan valores nulos, crear una clave primaria, indexar
La sintaxis para definir columnas es :
    nombre_col tipo [NOT NULL | NULL] [DEFAULT valor_por_defecto]
        [AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'string']
        [definición_referencia]
TIPOS DE CADENA


~ CHAR
La longitud de una columna CHAR se fija a la longitud que se declara al crear la tabla.

 La longitud puede ser cualquier valor de 0 a 255

Los valores en columnas VARCHAR son cadenas de caracteres de longitud variable. En MySQL 5.0, la longitud puede especficarse de 0 a 255 antes de MySQL 5.0.3, y de 0 a 65,535 en 5.0.3 y versiones posteriores. (La máxima longitud efectiva de un VARCHAR en MySQL 5.0
se determina por el tamaño de registro máximo y el conjunto de caracteres usados.
La longitud máxima total es de 65,532 bytes.)

~Los tipos BINARY y VARBINARY son similares a CHAR y VARCHAR, excepto que contienen cadenas de caracteres binarias en lugar de cadenas de caracteres no binarias. Esto es, contienen cadenas de bytes en lugar de cadenas de caracteres. Esto significa que no tienen conjunto de caracteres asignado, y la comparación y ordenación se basa en los valores numéricos de los valores de los bytes.

La longitud máxima disponible es la máxima para BINARY t VARBINARY como para CHAR y VARCHAR, excepto que la longitud para BINARY y VARBINARY es una longitud en bytes en lugar de en caracteres.


~Los cuatro tipos TEXT son TINYTEXT, TEXT, MEDIUMTEXT, y LONGTEXT. Se corresponden a los cuatro tipos BLOB y tienen las mismas longitudes y requerimientos de almacenamiento.

Consulte Sección 11.5, “Requisitos de almacenamiento según el tipo de columna”.

Las columnas BLOB se tratan como cadenas de caracteres binarias (de bytes). Las columnas TEXT se tratan como cadenas de caracteres no binarias (de carácateres). Las columnas BLOB no tienen conjunto de caracteres, y la ordenación y la comparación se basan en los valores numéricos de los bytes. Las columnas TEXT tienen un conjunto de caracteres y se ordenan y comparan en base de la colación del conjunto de caracteres asignada a la columna desde MySQL 4.1.

No hay conversión de mayúsculas/minúsculas para columnas TEXT o BLOB durante el almacenamiento o la recuperación.

Si asiguna un valor a una columna BLOB o TEXT que exceda la longitud máxima del tipo de la columna, el valor se trunca. Si los caracteres truncados no son espacios, aparece una advertencia. Puede hacer que aparezca un error en lugar de una advertencia usando el modo SQL estricto. Consulte Sección 5.3.2, “El modo SQL del servidor”.

En la mayoría de aspectos, puede tratar una columna BLOB como VARBINARY que puede ser tan grande como desee. Similarmente, puede tratar columnas TEXT como VARCHAR. BLOB y TEXT difieren de VARBINARY y VARCHAR en los siguientes aspectos::


martes, 10 de junio de 2014

COMO CREAR UNA BASE DE DATOS


INICIAMOS CREANDO LA BASE DE DATOS


mysql> CREATE DATABASE CADENAS_DE_HOTELES;


RESPECTIVAMENTE SE CREA CADA UNA DE SUS TABLAS CON SUS CAMPOS Y ATRIBUTOS:

mysql>  CREATE TABLE CATEGORIA (ID_CATEGORIA INT NOT NULL AUTO_INCREMENT, TIPO_CATEGORIA VARCHAR (50) NOT NULL, IVA_CATEGORIA INT NOT NULL, DESCRIPCION_CATEGORIA TEXT NOT NULL,                             PRIMARY KEY (ID_CATEGORIA)) ENGINE=INNODB;

mysql> CREATE TABLE AGENCIA (ID_AGENGIA INT NOT NULLAUTO_INCREMENT, NOMBRE_AGENCIA VARCHAR (100) NOT NULL,  DIRECCION_AGENCIA VARCHAR(50) NOT NULL,                           PARTICULARES_AGENCIA VARCHAR(50) NOT NULL, PAQUETES_AGENCIA TEXT NOT NULL,                             
PRIMARY KEY (ID_AGENGIA)) ENGINE=INNODB;

mysql>  CREATE TABLE PARTICULARES ( ID_PARTICULARES INT NOT NULL AUTO_INCREMET,                             NOMBRE_PARTICULAR VARCHAR(100) NOT NULL, DIRECCION_PARTICULAR VARCHAR(50) NOT NULL, TELEFONO_PARTICULAR VARCHAR(12) NOT NULL, PRIMARY KEY ( ID_PARTICULARES)) ENGINE=INNODB;

mysql>  CREATE TABLE HOTEL ( COD_HOTEL INT NOT NULL,  NOMBRE_HOTEL CHAR(100) NOT NULL, DIRECCION_HOTEL VARCHAR(50) NOT NULL, TELEFONO_HOTEL VARCHAR(12) NOT NULL,                              AÑO_CONSTRUCCION VARCHAR(10) NOT NULL, PRIMARY KEY (COD_HOTEL),FOREIGN KEY(ID_CATEGORIA)REFERENCES CATEGORIA (ID_CATEGORIA)) ENGINE=INNODB;

mysql>  CREATE TABLE HABITACIONES ( COD_HABITACIONES VARCHAR(12) NOT NULL,                              COD_HOTEL INT NOT NULL,TIPO_HABITACION VARCHAR(50) NOT NULL,                              DESCRIPCION_HABITACION TEXT NOT NULL, PRIMARY KEY (COD_HABITACIONES), FOREIGN KEY(COD_HOTEL) REFERENCES HOTEL(COD_HOTEL)) ENGINE=INNODB;


mysql>  CREATE TABLE RESERVACIONES (ID_RESERVACIONES INT NOT NULL AUTO_INCREMENT, FECHA_INI_RESERVA DATETIME NOT NULL, FECHA_FIN_RESERVA DATETIME NOT NULL,PRIMARY KEY (ID_RESERVACIONES),FOREIGN KEY (ID_PARTICULARES) REFERENCES PARTICULARES(ID_PARTICULARES), FOREIGN KEY (ID_AGENGIA) REFERENCES AGENCIA (ID_AGENGIA), FOREIGN KEY (COD_HOTEL) REFERENCES HOTEL (COD_HOTEL)) ENGINE=INNODB;

 DESPUÉS DE HABER AGREGADO TODOS LAS TABLAS REQUERIDAS Y SUS CAMPOS Y ATRIBUTOS PROCEDEMOS, HA REALIZAR LOS REGISTRO QUE SE PIDAN O LOS QUE SE QUIERAN.  UTILIZANDO: 

INSER INTO y el nombre da la Categoría VALUES();


INSERT INTO CATEGORIA VALUES (1,”Tres Estrellas”, 10,”Es integrada por una cama de las mejores, yacusi, tv, equipo de sonido, nevera con lo que quieras comer, y derecho a la piscina”) (2,”Dos Estrellas”, 7,”Es integrada por una cama sencilla, yacusi, tv, equipo de sonido, nevera, y derecho a la piscina”) (3,”Suit”,15,”Es integrada por una cama de las mejores, yacusi, tv, equipo de sonido, Servicio de la comida a la habitacion, y derecho a la piscina”) (4,”Tres Estrellas”,20,”Es integrada por una cama de las mejores, yacusi, tv, equipo de sonido, nevera con lo que quieras comer, y derecho a la piscina”) (5,”Dos Estrellas”, 5,”Es integrada por una cama sencilla, yacusi, tv, equipo de sonido, nevera, y derecho a la piscina”)


INSERT INTO AGENCIA VALUES (1,”La floresta”, “Ipiales-Cundinamarca Centro”,”Saldoval Juan Carlos”,“Variedad de Categorias, como Suit, Tres estrellas, Dos estrellas, y convenios con Reservas de Buques”) (2,”La Playa del Amor”, “Cal. 3 Nº34-67”,”Pedro Sanchez”,“Variedad de Categorias, como Suit, Tres estrellas, Dos estrellas, Organización de veladas románticas junto al mar”) (3,”La perla”, “Medellin-Cal.34 Nº23-12”,”Sanchez Lozano Angel”,“Variedad de Categorias, como Suit, Tres estrellas, Dos estrellas, y convenios con Reservas de Buques”) (4,”Salome”, “Ibague-Cal.45 Nº98-53”,”Garcia Padro Maria ”,“Variedad de Categorias, como Suit, Tres estrellas, Dos estrellas, Organización de veladas románticas junto al mar”) (5,”La Esperanza”, “Ipiales-Cundinamarca Centro”,”Saldoval Juan Carlos”,“Variedad de Categorias, como Suit, Tres estrellas, Dos estrellas, y convenios con Reservas de Buques”);

INSERT INTO AGENCIA VALUES(1,”Angel umberto”,”Cal 23 Nº12-04 Manizales”,”2456789”) (2,”Angela Bermudez Cortes”,”Cal 13 Nº10-04 Monteria”,”24345678”) (3,”Julia Suarez Aragon”,”Cal 34 Nº18-44 Bogota”,”2456023”) (4,”Nidya Capera Carto”,”Cal 56 Nº16-34 Manizales”,”24567693”) (5,”Juana Valeria Sandoval”,”Cal 23 Nº12-04 Leticia”,”2456093”);

INSERT INTO HOTEL VALUES (12344565,”El Arco”, “Cal 29 Nº10-67”,”2345123”,”2013/05/15”,1) (45602345,”Orqidea”, “Cal 45 Nº14-61”,”2356789”,”2011/05/27”,2)(125612347,”Petalo”, “Cal 29 Nº10-67”,”23451746”,”2016/05/15”,3)( 12344565,”Venus”, “Cal 20 Nº63-67”,”2346745”,”2014/05/15”,4)( 15672565,”La Rosa”, “Cal 69 Nº10-47”,”2642323”,”2014/11/27”,5);


INSERT INTO HABITACION VALUES (“DF123476”,” Cinco Estrellas”,”24 Pisos, con ascensor, Servicio de Piscina, Yacusi, Restaurante, Bar”, 12344565,”) (“GH239871”,” Tres Estrellas”,”15 Pisos, con ascensor, Servicio de Piscina, Yacusi, Restaurante, Bar”, 45602345”) (“NM38629”,” Cinco Estrellas”,”20 Pisos, con ascensor, Servicio de Piscina, Yacusi, Restaurante, Bar”, 125612347”) (“NJ674352”,” Dos Estrellas”,”2 Pisos, Yacusi, Restaurante, Bar”, 12344565”) (“HJ6743782”,” Dos Estrellas”,”4 Pisos, Yacusi, Restaurante, Bar”, 15672565”)

INSERT INTO RESERVACIONES VALUES(1, ”2014/05/15”, ”2014/06/15”,1,1, 12344565)(2, ”2014/05/15”, ”2014/07/15”,2,2, 45602345)(3, ”2014/05/15”, ”2014/06/15”,2,2, 45602345)(4, ”2014/05/15”, ”2014/08/15”,2,2, 
45602345) )(5, ”2014/05/15”, ”2014/10/15”,2,2, 45602345)








Tipos de Datos 


 Definición : Tipos de Datos es la característica de las columnas y variables que definen que tipos de valores de datos pueden albergar. La característica indica cuando un dato representa un número, fecha, un carácter string, etc.

Los tipos de Datos son usados para indicar el tipo de campo que estamos creando en la tabla. MySQL soporta un número de tipos de datos en tres categorías importantes:

Explicación

Tipod de Datos Numéricos :

    Los tipos de datos numéricos son como sigue:

BIT
TINYINT
BOOLEAN
SMALLINT
MEDIUMINT
INT
INTEGER
BIGINT
FLOAT
DOUBLE
DECIMAL

    Vamos a ver los tipos de datos numéricos de manera abreviada.


BIT :

    BIT es un sinónimo de TINYINT(1).

TINYINT[(M)] :

    Un número entero muy pequeño. El rango suscrito va de -128 a 127. El rango no suscrito va de 0 a 255.

BOOL, BOOLEAN :

    Estos tipos son sinónimos de TINYINT(1). Un valor para cero es considerado falso. Valores que no sean cero son considerados verdad.

SMALLINT :

    Un número entero pequeño. El rango suscrito va de -32768 a 32767. El rango no suscrito va de 0 a 65535.

MEDIUMINT :

    Un número entero de tamaño medio. El rango suscrito va de -8388608 a 8388607. El rango no suscrito va de 0 a 16777215.

INT :

    Un número entero de tamaño normal. El rango suscrito va de -2147483648 to 2147483647. El rango no suscrito va de 0 a 4294967295.

INTEGER :

    Este tipo es sinónimo de INT.

BIGINT :

     Un número entero grande. El rango suscrito va de -9223372036854775808 a 9223372036854775807. El rango no suscrito va de 0 a 18446744073709551615.

FLOAT :

    Un número punto flotante pequeño (simple precisión). Los valores van de 3.402823466E+38 a -1.175494351E-38, 0, y 1.175494351E-38 a 3.402823466E+38.

DOUBLE :

    Un número punto flotante normal (doble precisión). Los valores van de 1.7976931348623157E+308 a -2.2250738585072014E-308, 0, y 2.2250738585072014E-308 a 1.7976931348623157E+308.

DECIMAL :

    El número máximo de dígitos (M) para DECIMAL es 64.


Explicación

Tipos de Datos Fecha y Hora :

DATE
TIME
DATETIME
TIMESTAMP
YEAR


DATE :

    Una Fecha. El rango es 1000-01-01 a 9999-12-31. Los valores de fecha se muestran con el formato YYYY-MM-DD (Año-Mes-Día).

TIME :

    Una Hora. El rango es -838:59:59 a 838:59:59. Los valores de hora se muestran con el formato HH:MM:SS.

DATETIME :

    Una combinación de Fecha y Hora. El rango es 1000-01-01 00:00:00 a 9999-12-31 23:59:59. Los valores fecha hora son mostrados en formato YYYY-MM-DD HH:MM:SS.

TIMESTAMP :

    Una Marca de Tiempo. El rango es 1970-01-01 00:00:01 UTC hasta parcialmente el año 2037. Una columna TIMESTAMP es útila para grabar la fecha y hora de una operación INSERT o UPDATE.

YEAR :

    Un Año. Los valores de año son mostrados en formato de dos dígitos o de cuatro. El rango de valores para un dígito de cuatro es 1901 a 2155. Para los dos dígito, el rango es 70 a 69, representando años desde 1970 a 2069.

    Para todas la columnas de fecha y hora, podemos asignar también los valores usando strings o números.


Explicación

String tipos de datos :

CHAR
VARCHAR
TINYTEXT
TEXT
BLOB
MEDIUMTEXT
LONGTEXT
BINARY
VARBINARY
ENUM
SET


CHAR() :

    Es un string de longitud fija que es principalmente usado cuando los datos no van a variar mucho en su longitud. Toma valores de 0 a 255 de longitud de caracteres. Cuando almacenamos valores CHAR ellos están rellenos correctamente con espacios de la longitud específica. Cuando obtenemos valores CHAR, los espacios finales son eliminados.

VARCHAR() :

    Es una variable string de longitud y es usada principalmente cuando los datos pueden variar en longitud. Toma valores de 0 a 255 de longitud de caracteres. Los valores VARCHAR no son rellenados cuando son más cortos.

TINYTEXT, TINYBLOB :

    Un string con una longitud máxima de 255 caracteres.

TEXT :

    Las columnas TEXT son tratadas como caracteres string (strings no binarios). Contiene una longitud máxima de 65535 caracteres.

BLOB :

    BLOB es el acrónimo de Binary Large OBject (Objeto Binario Grande). Puede tener un montón de datos variables. Las columnas BLOB son tratadas como string de bytes (string binarios). Contiene una longitud máxima de 65535.


MEDIUMTEXT, MEDIUMBLOB :

    Tiene una longitud máxima de 16777215 caracteres.

LONGTEXT, LONGBLOB :

    Tiene una longitud máxima de 4294967295 caracteres.

BINARY :

     BINARY es similar al tipo CHAR. Almacena el valor como string de byte binario en vez de como un caracter string no binario

VARBINARY :

     VARBINARY es similar al tipo VARCHAR. Almacena el valor como un string de bytes binario en vez de como un caracter string no binario.

ENUM() :

    Una enumeracion. Cada columna puede tener uno de los posibles valores especificados. Puede almacenar solo uno de los valores que están declarados en la lista específica contenida en los paréntesis ( ). La lista ENUM tiene un alcance de más de 65535 valores..

SET() :

    Un set. Cada columna puede tener más de uno de los posibles valores especificados. Contiene más de 64 objetos de lista y puede almacenar más de una opción. Los valores SET son representados internamente como números enteros.


    Si CHAR y VARCHAR son usados en la misma tabla, entonces MySQL cambiará automáticamente CHAR a VARCHAR por razones de compatibilidad. Los paréntesis ( ) permiten introducir un máximo número de caractereces que serán usados en la columna.





Yiced Sanchez Guzman..... 


lunes, 9 de junio de 2014

PASOS PARA CREAR UNA BASE DE DATOS

1. CREAMOS LA BASE DE DATOS CON LA SIGUIENTE INSTRUCCION:

mysql> CREATE DATABASE GESTION_TRABAJOS;

2. LUEGO INICIAMOS CREANDO CADA UNA DE SUS TABLAS CON SUS RESPECTIVOS CAMPOS Y ATRIBUTOS:

mysql> CREATE TABLE GRUPO (
GRU_NUMERO INT (3) NOT NULL, PRIMARY KEY (GRU_NUMERO), GRU_NOMBRE VARCHAR (25) NOT NULL
) ENGINE=INNODB;

mysql> CREATE TABLE PROFESOR (
PRO_DNI VARCHAR (13) NOT NULL, PRIMARY KEY (PRO_DNI), PRO_NOMBRE VARCHAR (50) NOT NULL, PRO_DOMICILIO VARCHAR (5) NOT NULL
)ENGINE=INNODB;

mysql> CREATE TABLE TRIBUNAL (
TRI_NUMERO VARCHAR (3) NOT NULL, PRIMARY KEY (TRI_NUMERO), TRI_LUGAR VARCHAR (50) NOT NULL
) ENGINE=INNODB;

mysql> CREATE TABLE CALIFICADORES (
CAL_ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (CAL_ID),PRO_DNI VARCHAR (13) NOT NULL,TRI_NUMERO VARCHAR (3) NOT NULL, FOREIGN KEY (PRO_DNI) REFERENCES PROFESOR(PRO_DNI), FOREIGN KEY (TRI_NUMERO) REFERENCES TRIBUNAL (TRI_NUMERO)
) ENGINE=INNODB;

mysql> CREATE TABLE TFC (
TFC_NUMERO INT (5) NOT NULL, PRIMARY KEY (TFC_NUMERO), TFC_TEMA TEXT NOT NULL, TFC_FECHA DATE NOT NULL,TRI_NUMERO VARCHAR (3) NOT NULL, FOREIGN KEY (TRI_NUMERO) REFERENCES TRIBUNAL (TRI_NUMERO)
 ) ENGINE=INNODB ;

mysql> CREATE TABLE ALUMNO (
ALU_NUMERO VARCHAR (13) NOT NULL, PRIMARY KEY (ALU_NUMERO), ALU_DNI VARCHAR (13) NOT NULL, ALU_NOMBRE VARCHAR (50) NOT NULL, GRU_NUMERO INT (3) NOT NULL,PRO_DNI VARCHAR (13) NOT NULL,TFC_NUMERO INT (5) NOT NULL, FOREIGN KEY (GRU_NUMERO) REFERENCES GRUPO (GRU_NUMERO), FOREIGN KEY (PRO_DNI) REFERENCES PROFESOR (PRO_DNI), FOREIGN KEY (TFC_NUMERO) REFERENCES TFC (TFC_NUMERO)
) ENGINE=INNODB;

mysql> CREATE TABLE ASESORIAS (
ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID),ALU_NUMERO VARCHAR (13) NOT NULL,PRO_DNI VARCHAR (13) NOT NULL, FOREIGN KEY (ALU_NUMERO) REFERENCES ALUMNO (ALU_NUMERO), FOREIGN KEY (PRO_DNI) REFERENCES PROFESOR (PRO_DNI)
) ENGINE=INNODB;

3. CUANDO YA TODAS LAS TABLAS SEAN CREADAS PODREMOS EMPEZAR A AÑADIR LOS REGISTROS RESPECTIVOS A CADA UNA UTILIZANDO LA SIGUIENTE INSTRUCCION (INSERT INTO)

INSERT INTO GRUPO VALUES (
'001', 'TRABAJO SOCIAL'), ('002', 'DISEÑO DE MODAS'), ('003', 'INGENIERIA DE SISTEMAS'), ('004', 'ADMINISTRACION '), ('005', 'CONTADURIA'
);

INSERT INTO PROFESOR VALUES (
'65692470', 'WILSON DANIEL GORDILLO', '2-73'), ('28710378', 'JHON DARWIN MUÑOZ', '3-45'), ('1105680851', 'ARBEY JIMENEZ', '5-89'), ('6578922', 'ERIKA FARFAN', '83-34'), ('73948300', 'WILLIAN ORJUELA', '3-48'
);

INSERT INTO TRIBUNAL VALUES (
'005', 'SALA DE PROYECCIONES 1'), ('006', 'SALA DE PROYECCIONES 2'), ('007', 'SALA DE BILINGUISMO'), ('008', 'SALA DE DOCENTES'), ('009', 'SALA  PRINCIPAL'
);

INSERT INTO CALIFICADORES VALUES (
NULL, '1105680851', '005'), (NULL, '28710378', '006'), (NULL, '65692470', '007'), (NULL, '6578922', '008'), (NULL, '73948300', '009'
);

INSERT INTO ALUMNO VALUES (
'111', 'DISPOSITIVOS DE PLACA REDUCIDA', '2014-01-04', '005'), ('122', 'PREVENCION DEL CONSUMO DE SPA', '2014-02-10', '006'), ('133', 'AUDITORIA DE SISTEMAS', '2014-03-10', '007'), ('144', 'NOMINA DIGITAL', '2014-05-08', '008'), ('155', 'CONFECCION HINDU', '2014-06-01', '009
');

INSERT INTO TFC VALUES (
'3810R13', '96120502457', 'LIZETH RAMIREZ', '1', '1105680851', '111'), ('3629L12', '110238449539', 'ALEJANDRA BENAVIDES', '2', '28710378', '133'), ('34U921', '110534239', 'YICED SANCHEZ', '3', '6578922', '144'), ('56YWOE', '9710034579', 'DANA TRUJILLO', '4', '6578922', '144'), ('45TDSF', '93456722', 'AUGUSTO CERVERA', '5', '73948300', '155'
);

INSERT INTO ASESORIAS VALUES (
NULL, '3810R13', '1105680851'), (NULL, '3629L12', '28710378'), (NULL, '34U921', '65692470'), (NULL, '56YWOE', '6578922'), (NULL, '45TDSF', '73948300'
);


TIPOS DE DATOS UTILIZADOS EN MySQL


DATOS NUMERICOS

En este tipo de campos solo pueden almacenarse números, positivos o negativos, enteros o decimales, en notación hexadecimal, cientifica o decimal.
Los tipos numéricos tipo integer admiten los atributos SIGNED y UNSIGNED indicando en el primer caso que pueden tener valor negativo, y solo positivo en el segundo.
Los tipos numéricos pueden además usar el atributo ZEROFILL en cuyo caso los números se completaran hasta la máxima anchura disponible con ceros (column age INT(5) zerofill => valor 23 se almacenará como 00023)
BIT o BOOL, para un número entero que puede ser 0 ó 1
TINYINT es un número entero con rango de valores válidos desde -128 a 127. Si se configura como unsigned (sin signo), el rango de valores es de 0 a 255
SMALLINT, para números enteros, con rango desde -32768 a 32767. Si se configura como unsigned, 0 a 65535.
MEDIUMINT para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se configura como unsigned, 0 a 16777215
INT para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned, el rango es 0 a 4294967295
BIGINT número entero con rango de valores desde -9223372036854775808 a 9223372036854775807. Unsigned, desde 0 a 18446744073709551615.
FLOAT (m,d) representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse (término también conocido como ancho de pantalla), y cuantos en la parte decimal (d). Mysql redondeará el decimal para ajustarse a la capacidad.
DOUBLE Número de coma flotante de precisión doble. Es un tipo de datos igual al anterior cuya única diferencia es el rango numérico que abarca
DECIMAL almacena los números como cadenas.

Caracteres o cadenas

CHAR Este tipo se utiliza para almacenar cadenas de longitud fija. Su longitud abarca desde 1 a 255 caracteres.
VARCHAR Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1-255 caracteres, pero en este caso, de longitud variable. Un campo CHAR ocupará siempre el máximo de longitud que le hallamos asignado, aunque el tamaño del dato sea menor (añadiendo espacios adicionales que sean precisos). Mientras que VARCHAR solo almacena la longitud del dato, permitiendo que el tamaño de la base de datos sea menor. Eso si, el acceso a los datos CHAR es mas rápido que VARCHAR.
No pueden alternarse columnas CHAR y VARCHAR en la misma tabla. Mysql cambiará las columnas CHAR a VARCHAR. Tambien cambia automaticamente a CHAR si usamos VARCHAR con valor de 4 o menos.
TINYTEXT, TINYBLOB para un máximo de 255 caracteres. La diferencia entre la familia de datatypes text y blob es que la primera es para cadenas de texto plano (sin formato) y case-insensitive (sin distinguir mayusculas o minusculas) mientras que blob se usa para objetos binarios: cualquier tipo de datos o información, desde un archivo de texto con todo su formato (se diferencia en esto de el tipo Text) hasta imágenes, archivos de sonido o video
TEXT y BLOB se usa para cadenas con un rango de 255 – 65535 caracteres. La diferencia entre ambos es que TEXT permite comparar dentro de su contenido sin distinguir mayusculas y minusculas, y BLOB si distingue.
MEDIUMTEXT, MEDIUMBLOB textos de hasta 16777215 caracteres.
LONGTEXT, LONGBLOB, hasta máximo de 4.294.967.295 caracteres

Varios

DATE para almacenar fechas. El formato por defecto es YYYY MM DD desde 0000 00 00 a 9999 12 31.
DATETIME Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos
TIMESTAMP Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo
TIME almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de ‘HH:MM:SS’
YEAR almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.
SET un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.
ENUM es igual que SET, pero solo se puede almacenar uno de los valores de la lista

Como crear una base de datos


CREACION DE TABLAS

1 paso: saber los tipos de datos:
1. Cadenas de Caracteres (char, nchar, varchar, nvarchar, ...) 
2. Numéricos Exactos (int, smallint, tinyint, long, ...) 3. Numéricos Aproximados (float, double, single, ...) 4. Fecha y Hora (date, datetime, time, ...) 5. Otros tipos (datos de imagen, textos largos, unicode, binarios, ...) 



2 paso :saber los datos y tipo de datos.


mysql> create database servicio_militar;

mysql> CREATE TABLE COMPAÑIA(NUM_COMPAÑIA INT NOT NULL AUTO_INCREMENT,PRIMARY KEY (NUM_COMPAÑIA) , ACTIVIDAD_COMPA VARCHAR(12)NOT NULL) ENGINE=INNODB;

                                     
mysql> CREATE TABLE SOLDADOS(CED_SOLDADO INT(15) NOT NULL,PRIMARY KEY (CED_SOLDADO) , NOMBRE_SOLD VARCHAR(12)NOT NULL, APELLIDO_SOLD VARCHAR (12), GRADO_SOLD TEXT,NUM_COMPAÑIA INT NOT NULL AUTO_INCREMENT, FOREIGN KEY (NUM_COMPAÑIA) REFERENCES COMPAÑIA (NUM_COMPAÑIA)) ENGINE=INNODB;


mysql> CREATE TABLE SERVICIO (SE_SERVICIO VARCHAR(20) NOT NULL,PRIMARY KEY (SE_SERVICIO) , DESC_SERV VARCHAR(20)NOT NULL)ENGINE=INNODB;

mysql> CREATE TABLE CUARTEL(CU_ CUARTEL VARCHAR(20) NOT NULL,PRIMARY KEY (CU_CUARTEL) , NOMBRE_CUARTEL VARCHAR(12)NOT NULL, DIRECCION CUARTEL VARCHAR (12))ENGINE=INNODB;

mysql> CREATE TABLE CUERPO(C_CUERPO VARCHAR(20) NOT NULL,PRIMARY KEY (C_CUERPI) , DENO_CUERPO VARCHAR(12)NOT NULL)ENGINE=INNODB;