sábado, 14 de junio de 2014

COMO CREAR UN UNA BASE DE DATOS EN MySQL


MySQL

MySQL es el servidor de bases de datos relacionales más popular, desarrollado y proporcionado por MySQL AB. MySQL AB es una empresa cuyo negocio consiste en proporcionar servicios en torno al servidor de bases de datos MySQL.MySQL es un sistema de administración de bases de datos.


PASOS PARA CREAR UNA BASE DE DATOS EN MYSQL:

1. El nombre de nuestra base de datos será Videoteca. Crearemos nuestra base de datos dando al enlace que pone “Bases de datos”, que esta abajo, en nuestra pagina de http://localhost/phpmyadmin/ como podemos ver en esta imagen:
Ahora se nos abrirá una nueva ventana, donde abajo del todo veremos “Crear una base de datos”, en ella escribiremos el nombre de nuestra nueva base de datos, en este caso: Videoteca.
PD: en lo nombres no podemos escribir caracteres como, comas, acentos, ñ, etc.
Si todo ha ido bien, ahora nos pondrá que ya esta creada.

Crear tablas y campos para la base de datos

En el apartado anterior hemos aprendido a crear una base de datos MySQL, y he creado una, a la cual la he llamado “Videoteca”. Ahora el siguiente paso seria crear las tablas y los campos que nos hagan falta para posteriormente meter los datos, y eso es precisamente lo que vamos a aprender en este tutorial.

Creando una Tabla y sus campos en MySQL

Existen varias formas y programas diferentes para crear una tabla en una base de datos MySQL, pero lo voy a hacer desde phpMyAdmin, el motivo de hacerlo desde phpMyAdmin y no de otra forma es porque comúnmente, en todos los servidores ya sean caseros o de un hosting privados siempre suele tener un phpMyAdmin a mano.
En primer lugar vamos a nuestro phpMyAdmin y seleccionamos la base de datos que hemos creado anteriormente(Videoteca) como vemos en la siguiente imagen:
Ahora se cargara la base de datos y nos saldrá un mensaje que pone “no se han encontrado tablas en la base de datos” y más abajo veremos un pequeño formulario para crear nuestra primera tabla.
En nombre pondremos película y en número de campos pondremos 3.
Ahora damos a continuar y se nos cargara la pagina para crear los campos, en este caso serán los 3 que hemos puesto antes.
Veremos que tendremos que rellenar varios datos, pero no tenemos que preocuparnos, ya que explicaremos uno a uno lo que significa.
  • En Campo, pondremos el nombre del campo.
  • En Tipo, debemos poner el tipo de datos que se van a incluir en el campo, por ejemplo pondríamos:
    • VARCHAR si vamos a incluir un texto inferior a 255 caracteres ejemplo (nombres, DNI, direcciones).
    • TEXT si vamos a incluir un texto más largo de 255 caracteres ejemplo (noticias).
    • INT si deseamos escribir exclusivamente números.
    • DATE para poner fechas, o DATETIME, si queremos poner hora y fecha.
  • En Longitud, deberemos de poner el número de caracteres máximo que puede contener dicho campo, esto no hace falta para todos los tipos de datos, ya que por ejemplo para los de tipo DATE, o TEXT no hace falta, pero para los INT y VARCHAR es imprescindible.
  • En Nulo, podemos elegir Null o Not Null dependiendo si queremos que el campo pueda estar vacío (sin datos) o no.
  • En predeterminado, podemos poner lo que queramos que se ponga en el campo en el caso de que no se rellenen los datos o que se rellene de forma incorrecta.
  • En extra, vemos que podemos seleccionar Auto_Increment, esto nos sirve para llevar un orden de los datos que tenemos, por ejemplo, creamos un campo llamado id, de tipo INT y le ponemos auto_increment, de esta forma cada vez que se cree un nuevo dato en este campo se le sumara 1 a la id anterior, de forma que podremos llevar un pequeño orden.
Ahora que ya mas o menos he explicado para que es cada cosa voy a deciros que debemos de poner en cada uno de los 3 campos:
Campo 1
Nombre: id_pelicula
Tipo: INT
Nulo: Not Null
Extra: Auto_increment
Y marcamos la llave de Primaria 
Campo 2
Nombre: pelicula
Tipo: VARCHAR
Longitud: 30
Nulo: Not Null
Campo 3
Nombre: Director
Tipo: VARCHAR
Longitud: 30
Nulo: Not Null
Ahora damos a Guardar y ya tendemos nuestra base de datos "Videoteca" con la tabla "películas" con la que podremos empezar a trabajar.

Modelo de Relación Base de Datos




Tipos de Datos Usados en MySQL

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: 

    Antes de crear una tabla, identifica si en la columna debe ir un texto, un número o un tipo de fecha. Cada columna en una tabla está hecha de tipos de datos. El tamaño del valor deberá ser el valor más pequeño dependiendo del valor más grande.

    Por ejemplo, si el número de estudiantes de un colegio está en cientos, establece la columna con una cifra de tres dígitos SMALLINT(permitiendo hasta 999 valores).

    Debemos ser conscientes de que si insertamos un string de cinco caracteres en un campo de (3) caracteres, los dos caracteres finales serán truncados. Es mejor establecer una longitud para texto y número de columnas así como otros atributos como UNSIGNED.

    Los corchetes ('[' y ']') indican partes optionales del tipo de definiciones.

    Ahora nos iremos levemente a una visión general de los tipos de datos MySQL.



Tipod de Datos Numéricos :

    Los tipos de datos numéricos son como sigue: 


    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 a16777215.

INT :

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

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-380, y1.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-3080, y 2.2250738585072014E-308 a 1.7976931348623157E+308.

DECIMAL :

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

Tipos de Datos Fecha y Hora :

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. 
String tipos de datos :

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 a255 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 65535caracteres.

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 de65535 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. 


GRACIAS!!!

 

viernes, 13 de junio de 2014

PASOS PARA CREAR UNA BASE DE DATOS EN MYSQL








MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.  



PASOS PARA CREAR UNA BASE DE DATOS EN MYSQL:


  1. Instalamos  MYSQL.
  2. Al momento de la instalación se coloca la contraseña deseada,o si ya se tiene un servidor se coloca la contraseña que se habia puesto al momento de la instalación.
Otras opciones que tenemos para acceder a MYSQL son:

  • mysql -u usuario -p pasword
  • mysql -h ip-de-la-maquina-donde-instalamos-mysql -u usuario -p password



Lo primero que debemos de saber es que  mysql termina sus sentencias con un punto y coma “;”

Como vemos tenemos varias bases de datos creadas unas se instalan por defecto , las cuales son
information_schema,  mysql.





*Para eliminar  una base de datos  utilizamos en  la sentencia   drop  mas el nombre de la base de datos  que queremos eliminar.

*Ahora mostrare como crear una base de datos para ello se utilizara la sentencia create database seguido con el  nombre de la base de datos

*Con esto tendremos una base de datos llamada learning para poder trabajar sobre ella tendremos que ingresar a la base de datos, para ello utilizaremos la sentencia  use seguido del nombre de la base de datos

*Luego de selecionada podemos ver que tiene con show tables;

*Como no tenemos  todavía ninguna tabla creada no mostrara nada
*Lo siguiente es crear una tabla  y la crearemos de la siguiente manera



*en la cual especificamos los campos  para un usuario y otro para una clave  y los cuales  seguido del atributo en este caso es varchar y entre paréntesis se especifica el número de espacios máximo en este caso se  coloque 16 pero pueden ser los que ustedes quieran  la clave primaria en este caso es usuario  y luego cerramos con “;” y ya tendremos nuestra tabla creada y lista para usar.

Se procede a odservar que tablas hay creadas




*Como podemos observar nos aparece la tabla que se ha creado,  para usarla , debemos  ver  que campos tiene la tabla creada,   lo cual lo aremos de la siguiente forma:


*Ahora si ¿como inserto datos en la tabla?  lo aremos con la sentencia  INSERT INTO “los campos a las que quiero ingresar datos ” VALUES y los datos que vamos a ingresar, la sentencia quedaría de la siguiente forma.

*Quiero ver si ingrese los datos correctamente,  si quedo algo para todo existe una solución  y se hara de la siguiente forma.


*Y por ultimo  ¿como puedo borrar una tabla? la  respuesta es  la sentencia drop como lo abriamos hecho antes con la base de datos pero esta vez seleccionaremos la tabla a borrar.




Después de la fase de diseño de una base de datos, y una vez se ha realizado el paso a tablas del mismo, en necesario crear las tablas correspondientes dentro de la base de datos. Para cada campo de cada una de las tablas, es necesario determinar el tipo de datos que contiene, para de esa forma ajustar el diseño de la base de datos, y conseguir un almacenamiento óptimo con la menor utilización de espacio. En este blog describe cada uno de los tipos de datos que puede tener un campo en Mysql, para la versión 4.xx.xx. 

Los tipos de datos que puede haber en un campo, se pueden agrupar en tres grandes grupos:
  1. Tipos numéricos 
  2. Tipos de Fecha 
  3. Tipos de Cadena
1 Tipos numéricos: 

Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no. 

TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 

Bit ó Bool: un número entero que puede ser 0 ó 1 

SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. 

MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. 

Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 

BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. 

Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. 

xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 

Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena 

Tipo de Campo
Tamaño de Almacenamiento
TINYINT
1 byte
SMALLINT
2 bytes
MEDIUMINT
3 bytes
INT
4 bytes
INTEGER
4 bytes
BIGINT
8 bytes
FLOAT(X)
4 ú 8 bytes
FLOAT
4 bytes
DOUBLE
8 bytes
DOUBLE PRECISION
8 bytes
REAL
8 bytes
DECIMAL(M,D
M+2 bytes sí D > 0, M+1 bytes sí D = 0
NUMERIC(M,D)
M+2 bytes if D > 0, M+1 bytes if D = 0


2 Tipos fecha: 

A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. 
Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia 

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: 

Tamaño
                   Formato
14                  
AñoMesDiaHoraMinutoSegundo aaaammddhhmmss

12
AñoMesDiaHoraMinutoSegundo aammddhhmmss

8
AñoMesDia aaaammdd

6
AñoMesDia aammdd

4
AñoMes aamm

2
Año aa


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. 

Tipo de Campo
Tamaño de Almacenamiento
DATE
3 bytes
DATETIME
8 bytes
TIMESTAMP
4 bytes
TIME
3 bytes
YEAR
1 byte


3 Tipos de cadena: 

Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. 

VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. 

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object) 

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. 

Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. 

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres. 

Blob y Text: un texto con un máximo de 65535 caracteres. 

MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. 

LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb. 

Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos 

Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores. 

Tipo de campo
Tamaño de Almacenamiento
CHAR(n)
n bytes
VARCHAR(n)
n +1 bytes
TINYBLOB, TINYTEXT
Longitud+1 bytes
BLOB, TEXT
Longitud +2 bytes
MEDIUMBLOB, MEDIUMTEXT
Longitud +3 bytes
LONGBLOB, LONGTEXT
Longitud +4 bytes
ENUM('value1','value2',...)
1 ó dos bytes dependiendo del número de valores
SET('value1','value2',...)
1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores


Diferencia de almacenamiento entre los tipos Char y VarChar 

Valor
CHAR(4)
Almace
namiento
VARCHAR(4)
Almace
namiento
''
''
4 bytes
"
1 byte
'ab'
'ab '
4 bytes
'ab'
3 bytes
'abcd'
'abcd'
4 bytes
'abcd'
'abcdefgh'
'abcd'
4 bytes
'abcd'
5 bytes