## **** WARNING: edit the sql.html file at your own risk ****
## modified: 04/2022
## owner: public:public
## version: 0.1
Este lenguaje es ocupado para administrar y gestionar operaciones en las bases de datos, no es un lenguaje para crear programas.
El gestionar bases de datos es un servicio altamente demandado en los mercados, por ende es un servicio bien pagado y valorado.
## Introducción de sintaxis.
La sintaxis de sql nos permite:
- Mostrar, Actualizar y Eliminar DATOS.
- Crear y Eliminar TABLAS Y BASES DE DATOS.
- Agregar, Eliminar y Asignar permisos a USUARIOS.
## Instalando paquetes y fuentes.
Para este escenario usaremos la consola, aprenderemos los diferentes métodos, pero antes debemos instalar nuestras herramientas.
mariadb-client-10.5 es un cliente para gestionar bases de datos hecho por MariaDB project.
default-mysql-client es un cliente para gestionar bases de datos hechos por MySQL.
Cualquiera de estos dos paquetes nos ayudarán a ejecutar operaciones en nuestra base de datos.
## Autenticación e interacción con una base de datos relacionales.
La herramienta "mysql", escrita como tal en la terminal nos permitirá realizar algunos ejemplos.
$ mysql -u usuario
$ mysql -p contraseña (es muy recomendable escribir -p en el último parámetro, y nunca escribir la contraseña ya que con un simple history podremos leerla facilmente.)
$ mysql -h host
$ mysql -P puerto
Ahora entraremos a una base de datos con las credenciales que escribimos al instalar mariadb-server o mysql-server.
$ mysql -u root -p
Enter password:
Ahora nuestra terminal cambiará de intérprete y nos saldrá algo así:
mysql>
## Creando bases de datos.
mysql> CREATE DATABASE db_one;
mysql> SHOW DATABASES;
mysql> USE db_one;
Recuerda que las CONSULTAS deben terminar en ";" y las mayúsculas y minúsculas equivale a lo mismo.
## Usuarios y privilegios.
Al momento de manipular la base de datos debes asegurarte con hacerlo con un usuario controlado, exigiendo privilegios.
db_one> CREATE USER my_user@localhost IDENTIFIED BY 'secret_password123';
db_one> GRANT USAGE ON *.* TO my_user@localhost IDENTIFIED BY 'secret_password123';
NOTA: el asterisco significa todas las bases de datos y todas las tablas. Un ejemplo seguro sería: grant usage on db_one@my_table to my_user@localhost identified by secret_password123;
db_one> grant all privileges on db_one.my_table to my_user@localhost;
NOTA: Puedes apoyarte con el comando show privileges; para saber más.
Ahora debemos aplicar los cambios.
db_one> FLUSH PRIVILEGES;
Si deseas verificar los permisos correctos debes escribir:
db_one> SHOW GRANTS FOR my_user@localhost;
## Creando tablas.
Las tablas se componen de filas y columnas, cada columna almacena un tipo de dato particular.
Los datos son almacenados por tipos, ejemeplo: números, fechas, cadenas de textos, datos binarios, entre otros.
Un ejemplo es:
db_one> CREATE TABLE registro (id INT, nombre VARCHAR(100), cargo VARCHAR(100), fecha_ingreso DATETIME);
Resumiendo, la consulta fue crear la tabla llamada "registro_usuario" en donde aloja cuatro columna de datos, 'id' que almacena un número entero, 'nombre' y 'cargo' que almacena cadenas de texto de hasta 100 carácteres y 'fecha_ingreso' que almacena la fecha en que se agregó la entrada.
db_one> SHOW TABLES;
db_one> DESCRIBE registro;
Estas consultas nos ayudarán a obtener información de nuestras tablas o una en específico.
## Insertando datos.
Con la declaración INSERT podremos agregar nuevos registros en nuestra tabla utilizando la siguiente sintaxis:
db_one> INSERT INTO table VALUES ('column1', 'column2', 'column3', ...);
NOTA: Recuerda que las cadenas de texto deben usar comillas.
En caso que queramos registrar datos en nuestra columna registro, debemos seguir la siguiente sintaxis:
db_one> INSERT INTO registro(id, nombre, cargo, fecha_ingreso) VALUES (3, 'nombre2', 'cargo2', '22-11-22');
NOTA: Recuerda que las columnas NOT NULL no pueden ir vacias como su definición lo indica.
## Mostrando datos.
Con la instrucción SELECT podemos mostrar los datos insertados en nuestras tablas, para eso debemos seguir la siguiente sintaxis:
db_one> SELECT columna1, columna2, columna3 FROM table_name;
NOTA: las instrucciones sql NO diferencia las mayúsculas ni minúsculas, pero los datos SI.
Ahora seguiremos con el ejemplo anterior de nuestra tabla "laptop" de la siguiente manera:
db_one> SELECT nombre, cargo, fecha_ingreso FROM registro;
NOTA: puedes usar * para seleccionar todos los datos dentro de la tabla (select * from table_name;).
## Eliminar datos.
Debemos usar con precaución la siguiente instrucción:
db_one> DROP TABLE otra_tabla;
db_one> SHOW TABLES;
Entonces la tabla "otra_tabla" ha sido eliminada sin confirmación.
## Cambiando tablas y datos.
Agregar una nueva columna en nuestra tabla "registro" con la siguiente instrucción:
db_one> ALTER TABLE registro ADD fecha_salida VARCHAR(20);
Renombrar nuestra columna "cargo" con RENAME COLUMN de la siguiente manera:
db_one> ALTER TABLE registro RENAME COLUMN responsable TO cargo;
Cambiar nuestro tipo de datos con MODIFY:
db_one> ALTER TABLE registro MODIFY fecha_salida DATETIME;
Eliminar nuestra columna con DROP así:
db_one> ALTER TABLE registro DROP fecha_salida;
## Actualizando datos.
Esta instrucción nos permite actualizar un dato que ya existe en la tabla, su sintaxis general es así:
db_one> UPDATE table_name SET column1=value1, column2=value2, column3=value3, ...;
Ahora modificaremos nuestra tabla registro agregando condiciones:
db_one> UPDATE registro SET nombre='admin_supremo' WHERE id=1;
db_one> SELECT nombre FROM registro WHERE id=1;
Se debe agregar la condición WHERE para especificar el campo que se desea actualizar.
## Resultados de las consultas.
Odenar los resultados con ORDER BY:
db_one> SELECT * FROM registro ORDER BY id;
db_one> SELECT * FROM registro ORDER BY nombre DESC, id ASC;
Limitar los resultados con LIMIT:
db_one> SELECT * FROM registro LIMIT 2;
NOTA: el desplazamiento comienza desde el 0, siendo el primer registro de nuestra tabla "registro":