MySQL
¿Qué es el cotejamiento en MySql?
Esta palabra tan rara es para indicar qué tipo de codificación queremos usar para los valores de estos campos. Si fueras chino necesitarías codificar los datos con un tipo de cotejamiento que admitiera los símbolos chinos, al igual que si fueras musulmán o en definitiva si quisieras escribir con signos raros. Nosotros no somos tan normales tampoco, pues querremos aceptar la ñ o los acentos en nuestros valores (aunque no suelas usarlos... je je je), así que tendremos que escoger el tipo de cotejamiento adecuado).
Ej.
UTF-8 es una codificación de caracteres que usa la mayoría de los sitios web. Codifica cada uno de los 1,112,064 puntos de código válidos.
¿Cómo crear una base de datos en MySql?
Crear una base de datos en MySql es muy sencillo, aunque solo hablo de crearla, luego tendrás que trabajar en ella.
Es de la siguiente manera.
Usas el CREATE junto con la palabra DATABASE (ya que aquí especificas que quieres crear, en este caso database(base de datos)), luego agregas el nombre de la base de datos, preferiblemente sin caracteres especiales, luego procedes a incorporarle las tablas y demás con otras consultas.
He aquí un ejemplo:
¿Cómo crear una tabla en MySql?
En este caso crearemos una tabla, para ello la vamos a crear en la base de datos previamente hecha.
Para crear la tabla usaremos el CREATE al igual que en el ejemplo anterior, pero que en este caso en ves de decir CREATE DATABASE lo que dirá es CREATE TABLE luego de esto ponemos el nombre de la tabla (debes tener en cuenta que cuando la vallas a crear, estés en la base de datos correcta donde harás el sql).
Luego de poner el nombre de la tabla entre paracentesis vas poner todas las columnas con la que contara tu tabla, este es el momento donde le puedes asignar restricciones y demás (aunque siempre puedes alterarla), recuerda que cuando vallas a crear una columna y otras, estas deben estar separadas con una (,) ya que si no lo haces no funcionara ya que estarías amontonando todas tus columnas en una y eso no funciona así.
A continuación un ejemplo:
¿Cómo crear relaciones entre tablas en MySql?
Una forma es asignando una llave primaria a una tabla y una llave foránea a otra.(Primary Key, Foreign Key).
Como en el siguiente ejemplo.
Da como resultado:
Ademas hay que saber que tipo de relaciones se pueden dar cuando relacionamos tablas, a esto se le conoce como cardinalidad de mapeo.
Son las siguientes.
En esta nos dice que una entidad puede estar relacionada con varios y que varios solo puede estar relacionada con uno.
En esta imagen observamos a tres grupos de estudiantes, y a tres profesores, nos dice que varios estudiantes pueden tener varios profesores y que varios profesores pueden dar clases a varios estudiantes.
Permiso para crear usuario en MySQL
Primeramente debemos de crear nuestro usuario de la siguiente manera.
Pero lamentablemente aún este usuario no cuenta con los permisos necesarios para hacer algo con la base de datos, aunque el usuario intente identificare con la contraseña previamente establecida, aun hay que proporcionarle los permisos.
Así:
Los asteriscos en este comando hacen referencia a la base de datos y la tabla (respectivamente) a la cual el nuevo usuario tendrá acceso; específicamente este comando permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.
Una vez que has finalizado con los permisos que deseas configurar para tus nuevos usuarios, hay que asegurarse siempre de refrescar todos los privilegios.
Permisos a nivel global MySQL
Para que otorgar un permiso a este nivel, hay que indicar: ON *.* en la cláusula grant.
Y la sintaxis básica para dar permisos a nivel del gestor Mysql, incluyendo los permisos de administrador seria:
La sentencia Grant se utiliza para otorgar privilegios.
Permisos a nivel de base de datos.
A este nivel, los permisos son filas que se añaden, borran o se modifican en la tabla mysql.db, y se aplican en una base de datos concreta.
Por lo que se puede ver en la primera linea, nos seden todos los privilegios a este nivel, pero en la segunda linea nos limitan los privilegios a nivel de cierta base de datos que especifiquemos, pues se hace especificando el nombre de la base de datos.
Los privilegios que pueden ser especificado a nivel de base de dato son estos:
Permisos a nivel de tabla.
En este caso los permisos son filas que se añaden, borran o se modifican en la tabla mysql.tables_priv, y se aplican en una base de datos concreta y en una tabla concreta.
Los privilegios que se le pueden otorgar son:
Privilegios que gestionan tablas:
CREATE: Mysql permite dar permiso para crear una tabla concreta, incluso si esta no existe.
ALTER: Mysql permite dar permiso para modificar una tabla concreta, incluso si esta no existe.
DROP: Mysql permite dar permiso para eliminar una tabla concreta, incluso si esta no existe.
Privilegios que manejan datos de la tabla:
DELETE
SELECT
UPDATE
INSERT
Estos privilegios se aplican a todas las columnas de una tabla determinada.
Entre otros.
Permisos a nivel de columnas.
Para otorgar los siguientes permisos o privilegios se usa:
Estos son:
INSERT
REFERENCES: Para poder crear una regla de clave foránea al crear una tabla.
SELECT
UPDATE
Permisos sobre rutinas
mysql.procs_priv table Cuando otorgamos permiso sobre una rutina concreta),mysql.user (todas las rutinas de todas las bases de datos) y mysql.db (todas las rutinas de una base de datos concreta).
Los privilegios que pueden ser aplicados a este nivel:
Aplicables a cualquier rutina:
-ALTER ROUTINE (incluye borrado)
-CREATE ROUTINE
-EXECUTE
-GRANT OPTION
-Aplicados a una rutina concreta:
-ALTER ROUTINE
-EXECUTE
-GRANT OPTION
Tipos de datos numéricos Mysql
TINYINT
Permite números enteros del 0 al 255
SMALLINT
Permite números enteros entre -32,768 y 32,767
MEDIUMINT
El rango firmado es de -8388608 a 8388607. El rango no firmado es de 0 a 16777215. El parámetro de tamaño especifica el ancho máximo de visualización (que es 255).
INT
Permite números enteros entre -2,147,483,648 y 2,147,483,647
INTEGER
Permite números enteros entre -32,768 y 32,767
BIGINT
Permite números enteros entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807
FLOAT(X)
La float(X) función convierte el valor especificado en un número de coma flotante
FLOAT
Un número o una cadena que se puede convertir en un número de coma flotante.
DOUBLE
Doble punto flotante de precisión. Manejará la mayoría de los decimales.
DOUBLE PRECISION
REAL
Datos de números de precisión flotantes de -3.40E + 38 a 3.40E + 38
DECIMAL(M,D)
Un número exacto de punto fijo. El número total de dígitos se especifica en tamaño. El número de dígitos después del punto decimal se especifica en el parámetro d. El número máximo para el tamaño es 65. El número máximo para d es 30. El valor predeterminado para el tamaño es 10. El valor predeterminado para d es 0.
Tipos de datos fecha
Date
Almacene una fecha solamente. Del 1 de enero de 0001 al 31 de diciembre de 9999
DateTime
Del 1 de enero de 1753 al 31 de diciembre de 9999 con una precisión de 3,33 milisegundos.
TimeStamp
Almacena un número único que se actualiza cada vez que se crea o modifica una fila. El valor de la marca de tiempo se basa en un reloj interno y no corresponde al tiempo real. Cada tabla puede tener solo una variable de marca de tiempo.
Time
Almacene un tiempo solo con una precisión de 100 nanosegundos.
Year
Un año en formato de cuatro dígitos. Valores permitidos en formato de cuatro dígitos: 1901 a 2155 y 0000.
MySQL 8.0 no admite año en formato de dos dígitos.
Tipos de datos en cadena
CHAR(n)
Cadena de caracteres de ancho fijo.
VARCHAR(n)
Cadena de caracteres de ancho variable.
TINYBLOB, TINYTEXT
(Tinyblob): Para BLOB (Objetos binarios grandes). Longitud máxima: 255 bytes.
(Tinytext): Contiene una cadena con una longitud máxima de 255 caracteres.
BLOB, TEXT
(Blob): (Objetos binarios grandes). Contiene hasta 65.535 bytes de datos.
(Text): Contiene una cadena con una longitud máxima de 65.535 bytes
MEDIUMBLOB: (Objetos binarios grandes). Contiene hasta 16.777.215 bytes de datos.
MEDIUMTEXT: Contiene una cadena con una longitud máxima de 16.777.215 caracteres.
LONGBLOB: (Objetos binarios grandes). Almacena hasta 4,294,967,295 bytes de datos
LONGTEXT: Contiene una cadena con una longitud máxima de 4,294,967,295 caracteres
ENUM('value1','value2',...)
Un objeto de cadena que solo puede tener un valor, elegido de una lista de valores posibles. Puede enumerar hasta 65535 valores en una lista ENUM. Si se inserta un valor que no está en la lista, se insertará un valor en blanco. Los valores se ordenan en el orden en que los ingresa.
SET('value1','value2',...)
Un objeto de cadena que puede tener 0 o más valores, elegidos de una lista de valores posibles. Puede enumerar hasta 64 valores en una lista SET.
Diferencia de almacenamiento entre los tipo char y VarChar en MySql
Es que el tipo Char es de ancho definido y el tipo VarChar es 2 bytes + número de caracteres.
Ej.
UTF-8 es una codificación de caracteres que usa la mayoría de los sitios web. Codifica cada uno de los 1,112,064 puntos de código válidos.
¿Cómo crear una base de datos en MySql?
Es de la siguiente manera.
Usas el CREATE junto con la palabra DATABASE (ya que aquí especificas que quieres crear, en este caso database(base de datos)), luego agregas el nombre de la base de datos, preferiblemente sin caracteres especiales, luego procedes a incorporarle las tablas y demás con otras consultas.
He aquí un ejemplo:
¿Cómo crear una tabla en MySql?
En este caso crearemos una tabla, para ello la vamos a crear en la base de datos previamente hecha.
Para crear la tabla usaremos el CREATE al igual que en el ejemplo anterior, pero que en este caso en ves de decir CREATE DATABASE lo que dirá es CREATE TABLE luego de esto ponemos el nombre de la tabla (debes tener en cuenta que cuando la vallas a crear, estés en la base de datos correcta donde harás el sql).
Luego de poner el nombre de la tabla entre paracentesis vas poner todas las columnas con la que contara tu tabla, este es el momento donde le puedes asignar restricciones y demás (aunque siempre puedes alterarla), recuerda que cuando vallas a crear una columna y otras, estas deben estar separadas con una (,) ya que si no lo haces no funcionara ya que estarías amontonando todas tus columnas en una y eso no funciona así.
A continuación un ejemplo:
¿Cómo crear relaciones entre tablas en MySql?
Una forma es asignando una llave primaria a una tabla y una llave foránea a otra.(Primary Key, Foreign Key).
Como en el siguiente ejemplo.
Da como resultado:
Ademas hay que saber que tipo de relaciones se pueden dar cuando relacionamos tablas, a esto se le conoce como cardinalidad de mapeo.
Son las siguientes.
En esta imagen nos dicen que un solo producto puede tener un solo código de barras.
En esta nos dice que una entidad puede estar relacionada con varios y que varios solo puede estar relacionada con uno.
En esta imagen observamos a tres grupos de estudiantes, y a tres profesores, nos dice que varios estudiantes pueden tener varios profesores y que varios profesores pueden dar clases a varios estudiantes.
Permiso para crear usuario en MySQL
Primeramente debemos de crear nuestro usuario de la siguiente manera.
CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'tu_contrasena';
Pero lamentablemente aún este usuario no cuenta con los permisos necesarios para hacer algo con la base de datos, aunque el usuario intente identificare con la contraseña previamente establecida, aun hay que proporcionarle los permisos.
Así:
GRANT ALL PRIVILEGES ON * . * TO 'nombre_usuario'@'localhost';
Los asteriscos en este comando hacen referencia a la base de datos y la tabla (respectivamente) a la cual el nuevo usuario tendrá acceso; específicamente este comando permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.
Una vez que has finalizado con los permisos que deseas configurar para tus nuevos usuarios, hay que asegurarse siempre de refrescar todos los privilegios.
FLUSH PRIVILEGES;
Permisos a nivel global MySQL
Para que otorgar un permiso a este nivel, hay que indicar: ON *.* en la cláusula grant.
Y la sintaxis básica para dar permisos a nivel del gestor Mysql, incluyendo los permisos de administrador seria:
GRANT SELECT ON *.* TO 'user1'@'localhost'
La sentencia Grant se utiliza para otorgar privilegios.
Permisos a nivel de base de datos.
A este nivel, los permisos son filas que se añaden, borran o se modifican en la tabla mysql.db, y se aplican en una base de datos concreta.
GRANT ALL ON mydb.* TO 'someuser'@'somehost'; 2 GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
Por lo que se puede ver en la primera linea, nos seden todos los privilegios a este nivel, pero en la segunda linea nos limitan los privilegios a nivel de cierta base de datos que especifiquemos, pues se hace especificando el nombre de la base de datos.
Los privilegios que pueden ser especificado a nivel de base de dato son estos:
Permisos a nivel de tabla.
En este caso los permisos son filas que se añaden, borran o se modifican en la tabla mysql.tables_priv, y se aplican en una base de datos concreta y en una tabla concreta.
GRANT ALL ON mydb.mytbl TO 'someuser'@'somehost'; 2 GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
Los privilegios que se le pueden otorgar son:
Privilegios que gestionan tablas:
CREATE: Mysql permite dar permiso para crear una tabla concreta, incluso si esta no existe.
ALTER: Mysql permite dar permiso para modificar una tabla concreta, incluso si esta no existe.
DROP: Mysql permite dar permiso para eliminar una tabla concreta, incluso si esta no existe.
Privilegios que manejan datos de la tabla:
DELETE
SELECT
UPDATE
INSERT
Estos privilegios se aplican a todas las columnas de una tabla determinada.
Entre otros.
Permisos a nivel de columnas.
Para otorgar los siguientes permisos o privilegios se usa:
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';
Estos son:
INSERT
REFERENCES: Para poder crear una regla de clave foránea al crear una tabla.
SELECT
UPDATE
Permisos sobre rutinas
mysql.procs_priv table Cuando otorgamos permiso sobre una rutina concreta),mysql.user (todas las rutinas de todas las bases de datos) y mysql.db (todas las rutinas de una base de datos concreta).
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost'; 2 GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
Los privilegios que pueden ser aplicados a este nivel:
Aplicables a cualquier rutina:
-ALTER ROUTINE (incluye borrado)
-CREATE ROUTINE
-EXECUTE
-GRANT OPTION
-Aplicados a una rutina concreta:
-ALTER ROUTINE
-EXECUTE
-GRANT OPTION
Tipos de datos numéricos Mysql
TINYINT
Permite números enteros del 0 al 255
Permite números enteros entre -32,768 y 32,767
MEDIUMINT
El rango firmado es de -8388608 a 8388607. El rango no firmado es de 0 a 16777215. El parámetro de tamaño especifica el ancho máximo de visualización (que es 255).
INT
Permite números enteros entre -2,147,483,648 y 2,147,483,647
INTEGER
Permite números enteros entre -32,768 y 32,767
BIGINT
Permite números enteros entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807
FLOAT(X)
La float(X) función convierte el valor especificado en un número de coma flotante
FLOAT
Un número o una cadena que se puede convertir en un número de coma flotante.
DOUBLE
Doble punto flotante de precisión. Manejará la mayoría de los decimales.
DOUBLE PRECISION
REAL
Datos de números de precisión flotantes de -3.40E + 38 a 3.40E + 38
DECIMAL(M,D)
Un número exacto de punto fijo. El número total de dígitos se especifica en tamaño. El número de dígitos después del punto decimal se especifica en el parámetro d. El número máximo para el tamaño es 65. El número máximo para d es 30. El valor predeterminado para el tamaño es 10. El valor predeterminado para d es 0.
Tipos de datos fecha
Date
Almacene una fecha solamente. Del 1 de enero de 0001 al 31 de diciembre de 9999
DateTime
Del 1 de enero de 1753 al 31 de diciembre de 9999 con una precisión de 3,33 milisegundos.
TimeStamp
Almacena un número único que se actualiza cada vez que se crea o modifica una fila. El valor de la marca de tiempo se basa en un reloj interno y no corresponde al tiempo real. Cada tabla puede tener solo una variable de marca de tiempo.
Time
Almacene un tiempo solo con una precisión de 100 nanosegundos.
Year
Un año en formato de cuatro dígitos. Valores permitidos en formato de cuatro dígitos: 1901 a 2155 y 0000.
MySQL 8.0 no admite año en formato de dos dígitos.
Tipos de datos en cadena
CHAR(n)
Cadena de caracteres de ancho fijo.
VARCHAR(n)
Cadena de caracteres de ancho variable.
TINYBLOB, TINYTEXT
(Tinyblob): Para BLOB (Objetos binarios grandes). Longitud máxima: 255 bytes.
(Tinytext): Contiene una cadena con una longitud máxima de 255 caracteres.
BLOB, TEXT
(Blob): (Objetos binarios grandes). Contiene hasta 65.535 bytes de datos.
(Text): Contiene una cadena con una longitud máxima de 65.535 bytes
MEDIUMBLOB: (Objetos binarios grandes). Contiene hasta 16.777.215 bytes de datos.
MEDIUMTEXT: Contiene una cadena con una longitud máxima de 16.777.215 caracteres.
LONGBLOB: (Objetos binarios grandes). Almacena hasta 4,294,967,295 bytes de datos
LONGTEXT: Contiene una cadena con una longitud máxima de 4,294,967,295 caracteres
ENUM('value1','value2',...)
Un objeto de cadena que solo puede tener un valor, elegido de una lista de valores posibles. Puede enumerar hasta 65535 valores en una lista ENUM. Si se inserta un valor que no está en la lista, se insertará un valor en blanco. Los valores se ordenan en el orden en que los ingresa.
SET('value1','value2',...)
Un objeto de cadena que puede tener 0 o más valores, elegidos de una lista de valores posibles. Puede enumerar hasta 64 valores en una lista SET.
Diferencia de almacenamiento entre los tipo char y VarChar en MySql
Es que el tipo Char es de ancho definido y el tipo VarChar es 2 bytes + número de caracteres.
Comentarios
Publicar un comentario