Aprenda mysql / mariadb para principiantes - Parte 1

Aprenda mysql / mariadb para principiantes - Parte 1

En este artículo mostraremos cómo crear una base de datos (también conocida como esquema), tablas (con tipos de datos) y explicar cómo realizar Lenguaje de manipulación de datos (DML) operaciones con datos en un Mysql / Mariada servidor.

Se supone que tienes anteriormente 1) instaló los paquetes necesarios en su sistema Linux y 2) ejecutado mysql_secure_installation Para mejorar la seguridad del servidor de base de datos. Si no, siga a continuación las guías para instalar el servidor MySQL/Mariadb.

  1. Instale la última base de datos MySQL en sistemas Linux
  2. Instale la última base de datos de MariaDB en sistemas Linux

Para la brevedad, nos referiremos a Mariada exclusivamente a lo largo de este artículo, pero los conceptos y comandos descritos aquí se aplican a Mysql también.

Parte 1: Aprenda mysql / mariadb para principiantes Parte 2: Aprenda a usar varias funciones de MySQL y Mariadb

Creación de bases de datos, tablas y usuarios autorizados

Como saben, una base de datos se puede definir en términos simples como una recopilación organizada de información. Particularmente, Mariada es un sistema de gestión de bases de datos relacionales (RDBMS) y utiliza el lenguaje de consulta de estructura para realizar operaciones en bases de datos. Además, tenga en cuenta que MariaDB utiliza los términos base de datos y esquema indistintamente.

Para almacenar información persistente en una base de datos, utilizaremos mesas que almacene hileras de datos. A menudo, dos o más tablas estarán relacionadas entre sí de alguna manera. Que es parte de la organización que caracteriza el uso de bases de datos relacionales.

Creación de una nueva base de datos

Para crear una nueva base de datos nombrada Booksdb, Ingrese el Solicitud de MariaDB con el siguiente comando (se le pedirá que ingrese la contraseña para el usuario de Root Mariadb):

[[correo electrónico protegido] ~]# mysql -u raíz -p Ingrese la contraseña: bienvenido al monitor Mariadb. Los comandos terminan con; o \ g. Su ID de conexión de Mariadb es la versión de 2 servidores: 10.1.14-mariadb mariadb servidor copyright (c) 2000, 2016, Oracle, Mariadb Corporation AB y otros. Escriba 'ayuda;' o '\ h' por ayuda. Escriba '\ c' para borrar la instrucción de entrada actual. Mariadb [(ninguno)]> Crear base de datos BookStoredB; Consulta bien, 1 fila afectada (0.00 seg) Mariadb [(ninguno)]> 

Una vez que se ha creado la base de datos, necesitamos crear al menos dos tablas en ella. Pero primero exploremos el concepto de tipos de datos.

Introducción de tipos de datos de mariadb

Como explicamos anteriormente, mesas son objetos de base de datos donde mantendremos información persistente. Cada tabla consta de dos o más campos (también conocidos como columnas) de un tipo de datos dado (el tipo de información) que dicho campo puede almacenar.

Los tipos de datos más comunes en MariadB son los siguientes (puede consultar la lista completa de la documentación oficial de MariadB en línea):

Numérico:
  1. Booleano considera 0 como falso y cualquier otro valor como verdadero.
  2. Pequeño, Si se usa con firmado, cubre el rango de -128 a 127, mientras que el rango sin firmar es de 0 a 255.
  3. Pequeño, Si se usa con firmado, cubre el rango de -32768 a 32767. El rango sin firmar es de 0 a 65535.
  4. EN T, Si se usa con Unsigned, cubre el rango de 0 a 4294967295 y -2147483648 a 2147483647 de lo contrario.

Nota: En Tinyint, Smallint e int, se supone el valor predeterminado firmado.

Doble (M, D), dónde METRO es el número total de dígitos y D es el número de dígitos después del punto decimal, representa un número de punto flotante de doble precisión. Si se especifica sin firmar, no se permiten valores negativos.

Cadena:
  1. Varchar (m) representa una cadena de longitud variable donde METRO es la longitud de columna máxima permitida en bytes (65,535 en teoría). En la mayoría de los casos, el número de bytes es idéntico al número de caracteres, a excepción de algunos caracteres que pueden ocupar hasta 3 bytes. Por ejemplo, la letra española ñ representa un personaje pero toma 2 bytes.
  2. Texto (m) representa una columna con una longitud máxima de 65,535 caracteres. Sin embargo, como sucede con Varchar (m), La longitud máxima real se reduce si se almacenan caracteres de múltiples bytes. Si METRO se especifica, la columna se crea como el tipo más pequeño que puede almacenar dicho número de caracteres.
  3. MediaText (M) y Textexto (M) son similares a Texto (m), Solo que las longitudes máximas permitidas son 16,777,215 y 4,294,967,295 caracteres, respectivamente.
Fecha y hora:
  1. FECHA representa la fecha en Yyyy-mm-dd formato.
  2. TIEMPO representa el tiempo en HH: MM: SS.SSS formato (hora, minutos, segundos y milisegundos).
  3. FECHA Y HORA es la combinación de FECHA y TIEMPO en Yyyy-mm-dd HH: mm: ss formato.
  4. Marca de tiempo se usa para definir en el momento en que se agregó o se actualizó una fila.

Después de haber revisado estos tipos de datos, estará en una mejor posición para determinar qué tipo de datos debe asignar a una columna determinada en una tabla.

Por ejemplo, el nombre de una persona puede encajar fácilmente en un Varchar (50), mientras que una publicación de blog necesitará un TEXTO Tipo (elija METRO Según sus necesidades específicas).

Creación de tablas con claves primarias y extranjeras

Antes de sumergirnos para crear tablas, hay dos conceptos fundamentales sobre bases de datos relacionales que necesitamos revisar: primario y extranjero llaves.

A Clave primaria contiene un valor que identifica de manera única cada fila o registro en la tabla. Por otro lado, un clave externa se utiliza para crear un enlace entre los datos en dos tablas y para controlar los datos que se pueden almacenar en la tabla donde se encuentra la clave extranjera. Tanto las claves primarias como los extranjeros son generalmente ints.

Para ilustrar, usemos el Bookstoredb y crear dos tablas nombradas Autor y Bookstbl como sigue. El NO NULO La restricción indica que el campo asociado requiere un valor que no sea NULO.

También, AUTOINCREMENTO se usa para aumentar en uno el valor de EN T columnas de clave primaria Cuando se inserta un nuevo registro en la tabla.

Mariadb [(ninguno)]> Use BookStoredB; Mariadb [(ninguno)]> Crear tabla AutorStbl (AuthorId int no nulo Auto_Increment, Aftorname Varchar (100), Key primario (AuthorId)); Mariadb [(ninguno)]> Crear tabla bookstbl (bookid int no null auto_incement, bookname varchar (100) no null, autorid int no null, bookprice decimal (6,2) no nula, marca de tiempo de booklastupdated, boolean bookSavailable, clave primaria (bookid), clave extranjera (autorid) Referencias AutorStbl (AuthorId)); 
Crea tablas MySQL con clave primaria y extranjera
Mariadb [(ninguno)]> Use BookStoredB; Base de datos cambió mariadb [bookstoredb]> Crear tabla AutorStbl ( -> AuthorId int no nulo Auto_incement, -> AHORNORNAME VARCHAR (100), -> Clave primaria (AuthorId) ->); Consulta bien, 0 filas afectadas (0.05 segundos) Mariadb [BookStoredB]> Crear tabla bookstbl ( -> bookid int no null auto_incement, -> bookname varchar (100) no nulo, -> autorid int no nulo, -> bookprice decimal (6,2) no nulo, -> booklastupdated timeestamp, -> bookisavelable booleanean boolean boolean , -> Clave primaria (BookID), -> Clave extranjera (AuthorId) Referencias AutorStbl (AuthorId) ->); Consulta bien, 0 filas afectadas (0.05 segundos) Mariadb [BookStoredB]> 

Ahora podemos seguir adelante y comenzar a insertar registros en Autor y Bookstbl.

Seleccionar, insertar, actualizar y eliminar filas

Primero poblaremos el Autor mesa. Por qué? Porque necesitamos tener valores para Autorid antes de insertar registros en el Bookstbl.

Ejecute la siguiente consulta desde su mensaje de MariaDB:

Mariadb [BookStoredB]> Insertar en AuthorStbl (Fornorname) Valores ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho'); 

Después de eso, seleccionaremos todos los registros de Autor. Recuerda que necesitaremos el Autorid para cada registro para crear el INSERTAR consulta para Bookstbl.

Si desea recuperar un registro a la vez, puede usar un DÓNDE cláusula para indicar una condición que una fila debe reunirse para ser devuelta. Por ejemplo,

Mariadb [bookstoredb]> Seleccione * de AuthorStbl donde AHORNORNAME = "Agatha Christie"; 

Alternativamente, puede seleccionar todos los registros simultáneamente:

Mariadb [bookstoredb]> Seleccionar * de AuthorStbl; 
Seleccione y consulte el registro en MySQL
Mariadb [bookstoredb]> Seleccione * de AuthorStbl donde AHORNORNAME = "Agatha Christie"; +----------+-----------------+ | AutorID | AHORNORO | +----------+-----------------+| 1 | Agatha Christie | +----------+-----------------+1 fila en el set (0.00 seg) Mariadb [BookStoredb]> Seleccionar * de AuthorStbl; +----------+-----------------+ | AutorID | AHORNORO | +----------+-----------------+| 1 | Agatha Christie | | 2 | Stephen King | | 3 | Paulo Coelho | +----------+-----------------+3 filas en el set (0.00 seg) Mariadb [BookStoredb]> 
Seleccione y consulte una cadena en la base de datos MySQL

Ahora creemos el INSERTAR consulta para Bookstbl, Usando el correspondiente Autorid para que coincida con el autor de cada libro. Un valor de 1 en BookSavelable indica que el libro está en stock, 0 de lo contrario:

Mariadb [bookstoredb]> Insertar en BookStbl (BookName, AuthorId, BookPrice, BookIsaveable) Valores ('y luego no hubo ninguno', 1, 14.95, 1), ('El hombre en el traje marrón', 1, 23.99, 1), ('el stand', 2, 35.99, 1), ('Pet Sematary', 2, 17.95, 0), ('La milla verde', 2, 29.99, 1), ('El alquimista', 3, 25, 1), ('por el río Piedra me senté y lloré', 3, 18.95, 0); 
Insertar consulta en la tabla MySQL
Mariadb [bookstoredb]> Insertar en BookStbl (BookName, AuthorId, BookPrice, BookIsavelable) -> Valores ('y luego no hubo ninguno', 1, 14.95, 1), -> ('El hombre en el traje marrón', 1, 23.99, 1), -> ('el stand', 2, 35.99, 1), -> ('Pet Sematary', 2, 17.95, 0), -> ('The Green Mile', 2, 29.99, 1), -> ('El alquimista', 3, 25, 1), -> ('por el río Piedra me senté y lloré', 3, 18.95, 0); Consulta bien, 7 filas afectadas (0.03 Sec) Registros: 7 Duplicados: 0 Advertencias: 0 

En este punto haremos un SELECCIONAR Para ver los registros en Bookstbl. Entonces vamos ACTUALIZAR el precio de "El alquimista" por Paulo Coelho y SELECCIONAR Ese registro específico nuevamente.

Observe cómo el Booklastupdated el campo ahora muestra un valor diferente. Como explicamos anteriormente, un Marca de tiempo el campo muestra el valor cuando se insertó o se modificó el registro.

Mariadb [bookstoredb]> Seleccionar * de BookStbl; Mariadb [bookstoredb]> Actualizar bookstbl set bookPrice = 22.75 donde bookid = 6; Mariadb [bookstoredb]> Seleccione * de BookStbl Where BookID = 6; 
Insertar la tabla de consulta y actualizar en la base de datos MySQL
Mariadb [bookstoredb]> Seleccionar * de BookStbl; +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+ | Bookid | Nombre de libro | AutorID | BookPrice | Booklastupdated | BookSaveilable | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ | 1 | Y luego no había ninguno | 1 | 14.95 | 2016-10-01 23:31:41 | 1 | | 2 | El hombre con el traje marrón | 1 | 23.99 | 2016-10-01 23:31:41 | 1 | | 3 | El stand | 2 | 35.99 | 2016-10-01 23:31:41 | 1 | | 4 | Sematería de mascota | 2 | 17.95 | 2016-10-01 23:31:41 | 0 | | 5 | La milla verde | 2 | 29.99 | 2016-10-01 23:31:41 | 1 | | 6 | El alquimista | 3 | 25.00 | 2016-10-01 23:31:41 | 1 | | 7 | Por el río Piedra me senté y lloré | 3 | 18.95 | 2016-10-01 23:31:41 | 0 | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ 7 filas en el set (0.00 seg) Mariadb [BookStoredb]> Actualizar bookstbl set bookPrice = 22.75 donde bookid = 6; Consulta bien, 1 fila afectada (0.04 seg) Filas emparejadas: 1 Cambiado: 1 Advertencias: 0 Mariadb [BookStoredB]> Seleccione * de BookStbl Where BookID = 6; +--------+---------------+----------+-----------+---------------------+-----------------+ | Bookid | Nombre de libro | AutorID | BookPrice | Booklastupdated | BookSaveilable | +--------+---------------+----------+-----------+- --------------------+ -----------------+ | 6 | El alquimista | 3 | 22.75 | 2016-10-01 23:35:00 | 1 | +--------+---------------+----------+-----------+- --------------------+ -----------------+ 1 fila en el set (0.00 seg) Mariadb [BookStoredb]> 
Insertar y actualizar el registro de la tabla de la base de datos

Aunque no lo haremos aquí, también puede eliminar un registro si ya no se usa. Por ejemplo, supongamos que queremos eliminar "El alquimista" de Bookstbl.

Para hacerlo, usaremos el BORRAR Declaración de la siguiente manera:

Mariadb [bookstoredb]> Eliminar de BookStbl donde BookID = 6; 

Como en el caso de ACTUALIZAR, Es una buena idea hacer un SELECCIONAR Primero para ver los registros que potencialmente pueden verse afectados por el BORRAR.

Además, no olvides agregar el DÓNDE cláusula y condición (Bookid = 6) Para seleccionar el registro específico que se eliminará. De lo contrario, corre el riesgo de eliminar todas las filas de la tabla!

Si desea concatenar dos (o más) campos, puede usar el Concatismo declaración. Por ejemplo, supongamos que queremos devolver un conjunto de resultados que consiste en un campo con el nombre del libro y el autor en forma de "El alquimista (Paulo Coelho)"Y otra columna con el precio.

Esto requerirá un UNIRSE entre Autor y Bookstbl en el campo común compartido por ambas tablas (Autorid)

Mariadb [bookstoredb]> Seleccione Concat (BookStbl.BookName, '(', AuthorStbl.AHORNORNOME, ')') como descripción, bookstbl.BookPrice de AuthorStbl únete a BookStbl en AuthorStbl.AuthorID = BookStbl.Autorid; 

Como podemos ver, Concatismo nos permite unir múltiples expresiones de cadena separadas por comas. También notarás que elegimos el alias Descripción para representar el conjunto de resultados de la concatenación.

La salida de la consulta anterior se muestra en la imagen a continuación:

Consulta múltiples campos en la mesa mysql
Mariadb [bookstoredb]> Seleccione Concat (BookStbl.BookName, '(', AuthorStbl.AHORNORNOME, ')') como descripción, bookstbl.BookPrice de AuthorStbl únete a BookStbl en AuthorStbl.AuthorID = BookStbl.Autorid; +--------------------------------------------------------+-----------+ | Descripción | BookPrice | +------------------------------------------------- -------+ -----------+ | Y luego no había ninguno (Agatha Christie) | 14.95 | | El hombre del traje marrón (Agatha Christie) | 23.99 | | El stand (Stephen King) | 35.99 | | Pet Sematary (Stephen King) | 17.95 | | La milla verde (Stephen King) | 29.99 | | El alquimista (Paulo Coelho) | 25.00 | | Por el río Piedra me senté y lloré (Paulo Coelho) | 18.95 | +------------------------------------------------- -------+ -----------+ 7 filas en el set (0.00 seg) 
Consulta múltiples campos en la tabla de bases de datos

Crear usuario para acceder a la base de datos BookStoredB

Usando raíz Para realizar todo DML Las operaciones en una base de datos son una mala idea. Para evitar esto, podemos crear un nuevo Mariada cuenta de usuario (lo nombraremos bookstoreuser) y asigne todos los permisos necesarios para Bookstoredb:

Mariadb [bookstoredb]> Crear usuario [correo electrónico protegido] identificado por 'YourPasswordHere'; Mariadb [bookstoredb]> Otorgar todos los privilegios en BookStoredb.* a [correo electrónico protegido]; Mariadb [bookstoredb]> Privilegios de descarga; 
Crear un nuevo usuario de la base de datos con privilegios
Mariadb [bookstoredb]> Crear usuario [correo electrónico protegido] identificado por 'tecMint'; Consulta bien, 0 filas afectadas (0.00 seg) Mariadb [BookStoredb]> Otorgar todos los privilegios en BookStoredb.* a [correo electrónico protegido]; Consulta bien, 0 filas afectadas (0.00 seg) Mariadb [BookStoredb]> Privilegios de descarga; Consulta bien, 0 filas afectadas (0.00 seg) 

Tener un usuario dedicado y separado para cada base de datos evitará daños a toda la base de datos en caso de que una sola cuenta se ve comprometida.

Consejos adicionales de MySQL

Para aclarar el Mariada Solicitud, escriba el siguiente comando y presione Ingresar:

Mariadb [bookstoredb]> \! claro 

Para inspeccionar la configuración de una tabla determinada, haga:

Mariadb [bookstoredb]> Seleccione columnas en [Nombre de la tabla aquí]; 

Por ejemplo,

Mariadb [bookstoredb]> Mostrar columnas en Bookstbl; 
Lista de columnas en la tabla de bases de datos
Mariadb [bookstoredb]> Mostrar columnas en Bookstbl; +-----------------+--------------+------+-----+-------------------+-----------------------------+ | Campo | Tipo | NULL | Clave | Predeterminado | Extra | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ | Bookid | int (11) | No | PRI | NULL | auto_increment | | Nombre de libro | Varchar (100) | No | | NULL | | | AutorID | int (11) | No | MUL | NULL | | | BookPrice | decimal (6,2) | No | | NULL | | | Booklastupdated | marca de tiempo | No | | Actual_timestamp | En Update Current_Timestamp | | BookSaveilable | Tinyint (1) | SÍ | | NULL | | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ 6 filas en establecer (0.02 seg) 
Lista de columnas en la tabla de bases de datos

Una inspección rápida revela que el BookSavelable campo admite NULO valores. Como no queremos permitir que ALTERAR la tabla de la siguiente manera:

Mariadb [bookstoredb]> Alter table bookstbl modifica bookSavailable boolean no nulo; 

(Siéntase libre de mostrar las columnas nuevamente: el resaltado En la imagen de arriba debería ser un NO).

Finalmente, para ver todas las bases de datos en su servidor, haga:

Mariadb [bookstoredb]> Mostrar bases de datos; O Mariadb [bookstoredb]> Mostrar esquemas; 
Enumere todas las bases de datos MySQL
[[correo electrónico protegido] ~]# mysql -u bookstoreUser -p Ingrese la contraseña: bienvenido al monitor Mariadb. Los comandos terminan con; o \ g. Su ID de conexión de Mariadb es la versión del servidor de 3: 10.1.14-mariadb mariadb servidor copyright (c) 2000, 2016, Oracle, Mariadb Corporation AB y otros. Escriba 'ayuda;' o '\ h' por ayuda. Escriba '\ c' para borrar la instrucción de entrada actual. Mariadb [bookstoredb]> Mostrar bases de datos; +--------------------+ | Base de datos | + --------------------+ | BookStoredB | | Information_schema | + --------------------+ 2 filas en el set (0.00 seg) Mariadb [BookStoredb]> Mostrar esquemas; +--------------------+ | Base de datos | + --------------------+ | BookStoredB | | Information_schema | + --------------------+ 2 filas en el set (0.00 seg) 

La siguiente imagen muestra el resultado del comando de arriba después de acceder a la solicitud de mariadb como el bookstoreuser (Tenga en cuenta cómo esta cuenta no puede "ver" ninguna base de datos que no sea Bookstoredb y información_schema (disponible para todos los usuarios):

Enumere todas las bases de datos MySQL

Resumen

En este artículo hemos explicado cómo ejecutar DML Operaciones y cómo crear una base de datos, tablas y usuarios dedicados en una base de datos MariadB. Además, compartimos algunos consejos que pueden facilitar su vida como administrador del sistema / base de datos.

  1. Parte de administración de la base de datos MySQL - 1
  2. Parte de administración de la base de datos MySQL - 2
  3. MySQL Performance Tunning and Optimization - Parte 3

Si tiene alguna pregunta sobre este artículo, no dude en hacernos saber! Siéntase libre de usar el formulario de comentarios a continuación para comunicarse con nosotros.